2015-07-10 186 views
3

https://plot.ly/python/bar-charts/#bar-chart-with-line-plot如何使用Plotly繪製帶折線圖的堆積條形圖?

我想使用plotly和iPython創建一個帶有上圖中線條的條形圖。另一方面,我想用條形圖和iPython將條形圖變成如下例所示的水平堆疊條形圖。我該怎麼做呢?

https://plot.ly/python/bar-charts/#colored-bar-chart

y_saving_yes = [1, 2, 4, 6, 7, 7] 
y_saving_no = [10, 10, 10, 10, 10, 10] 
y_net_worth = [93453, 81666, 69889, 78381, 141395, 92969] 

x_saving = ['Premium', 'Spot Shadow', 'Slow Motion', 'Highlight Music','Extra Text', 'Top Play'] 
x_net_worth = ['Premium', 'Spot Shadow', 'Slow Motion', 'Highlight Music','Extra Text', 'Top Play'] 

trace1 = Bar(
    x=y_saving, 
    y=x_saving, 
    marker=Marker(
     color='rgba(50, 171, 96, 0.6)', 
     line=Line(
      color='rgba(50, 171, 96, 1.0)', 
      width=1, 
     ), 
    ), 
    name='Highlight Properties', 
    orientation='h', 
) 

trace2 = Bar(
    x=y_saving, 
    y=x_saving, 
    marker=Marker(
     color='rgba(50, 171, 96, 0.6)', 
     line=Line(
      color='rgba(50, 171, 96, 1.0)', 
      width=1, 
     ), 
    ), 
    name='Highlight Properties', 
    orientation='h', 
) 

data = Data([trace1, trace2]) 
layout = Layout(barmode='stack') 

fig1 = Figure(data=data, layout=layout) 

trace3 = Scatter(
    x=y_net_worth, 
    y=x_net_worth, 
    mode='lines+markers', 
    line=Line(
     color='rgb(128, 0, 128)', 
    ), 
    name='Highlight Views', 
) 

fig = tools.make_subplots(rows=1, cols=2, specs=[[{}, {}]], shared_xaxes=True, 
          shared_yaxes=False, vertical_spacing=0.001) 

fig.append_trace(trace1, 1, 1) 
fig.append_trace(trace3, 1, 2) 

fig['layout'].update(layout) 
py.iplot(fig, filename='oecd-networth-saving-bar-line') 

回答

5

從Plotly這裏安德魯。超級接近!我想你錯過了fig.append_trace(trace2, 1, 1)。下面是一個簡單的例子,它可以做基本相同的事情供參考。

import plotly.plotly as py 
from plotly import tools 
from plotly.graph_objs import Bar, Data, Figure, Layout, Marker, Scatter 

x_0 = [1, 2, 4, 6, 7, 7] 
x_1 = [10, 10, 10, 10, 10, 10] 
y_0 = [2, 3, 4, 2, 3, 3] 

trace1 = Bar(
    x=x_0, 
    marker=Marker(color='#001f3f'), 
    orientation='h', 
) 

trace2 = Bar(
    x=x_1, 
    marker=Marker(color='#0074D9'), 
    orientation='h', 
) 

trace3 = Scatter(y=y_0) 

fig = tools.make_subplots(1, 2) 
fig.append_trace(trace1, 1, 1) 
fig.append_trace(trace2, 1, 1) 
fig.append_trace(trace3, 1, 2) 
fig['layout'].update(barmode='stack') 

py.iplot(fig, filename='oecd-networth-saving-bar-line')