有没有办法在pandas区域图中禁用插值? 我想得到一个步骤式的"区域情节。 例如。在法线图中,可以指定:
import pandas as pd
df = pd.DataFrame({'x':range(10)})
df.plot(drawstyle = 'steps') # this works
#df.plot(kind = 'area', drawstyle = 'steps') # this does not work
我使用的是python 2.7和pandas 0.14.1。
非常感谢提前。
答案 0 :(得分:3)
最近,.fill_between()
step='pre'
附带了 matplotlib 1.5.0版,允许填充两个步骤功能之间的区域。这甚至适用于熊猫时间序列。
由于参数# For error bands around a series df
ax.fill_between(df.index, df - offset, df + offset, step='pre', **kwargs)
# For filling the whole area below a function
ax.fill_between(df.index, df, 0, step='pre', **kwargs)
存在,因此可以像这样使用:
alpha=0.3
对我有意义的其他关键词参数例如是lw=0
和Mage::getResourceModel('catalog/category')->getAttributeRawValue($categoryId, 'name', $storeId);
。
答案 1 :(得分:2)
据我所知,df.plot(drawstyle="steps")
甚至没有存储计算出的步骤顶点;
out = df.plot(kind = 'line', drawstyle = 'steps') # stepped, not filled
stepline = out.get_lines()[0]
print(stepline.get_data())
(数组([0,1,2,3,4,5,6,7,8,9]),数组([0,1,2,3,4,5,6,7, 8,9]))
所以我认为你必须自己动手。这只是在点列表中的每个(x[i+1],y[i])
之后直接插入(x[i],y[i])
:
df = pd.DataFrame({'x':range(10)})
x = df.x.values
xx = np.array([x,x])
xx.flatten('F')
doubled = xx.flatten('F') # NOTE! if x, y weren't the same, need a yy
plt.fill_between(doubled[:-1], doubled[1:], label='area')
ax = plt.gca()
df.plot(drawstyle = 'steps', color='red', ax=ax)
答案 2 :(得分:0)