为什么 Pandas 反转我的 x 轴顺序?
Why is Pandas inverting my x-axis order?
当我绘制两个数据系列的对比图时,X 轴意外反转。我知道这个问题听起来与另一个问题非常相似: 实际上是这样,但我想知道是否可以禁用此问题或其他问题,而不是解决方法。让我自己解释一下。
我有一个非常简单的 DF,它包含一个日期时间索引和两列;一个有湿度测量值,另一个有每日体重。它们都按降序排列,因为当我的样品失水时,它也会失去重量和湿度。所以我的 DF 看起来像这样,我的数据按降序排列
但是,当我使用 X = "Peso"(重量)和 Y = 'Humedad'(湿度)进行绘图时,我的 X 轴按升序而不是降序排列。
我的绘图代码:
plt.figure(figsize=(12,9))
plt.scatter(data['Peso'],data['Humedad'])
plt.xlabel('Peso (kg)',fontsize=14)
plt.ylabel("Raw Counts",fontsize=14)
plt.xticks(rotation=90,fontsize=10)
plt.grid()
导致这种情节,其中 X 轴反转
所以,我可以做两种简单的解决方法:
plt.scatter(sorted(data['Peso']),data['Humedad'])
或
plt.scatter(data['Peso'][::-1],data['Humedad'])
它们的结果相同,它们打印了我想要的数据,但我的 xticks 仍然是倒置的:
所以我所做的是创建一个包含我的权重值的列表,以便按如下方式插入它:
semin=data['Peso']
semin=semin.tolist()
然后像这样将它添加到我的 plt.xticks
plt.xticks(semin,rotation=90,fontsize=10)
它 "kind off" 有效,重叠了一些 xticks,如下图所示:
我知道我可以用 [Locs] 和一般 xticks 信息解决这个问题,但我真的很想知道 是否可以只要求 Pandas 遵循自然数据降序或任何类似的东西并避免所有这些 xticks 东西?
我也检查过这个:https://github.com/pandas-dev/pandas/issues/10118
我尝试了 set_index 建议:
plt.figure(figsize=(12,9))
data.set_index('Peso').Humedad.plot()
plt.xlabel('Peso (kg)',fontsize=14)
plt.ylabel("Raw Counts",fontsize=14)
plt.xticks(rotation=90,fontsize=10)
plt.grid()
它几乎完美,除了我需要分散它...
所以我尝试了一些东西 "scatter it"
1. 放置标记类型:
data.set_index('Peso').Humedad.plot(marker='o')
得到一个标记+折线图:
2. 将 .scatter 的 .plot 更改为绘图:
data.set_index('Peso').Humedad.scatter()
遇到这个错误:
AttributeError: 'Series' object has no attribute 'scatter'
3. 同时使用
data.set_index('Peso').Humedad.plot.scatter()
得到这个:
AttributeError: 'SeriesPlotMethods' object has no attribute 'scatter'
4. 做这个大问题。请帮忙。
就这些了,抱歉,如果我遗漏了什么或者我的 post 太长了。我愿意接受建议、更正或任何你愿意告诉我的事情。
谢谢!
哦,我刚刚看到 实际上可以满足您的需求。将把它留在这里。但请改为参考链接的问题。
更改刻度不是解决方案!由此产生的情节很容易完全错误。
代替 google 大约 "invert x axis",发现您可以通过
反转轴
ax = df.plot(...)
ax.invert_xaxis()
这不是解决方法。它是解决方案。 (它能变得多容易?)
当我绘制两个数据系列的对比图时,X 轴意外反转。我知道这个问题听起来与另一个问题非常相似:
我有一个非常简单的 DF,它包含一个日期时间索引和两列;一个有湿度测量值,另一个有每日体重。它们都按降序排列,因为当我的样品失水时,它也会失去重量和湿度。所以我的 DF 看起来像这样,我的数据按降序排列
但是,当我使用 X = "Peso"(重量)和 Y = 'Humedad'(湿度)进行绘图时,我的 X 轴按升序而不是降序排列。
我的绘图代码:
plt.figure(figsize=(12,9))
plt.scatter(data['Peso'],data['Humedad'])
plt.xlabel('Peso (kg)',fontsize=14)
plt.ylabel("Raw Counts",fontsize=14)
plt.xticks(rotation=90,fontsize=10)
plt.grid()
导致这种情节,其中 X 轴反转
所以,我可以做两种简单的解决方法:
plt.scatter(sorted(data['Peso']),data['Humedad'])
或
plt.scatter(data['Peso'][::-1],data['Humedad'])
它们的结果相同,它们打印了我想要的数据,但我的 xticks 仍然是倒置的:
所以我所做的是创建一个包含我的权重值的列表,以便按如下方式插入它:
semin=data['Peso']
semin=semin.tolist()
然后像这样将它添加到我的 plt.xticks
plt.xticks(semin,rotation=90,fontsize=10)
它 "kind off" 有效,重叠了一些 xticks,如下图所示:
我知道我可以用 [Locs] 和一般 xticks 信息解决这个问题,但我真的很想知道 是否可以只要求 Pandas 遵循自然数据降序或任何类似的东西并避免所有这些 xticks 东西?
我也检查过这个:https://github.com/pandas-dev/pandas/issues/10118 我尝试了 set_index 建议:
plt.figure(figsize=(12,9))
data.set_index('Peso').Humedad.plot()
plt.xlabel('Peso (kg)',fontsize=14)
plt.ylabel("Raw Counts",fontsize=14)
plt.xticks(rotation=90,fontsize=10)
plt.grid()
它几乎完美,除了我需要分散它...
所以我尝试了一些东西 "scatter it"
1. 放置标记类型:
data.set_index('Peso').Humedad.plot(marker='o')
得到一个标记+折线图:
2. 将 .scatter 的 .plot 更改为绘图:
data.set_index('Peso').Humedad.scatter()
遇到这个错误:
AttributeError: 'Series' object has no attribute 'scatter'
3. 同时使用
data.set_index('Peso').Humedad.plot.scatter()
得到这个:
AttributeError: 'SeriesPlotMethods' object has no attribute 'scatter'
4. 做这个大问题。请帮忙。
就这些了,抱歉,如果我遗漏了什么或者我的 post 太长了。我愿意接受建议、更正或任何你愿意告诉我的事情。
谢谢!
哦,我刚刚看到
更改刻度不是解决方案!由此产生的情节很容易完全错误。
代替 google 大约 "invert x axis",发现您可以通过
反转轴ax = df.plot(...)
ax.invert_xaxis()
这不是解决方法。它是解决方案。 (它能变得多容易?)