【问题标题】:adding secondry y-axis in python line plot [duplicate]在python线图中添加第二个y轴[重复]
【发布时间】:2019-06-27 17:39:26
【问题描述】:

我想添加辅助 y 轴。我的 CSV 数据包含三列日期、lscc 和 cc。我想将 LSCC 添加为第一个 y 轴,将 CC 添加为第二个。到目前为止我已经这样做了

df=pd.read_csv("E29Lsccvalue.csv", index_col='Date' )
plt.ylabel("")
plt.xlabel("Low level Similarity Class Cohesion (LSCC) Evolution")
df.plot(kind="line", marker='o',legend=None)
plt.xticks(rotation=90)
plt.show()

谢谢

【问题讨论】:

  • 尝试阅读重复问题中的答案。

标签: python matplotlib


【解决方案1】:

虽然没有提供可重现的日期,但我想你可以通过这样做来达到预期的效果:

ax = df.plot(secondary_y='CC')

最终添加您所有的 ax 自定义要求

编辑:虚线自定义

假设您需要在 x 轴上的某个位置(在本例中,在您的 pandas 索引的位置 2 处)有一条垂直虚线,请使用 axvline':' 作为线条样式(点)

ax = a.plot(secondary_y='Price')
ax.axvline(a.index.values[2], linestyle=':')

【讨论】:

  • 嘿,非常感谢。还有一个问题,如何在特定日期添加虚线?
  • 我编辑了我的答案
  • 嘿,谢谢,我已经尝试了虚线的解决方案,但问题是我的 x 轴是日期,而 axvline 不接受日期值
  • axvline 接受一个位置,而不是一个值!
  • 但它不接受即时指定的位置。我这样做 import matplotlib.pyplot as plt df=pd.read_csv("E29Lsccvalue.csv") axes1 =df.plot(kind="line", marker="o", legend=None,secondary_y='CC' ,figsize=(6,6),rot=90) plt.xlabel("Date") plt.ylabel("Low level Similarity Class Cohesion (LSCC)") axes1.set_ylabel("Class Cohesion(CC)") line= df.iloc[20][0] print(line) axes1.axvline(line, linestyle=':', color='r') plt.show()
【解决方案2】:

在 matplotlib 中,当我想利用我创建的现有 X 轴时,我使用了 twinx(),但在顶部使用不同的 Y 轴绘制更多数据。在您的情况下,df 作为第一个绘图对象:

axCC = df.twinx() # second axis sharing the same X axis of the original

然后您可以通过调用包括绘图、标签和其他引用该轴的参数,例如:

axCC.set_ylabel("ExampleLabel",color="tab:red")
axCC.plot(xData,yData,color="blue")

等等等等

here 显示了一个具有更多细节的完整功能示例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    相关资源
    最近更新 更多