【发布时间】:2020-06-17 04:30:29
【问题描述】:
我正在使用 pandas 数据框来保存一些体积计算结果,并尝试配置 seaborn FacetGrid 设置来可视化储层区 4 种不同类型的体积计算结果。
我相信我可以处理数据框部分,我的问题在于可视化部分: 每种不同类型的体积计算都作为一个系列加载到数据框中。系列名称对应于体积计算的类型。然后我想创建一些图,对齐以便每列图对应于我的数据框中的一个系列。
理论(文档)说应该这样做(来自https://seaborn.pydata.org/tutorial/axis_grids.html)的教程示例:
import seaborn as sns
import matpltlib.pyplot as plt
tips = sns.load_dataset("tips")
g=sns.FacetGrid(tips, col = "time")
我找不到要下载的引用数据集“提示”,但我认为这是一个小问题。从上面的代码 sn-p 和对我自己的数据进行一些测试后,我推断该数据集中的“时间”是指数据框中 一个系列的名称,不同的时间会有所不同该系列中的类别或其他类型的值。
这不是我的数据集的排序方式。我有不同类型的体积计算,我会在我的数据框中看到作为系列的单个图(在列中)。如何提供系列名称作为 seaborn FacetGrid col= 参数的输入?
g = seaborn.FacetGrid(data=volumes_table, col=?????)
我不知道如何获得 col=dataframe.series,也找不到任何记录在案的示例。
这里有一些令人兴奋的虚拟名称和虚拟值的设置
import os
import pandas
import numpy
import seaborn
import matplotlib.pyplot as plt
#provide some input data, using a small dictionary
volumes_categories = {'zone_numbers': [1, 2, 3, 4],
'zone_names': ['corona', 'hiv', 'h5n1', 'measles'],
'grv': [30, 90, 80, 100],
'nv': [20, 60, 20, 50],
'pv': [5, 12, 4, 25],
'hcpv': [4, 6, 1, 20]}
# create the dataframe
volumes_table = pandas.DataFrame(volumes_categories)
# set up for plotting
seaborn.set(style='ticks')
g= seaborn.FacetGrid(data=volumes_table, col='zone_names')
上述设置可以生成列,但我无法让这些列代表我的数据框中的系列(将数据框可视化为表格时的列......)
我需要做什么?
【问题讨论】:
-
IIUC,首先尝试将您的数据重组为长格式 - 查看melt。比如
volumes_table.melt(id_vars=['zone_numbers', 'zone_names']),然后是g= seaborn.FacetGrid(data=volumes_table, col='variable')
标签: python pandas plot seaborn facet-grid