【发布时间】:2015-04-28 01:44:09
【问题描述】:
在使用 pandas 绘制一系列数据与另一系列数据时,X 轴意外地自动反转。请看我下面的代码。如何确保 x 轴始终指向右侧? x 轴的这种自动反转是熊猫的预期行为吗?可以禁用吗?
让我在下面解释我的示例。创建了三个图。我希望每一个都显示出向右上升近 45 度的线。然而,其中一些有 45 度线向右下降,因为它的 x 轴是自动反转的。似乎 x 轴是否反转取决于要绘制的值。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df2 = pd.DataFrame(np.random.randn(10, 3), columns=["a", "b", "c"])
df3 = df2*1.1
df3.rename(columns={"a": "a*1.1", "b": "b*1.1", "c": "c*1.1"}, inplace=True)
df23 = df2.join(df3)
fig, ax_list = plt.subplots(1,3)
ax=ax_list[0]
df23[["a", "a*1.1"]].plot(ax=ax, x="a")
ax.axis('equal')
ax.set_title("(x,y)=(a,a*1.1)")
print ax.get_xlim() ## Added for clarity
ax=ax_list[1]
df23[["b", "b*1.1"]].plot(ax=ax, x="b")
ax.axis('equal')
ax.set_title("(x,y)=(b,b*1.1)")
print ax.get_xlim() ## Added for clarity
ax=ax_list[2]
df23[["c", "c*1.1"]].plot(ax=ax, x="c")
ax.axis('equal')
ax.set_title("(x,y)=(c,c*1.1)")
print ax.get_xlim() ## Added for clarity
【问题讨论】:
-
我遇到了类似的问题。尝试对你的地块进行排序。例如df23[["a", "a*1.1"]].sort("a").plot(ax=ax, x="a")
-
感谢您的评论。我尝试排序。但是,如果它是一个多值函数,排序会改变曲线的形状。所以我想知道一种禁用x轴反转的方法。
-
你试过在 x 轴上使用
set_xticklabels吗? -
这与标签无关。为了澄清这一点,我在示例代码中添加了
ax.get_xlim()。您应该看到 x 轴范围的左侧值大于右侧值。 -
这里有一个类似的问题 - stackoverflow.com/questions/14770218/…
标签: python pandas matplotlib