使用熊猫& matplotlib我为我们的团队创建了一个方便的图形来监控收入。对于我们的每个客户,它显示上个月(浅灰色),最佳月份(深灰色)和本月的预测范围(绿色)。
它基本上是两个不同宽度的堆叠条形图。
ax = df.plot(kind='barh', x='company', y=['last_month', 'best-last'], width=0.2, color=context_colors, lw=0, stacked=True)
df.plot(kind='barh', x='company', y=['forecast_low', 'hi-lo'], stacked=True, colors=range_colors, lw=0, ax=ax)
在python中运行得很好。由于不值得进入的原因,此图片不会在需要继续播放的网站上显示正确大小。所以我第一次尝试了。
我还没有找到类似的功能。我尝试构建单独的堆叠图表,然后通过运行顺序iplot
来组合它们,但它只是构建了两个单独的图。
例如
iplot(fig)
iplot(fig2)
尝试组合无花果并不好(例如iplot(fig, fig2)
),它只是在第一个数据中绘制数据。
关于如何在剧情中复制的任何建议?
答案 0 :(得分:2)
图表可以使用一些调整,但它绝对可以与Plotly一起使用。
orientation='h'
添加到两个跟踪中,使其h
orizontal barmode='stack'
添加到layout
以堆叠栏x
和y
与右轴匹配x
值应该只是两条跟踪之间的差异,即x=df['best'] - df['last month']
mode
设置为markers
或添加shapes(下图同时显示)。import plotly.plotly as py
import plotly.graph_objs as go
import pandas as pd
df = pd.DataFrame(
{'last month': [10, 15, 12],
'best': [13, 20, 16],
'forecast': [11, 17, 14],
'animal': ['giraffe', 'orangutan', 'monkey']
}
)
trace1 = go.Bar(
y=df['animal'],
x=df['last month'],
name='last month',
orientation='h'
)
trace2 = go.Bar(
y=df['animal'],
x=df['best'] - df['last month'],
name='best month',
orientation='h',
)
trace3 = go.Scatter(
y=df['animal'],
x=df['forecast'],
name='forecasst',
mode='markers',
marker= {'size': 20, 'symbol': 'square'}
)
data = [trace1, trace2, trace3]
shapes = list()
for i, x in enumerate(df['animal']):
shapes.append({
'type': 'rect',
'x0': df.forecast[i] - 1,
'x1': df.forecast[i] + 1,
'y0': i - 0.5,
'y1': i + 0.5,
'line': {
'color': 'rgba(0, 128, 0, 1)',
'width': 2,
},
'fillcolor': 'rgba(0, 128, 0, 0.5)'
}
)
layout = go.Layout(
barmode='stack',
shapes=shapes
)
fig = go.Figure(data=data, layout=layout)
plot_url = py.plot(fig)