熊猫散点图:如何在辅助 y 轴上绘制数据?

Ian*_*ole 3 python matplotlib pandas

我想将两个散点图放在同一个图上,其中 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))
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

次要_y_失败

它似乎忽略了该secondary_y=True命令,只是在原始 y 轴上绘图,这不是很有用。只是为了在我的伤口上撒更多盐,它还去除了迷人的白色网格线......

如果有人能够对此提供帮助,将不胜感激。

Pab*_*Mur 5

这似乎是 Pandas 代码的一个问题(错误?)。已经在他们的 GitHub 页面中报告了这一点。从他们在那里给出的解释来看,发生的事情是该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);
Run Code Online (Sandbox Code Playgroud)