gpt4 book ai didi

python - Matplotlib fill_between 不适用于 plot_date,还有其他选择吗?

转载 作者:太空狗 更新时间:2023-10-29 18:19:58 26 4
gpt4 key购买 nike

我想像这样创建一个情节: This has integer x values

代码:

P.fill_between(DF.start.index, DF.lwr, DF.upr, facecolor='blue',   alpha=.2)
P.plot(DF.start.index, DF.Rt, '.')

但是 x 轴上有日期,像这样(没有带): with plot_date

代码:

P.plot_date(DF.start, DF.Rt, '.')

问题是当 x 值是 date_time 对象时 fill_between 失败。

有人知道解决方法吗? DF 是一个 pandas DataFrame。

最佳答案

如果您显示 df 是如何定义的,将会有所帮助。 df.info() 报告什么?这将向我们展示列的数据类型。

日期有多种表示方式:字符串、整数、 float 、datetime.datetime、NumPy datetime64s、Pandas Timestamps 或 Pandas DatetimeIndex。绘制它的正确方法取决于您拥有什么。

这是一个示例,显示如果 df.index 是 DatetimeIndex,您的代码可以正常工作:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats

index = pd.date_range(start='2000-1-1', end='2015-1-1', freq='M')
N = len(index)
poisson = (stats.poisson.rvs(1000, size=(N,3))/100.0)
poisson.sort(axis=1)
df = pd.DataFrame(poisson, columns=['lwr', 'Rt', 'upr'], index=index)

plt.fill_between(df.index, df.lwr, df.upr, facecolor='blue', alpha=.2)
plt.plot(df.index, df.Rt, '.')
plt.show()

enter image description here


如果索引有日期的字符串表示,那么(使用 Matplotlib 版本 1.4.2)你会得到一个 TypeError:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats

index = pd.date_range(start='2000-1-1', end='2015-1-1', freq='M')
N = len(index)
poisson = (stats.poisson.rvs(1000, size=(N,3))/100.0)
poisson.sort(axis=1)
df = pd.DataFrame(poisson, columns=['lwr', 'Rt', 'upr'])

index = [item.strftime('%Y-%m-%d') for item in index]
plt.fill_between(index, df.lwr, df.upr, facecolor='blue', alpha=.2)
plt.plot(index, df.Rt, '.')
plt.show()

产量

  File "/home/unutbu/.virtualenvs/dev/local/lib/python2.7/site-packages/numpy/ma/core.py", line 2237, in masked_invalid
condition = ~(np.isfinite(a))
TypeError: Not implemented for this type

在这种情况下,修复方法是将字符串转换为时间戳:

index = pd.to_datetime(index)

关于python - Matplotlib fill_between 不适用于 plot_date,还有其他选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28091290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com