【问题标题】:Plot 2 lines with secondary axis but don't show the first column of data用辅助轴绘制 2 条线,但不显示第一列数据
【发布时间】:2019-05-04 18:44:54
【问题描述】:

我正在尝试创建一个图表,显示 2 列数据('Area' 和 'Vol')如何对应于第一列('Elev')。在 Excel 中,数据和结果图表如下所示:

这是我尝试使用 Pandas 数据框执行此操作的方法:

import pandas as pd

e = [0.0, 1.0, 2.0, 3.0, 4.0]
a = [0.0, 300.0, 375.0, 400.0, 415.0]
v = [0.0, 150.0, 487.5, 875.0, 1282.5]

geometry = pd.DataFrame(list(zip(e, a, v, )), columns=['Elev', 'Area', 'Vol'])
ax = geometry.plot(secondary_y=['Vol'])
ax.set_ylabel('Area')
ax.right_ax.set_ylabel('Vol')

当我执行上面的代码时,我得到了这个:

我不想显示“Elev”线,因为这是在 x 轴上表示的自变量。如何在不显示“Elev”线的情况下显示此图?

在尝试解决此问题时,我找到了以下解决方案:

ax.lines[0].remove()

但这似乎只删除了该行而不是图例中的项目。有没有更好的解决方案?

【问题讨论】:

    标签: python pandas matplotlib


    【解决方案1】:

    我想这就是你要找的东西:

    from matplotlib import style
    style.use('ggplot')
    %matplotlib inline
    
    e = [0.0, 1.0, 2.0, 3.0, 4.0]
    a = [0.0, 300.0, 375.0, 400.0, 415.0]
    v = [0.0, 150.0, 487.5, 875.0, 1282.5]
    
    geometry = pd.DataFrame(list(zip(e, a, v, )), columns=['Elev', 'Area', 'Vol'])
    # only plot area and vol
    ax = geometry[['Area', 'Vol']].plot(secondary_y=['Vol'])
    ax.set_ylabel('Area')
    ax.right_ax.set_ylabel('Vol')
    # set xticks to elev
    ax.set_xticks(geometry['Elev'])
    

    【讨论】:

    • 是的,这正是我所需要的。谢谢!
    猜你喜欢
    • 2021-01-08
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多