多个线条样式与seaborn.facetgrid

时间:2015-09-30 16:12:55

标签: python pandas matplotlib seaborn

我的数据是整齐的('长形式')pandas.DataFrame看起来像这样(缩短):

    dataset  limit type_long type  distance  count  frequency
0       pos     -1      DR-3   DR        -3     17   0.005866
1       pos     -1      DR-2   DR        -2     70   0.024155
2       pos     -1      DR-1   DR        -1    124   0.04278
...     ...     ...     ...    ...       ...   ...    ...
810     neg    -10       DR9   DR         9    435   0.033565
811     neg    -10      DR10   DR        10    432   0.033333
812     neg    -10      IR-3   IR        -3    260   0.02006

我几乎设法按照我的意图来表示数据:

每个'类型' 1个子图。 x和y是距离'和'频率'分别将“pos”与“pos”分开。并且' neg'数据集使用连续和虚线。 我的代码在这里:

grid = sns.FacetGrid(df, col = 'type', hue= 'limit', legend_out = True) 
grid.map(sns.pointplot, 'distance', 'frequency', 'dataset', linestyles = ['-', ':'], markers=['','']).set_titles('{col_name}')
grid.add_legend()
plt.show()

这给出了相当难看的输出:' pos'数据集显得透明,传说消失(我无法发布图片,抱歉)

在这种情况下,我不了解点图的奇怪行为。有没有办法纠正透明度?或者可能是创造这个数字的更好方法。

对于图例,我猜这是两个色调定义之间的冲突。有没有办法显示带有限制颜色和数据集线条样式的双重图例?

我用seaborn数据集制作了一个最小的工作示例,图表很糟糕,但它很好地显示了问题:

import seaborn as sns

titanic = sns.load_dataset('titanic')
sns.set(style="ticks")
grid = sns.FacetGrid(titanic, col = 'class', hue= 'embark_town', legend_out = True) 
grid.map(sns.pointplot, 'fare', 'age', 'sex', linestyles = ['-', ':'], markers=['',''])
grid.add_legend() 

0 个答案:

没有答案