使用pandas DataFrame绘制箱线图上的折线

5

我有一个pandas DataFrame,有16列对应着年份(2000到2015),有12行每个月的数值。

我尝试在同一张图中绘制箱线图和一条2015年数值的折线图以进行比较,使用以下代码:

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('hidro_ne.xlsx')
fig, ax = plt.subplots()
ax1 = df[2015].plot(ax=ax, linewidth=2, legend='2015',color='red')
df.T.plot.box(yticks=range(0, 100, 5), ax=ax1)
plt.show()

在2015年的列中,我有从一月到九月的数据,但是我得到了一个从yline到九月的移位线图:

enter image description here

实际上,这条线应该从“Jan”开始,一直延伸到“set”,而不是在“ago”结束:

>>> df[2015]
Jan    16.41
Fev    18.34
Mar    23.52
Abr    27.40
Mai    26.96
Jun    25.34
Jul    22.49
Ago    18.38
Set    13.87
Out      NaN
Nov      NaN
Dez      NaN

我正在使用Python 3.4.3和pandas 1.7.0在Windows 8.1上运行脚本。

请问我该如何解决这个问题?


如果你没有数据,你希望这些月份的线显示什么值?鉴于输入数据,图表正显示出它应该显示的内容。 - vmg
2
df.plot从0开始标记,而boxplot从1开始(我认为这很烦人,特别是当索引相同时)。尝试使用ax.plot(list(range(1,13)), df[2015].values)来绘制线图。 - pbreach
vmg,我没有“Out”、“Nov”和“Dez”的值,但我有“Set”的值,它没有显示在图表上。实际上,它被移位了。 - Hugo Salvador
1个回答

4
非常感谢您,pbreach。
这对我很有效。
我做了以下事情:
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel('hidro_ne.xlsx')

fig, ax = plt.subplots()
ax.plot(list(range(1,13)), df[2015].values, 'r', linewidth=2)
ax.legend(['2015'])
df.T.plot.box(yticks=range(0, 105, 5), ax=ax)

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接