大熊猫区域图插值/步骤样式

时间:2015-04-22 20:56:59

标签: python python-2.7 pandas

有没有办法在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。

非常感谢提前。

3 个答案:

答案 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=0Mage::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) 

enter image description here

答案 2 :(得分:0)

这不是可能的区域,但是您可以使用堆积的条形图来获得所需的

import pandas as pd
df = pd.DataFrame({'x':range(10)})
df.plot(kind="bar",stacked=True,width = 1)

enter image description here