1

我正在尝试使用 绘制 3 个系列,左侧 y 轴上有 2,右侧使用 1 secondary_y,但我不清楚如何定义右侧 y 轴刻度,就像我在左侧使用ylim=().

我看过这篇文章:直接与轴交互

......但一旦我有:

import matplotlib.pyplot as plt

df = pd.DataFrame(np.random.randn(10,3))

fig, ax1 = plt.subplots()

ax2 = ax1.twinx()
ax1.plot(df.index,df.iloc[:,[0,2]])
ax2.plot(df.index, df.iloc[:,2])

plt.show()根本不产生任何东西。我在用:

  • 蜘蛛2.3.5.2
  • 蟒蛇:3.4.3.final.0
  • 蟒蛇位:64
  • 操作系统:Windows
  • 操作系统版本:7
  • 熊猫:0.16.2
  • 麻木:1.9.2
  • scipy:0.15.1
  • matplotlib:1.4.3

我得到的结果

我发现这些链接很有帮助:

tcaswell,直接使用轴

matplotlib.axes 文档

4

3 回答 3

1

您需要set_ylim在适当的斧头上使用。

例如:

ax2 = ax1.twinx()
ax2.set_ylim(bottom=-10, top=10)

此外,查看您的代码,您似乎iloc错误地指定了您的列。尝试:

ax1.plot(df.index, df.iloc[:, :2])  # Columns 0 and 1.
ax2.plot(df.index, df.iloc[:, 2])   # Column 2.
于 2015-11-30T19:50:34.850 回答
0
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(10,3))
print (df)
fig, ax1 = plt.subplots()

ax2 = ax1.twinx()
ax1.plot(df.index,df.iloc[:,[0,2]])
ax2.plot(df.index, df.iloc[:,2])

plt.show()
于 2015-11-30T19:43:34.690 回答
0

您可以在不直接调用 ax.twinx() 的情况下执行此操作:

#Plot the first series on the LH y-axis
ax1 = df.plot('x_column','y1_column')

#Add the second series plot, and grab the RH axis
ax2 = df.plot('x_column','y2_column',ax=ax1)
ax2.set_ylim(0,10)

注意:仅在 Pandas 19.2 中测试

于 2017-10-14T13:02:27.817 回答