2016-05-04 22 views
6

Chcę utworzyć splajtowane wykresy słupkowe z pogrupowanymi wykresami słupkowymi (barmode = 'group'). Problem polega na tym, że sprytnie nie tworzy wykresów słupkowych jako śladów. Zamiast tego zgrupowane wykresy słupkowe są tworzone jako listy śladów prętów. Z tego powodu nie wiem, jak utworzyć figurę, która zawiera zgrupowane wykresy słupkowe jako subplots (tj. Dodaj pogrupowany wykres słupkowy za pomocą figure.append_trace()).Dodawanie wykresów słupkowych grupy jako subpotów w spiskach

Na przykład, w jaki sposób można tworzyć za pomocą wykresów słupkowych wątków utworzonych w this sample:

import plotly.plotly as py 
import plotly.graph_objs as go 
trace1 = go.Bar(
    x=['giraffes', 'orangutans', 'monkeys'], 
    y=[20, 14, 23], 
    name='SF Zoo' 
) 
trace2 = go.Bar(
    x=['giraffes', 'orangutans', 'monkeys'], 
    y=[12, 18, 29], 
    name='LA Zoo' 
) 
data = [trace1, trace2] 
layout = go.Layout(
    barmode='group' 
) 
fig = go.Figure(data=data, layout=layout) 
plot_url = py.plot(fig, filename='grouped-bar') 
+0

Czy możesz być bardziej konkretny? – wind85

+0

Czy byłbyś otwarty na rozwiązania wykorzystujące matplotlib zamiast spiskować? – user2027202827

+0

@hobenkr tak, byłoby dobrze –

Odpowiedz

0

Nigdy nie używany pakiet plotly ale to, co wydaje jesteś po jest bardzo prosta przy użyciu matplotlib. Oto całkiem minimalny przykład pokazywania zgrupowanych wykresów słupkowych jako subplot. Daj mi znać, jeśli nie jest to dokładnie to, o co prosiłeś.

import numpy as np 
import matplotlib.pyplot as plt 

# First subplot 
plt.subplot(2, 1, 1) 

x = np.linspace(0, 10) 
y = np.sin(np.pi * x) 

plt.plot(x, y) 

# Second subplot 
plt.subplot(2, 1, 2) 
titles = ('Canada', 'US', 'England', 'Other') 
y_pos = np.arange(len(titles)) 
width = 0.2 
bar_height1 = [6,5,7,2] 
bar_height2 = [x+1 for x in bar_height1] 

plt.bar(y_pos, bar_height1, width, align='center', alpha=0.8, color='r') 
plt.bar(y_pos+width, bar_height2, width, align='center', alpha=0.8, color='b') 

plt.xticks(y_pos + width/2, titles) 

# Show the plots 
plt.show() 

Matplotlib plot

1

TAK! Niedawno działka.ly i miał ten problem, i jak wspomniano w moim komentarzu, nie mogłem po prostu zrobić to w pandas/matplotlib z różnych powodów. Ale dzięki magii wątków możesz w rzeczywistości odtworzyć wątki wielościeżkowe, po prostu je scalając. enter image description here

import plotly.plotly as py 
import plotly.graph_objs as go 
trace1 = Bar(
    x=['giraffes', 'orangutans', 'monkeys'], 
    y=[20, 14, 23], 
    name='SF Zoo' 
) 
trace2 = Bar(
    x=['giraffes', 'orangutans', 'monkeys'], 
    y=[12, 18, 29], 
    name='LA Zoo' 
) 
trace3 = Scatter(
    x=['giraffes', 'orangutans', 'monkeys'] 
    ,y=[33,20,17] 
    ,name='subplots ftw' 
) 


fig = tools.make_subplots(rows=2, cols=1, shared_xaxes=True) 

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


fig['layout'].update(height=600, width=600) 
iplot(fig)