我的数据是整齐的('长形式')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()