为什么Pandas反转我的x轴顺序?

时间:2018-06-09 00:59:40

标签: pandas matplotlib plot scatter

当我正在相互绘制两个系列的数据时,X轴意外反转。我知道这个问题听起来与其他问题非常相似:x-axis inverted unexpectedly by pandas.plot(...)实际上是这样,但我想知道这是否可以被禁用或其他什么,而不是解决方法。让我解释一下自己。

我有一个非常简单的DF,它包含一个日期时间索引和两列;一个有湿度测量和其他每日重量。它们都是降序排列,因为当我的样品失水时,它也会失去重量和湿度。所以我的DF看起来像这样,我的数据按降序排列

DF - my data is in descending order

但是,当我使用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轴反转

First plot - X axis inverted

所以,我可以做两种简单的解决方法:

plt.scatter(sorted(data['Peso']),data['Humedad']) 

plt.scatter(data['Peso'][::-1],data['Humedad'])

他们两个都有相同的结果,他们打印我想要的数据,但我的xticks仍然倒置了:

Inverted xticks

所以我所做的就是创建一个包含我的权重值的列表,以便按照以下方式插入它:

semin=data['Peso']
semin=semin.tolist()

然后将它添加到我的plt.xticks中,就像这样

plt.xticks(semin,rotation=90,fontsize=10)

它“好心”工作,覆盖了一些xticks,如下图所示:

More xticks problems

我知道我可以通过[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() 

它几乎完美,除了我需要分散......

Almost there

所以我尝试了一些东西“分散它”

1。放置标记类型:

data.set_index('Peso').Humedad.plot(marker='o')

有标记+折线图:

Marker 'o'

2. 将.scatter的.plot更改为剧情:

data.set_index('Peso').Humedad.scatter()

出现此错误:

  

AttributeError:'Series'对象没有属性'scatter'

3. 同时使用

data.set_index('Peso').Humedad.plot.scatter()

得到这个:

  

AttributeError:'SeriesPlotMethods'对象没有属性'scatter'

4. 提出这个巨大的问题。请帮忙。

就是这样,抱歉,如果我遗失了某些内容,或者我的帖子太长了。我愿意接受建议,更正或任何你愿意告诉我的事情。

谢谢!

1 个答案:

答案 0 :(得分:2)

哦,我刚看到linked question确实完全符合你的需要。将此保留为此处。但请改为参考链接的问题。

这不是改变蜱虫的解决方案!结果情节可能很容易完全错误。

而是google for"反转x轴"或者发现你可以通过

反转轴
ax = df.plot(...)
ax.invert_xaxis()

这不是一种解决方法。 解决方案。 (它能容易多少?)