【问题标题】:plot line over boxplot using pandas DataFrame使用 pandas DataFrame 在箱线图上绘制线
【发布时间】:2019-12-11 00:05:18
【问题描述】:

我有一个 pandas 数据框,它有 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 年的专栏中,我有从 1 月到 9 月的数据,但我得到了一个从 yline 到 9 月的移位线图:

事实上,该行应该从“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

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

我该如何解决?

【问题讨论】:

  • 如果您没有数据,您希望该行在这几个月中显示什么值?鉴于输入数据,该图准确地显示了它应该显示的内容
  • 我认为 df.plot 从 0 开始标记,在 1 开始箱线图(这很烦人,尤其是当索引相同时)。尝试使用ax.plot(list(range(1,13)), df[2015].values) 代替线图。
  • vmg,我没有“Out”、“Nov”和“Dez”的值,但我有“Set”的值,它没有显示在情节上。事实上它已经转移了。

标签: python pandas boxplot


【解决方案1】:

非常感谢,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)

【讨论】:

    猜你喜欢
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    相关资源
    最近更新 更多