pandas scatterplots:如何在辅助y轴上绘制数据?

时间:2016-01-28 13:41:35

标签: python pandas matplotlib

我想在共享x轴但是y轴不同的同一图表上放置两个散点图。我无法解决如何到达那里。要创建我正在做的第一个散点图:

ax=df.plot(kind='scatter', x='vf', y='hf_ratio', xlim=[2e-06,6e-06], ylim=[1,10],
        color='DarkBlue', s=40, label='a') 
ax.ticklabel_format(axis='x', style='sci', scilimits=(0,0))

simple_scatterplot

现在我想在右手y轴上添加第二个。 Pandas文档提供了在线图(secondary_y=True)中添加辅助轴的信息,所以我尝试了这个但它似乎不起作用:

df.plot(kind='scatter', x='vf', y='hfall', secondary_y=True,
        color='Red', s=40, label='hfall', ax=ax);

secondary_y_fail

它似乎忽略了secondary_y=True命令,只是在原始y轴上绘图,这不是很有用。只是为了在我的伤口上再加盐,它也会去除有吸引力的白色网格......

如果有人能够提供帮助,我们将非常感激。

1 个答案:

答案 0 :(得分:3)

这似乎是一个问题(bug?)与Pandas代码。它已在他们的GitHub页面here中报告。根据他们给出的解释,发生的事情是secondary_y关键字仅适用于线图,而不适用于您在此处尝试的散点图。

链接中建议的解决方法是使用折线图,但将样式更改为点(不确定这是否足以满足您的需要)。在你的情况下,这将是:

ax=df.plot(kind='line', x='vf', y='hf_ratio', xlim=[2e-06,6e-06],
    ylim=[1,10], color='DarkBlue', style='.', markersize=5, label='a')

df.plot(kind='line', x='vf', y='hfall', secondary_y=True,
    color='Red', style='.', markersize=5, label='hfall', ax=ax);
相关问题