2016-09-22 3 views
5

私はJupyterノートブック(オフライン)でPlotly(バージョン1.12.9)でカスタムサイズのサブプロットのグリッドを作成しようとしていました。 Plotlyのウェブサイトには素晴らしい例がありますが、それらのすべてが散らばったプロットで表示されています。私はそれが私がしたいもののように見えるようにそれらのいずれかを修正して、散布図と連携して動作します。PythonでPlotlyでカスタムサイズのサブプロットとして円グラフをプロットする方法

import plotly 
import plotly.offline as py 
import plotly.graph_objs as go 
py.init_notebook_mode(connected=True) 

labels = ['Oxygen','Hydrogen','Carbon_Dioxide','Nitrogen'] 
values = [4500,2500,1053,500] 

trace0 = go.Scatter(x=[1, 2], y=[1, 2]) 
trace1 = go.Scatter(x=[1, 2], y=[1, 2]) 
trace2 = go.Scatter(x=[1, 2], y=[1, 2]) 
trace3 = go.Scatter(x=[1, 2], y=[1, 2]) 
trace4 = go.Scatter(x=[1, 2], y=[1, 2]) 
trace5 = go.Scatter(x=[1, 2], y=[1, 2]) 


fig = plotly.tools.make_subplots(
    rows=3, 
    cols=3, 
    specs=[[{}, {}, {}], [{}, {'colspan': 2, 'rowspan': 2}, None], [{} , None, None]], 
    subplot_titles=('First Subplot','Second Subplot', 'Third Subplot') 
) 

fig.append_trace(trace0, 3, 1) 
fig.append_trace(trace1, 2, 1) 
fig.append_trace(trace2, 1, 1) 
fig.append_trace(trace3, 1, 2) 
fig.append_trace(trace4, 1, 3) 
fig.append_trace(trace5, 2, 2) 

py.iplot(fig) 

そして期待通りに動作します: Custom size scattered subplots

しかし、このような円グラフのトレースを変更します:

labels = ['Oxygen','Hydrogen','Carbon_Dioxide','Nitrogen'] 
values = [4500,2500,1053,500] 
trace0 = go.Pie(labels=labels,values=values) 
trace1 = go.Pie(labels=labels,values=values) 
trace2 = go.Pie(labels=labels,values=values) 
trace3 = go.Pie(labels=labels,values=values) 
trace4 = go.Pie(labels=labels,values=values) 
trace5 = go.Pie(labels=labels,values=values) 

ただ、このエラーがスローされます。

PlotlyDictKeyError: 'xaxis' is not allowed in 'pie' 

Path To Error: ['xaxis'] 

Valid attributes for 'pie' at path [] under parents []: 

    ['pullsrc', 'textfont', 'hoverinfo', 'domain', 'label0', 'legendgroup', 
    'showlegend', 'scalegroup', 'textpositionsrc', 'pull', 'visible', 
    'sort', 'name', 'outsidetextfont', 'dlabel', 'stream', 'hole', 
    'textinfo', 'marker', 'labels', 'labelssrc', 'rotation', 'opacity', 
    'values', 'insidetextfont', 'direction', 'textsrc', 'textposition', 
    'type', 'valuessrc', 'text', 'uid'] 

Run `<pie-object>.help('attribute')` on any of the above. 
'<pie-object>' is the object at [] 

分散プロットでのみ可能ですか?私は陰謀の文書で何も見つかりませんでした。

答えて

4

私は最近、同じ問題で苦労し、plotly.tools.make_subplotsplotly.graph_objs.Pieを使用できるかどうかについては何も分かりませんでした。私は理解しているように、これらのプロットにx軸とy軸がないため、これは不可能です。 original tutorialPieでは、domain dictを提供するサブプロットを行います。 {'x': [0.0, 0.5], 'y': [0.0, 0.5]}は、合計プロット空間の左下象限内の領域を定義します。 Btw、このチュートリアルでは、xanchor = 'center'yanchor = 'middle'のパラメータを指定することで、ドーナツチャートのアノテーション配置の解決策を説明しています。私はone other tutorialを見つけました。これはとても良い例です。ここで私はあなたの例でそれを示しています。

import plotly 
import plotly.offline as py 
import plotly.graph_objs as go 
py.init_notebook_mode(connected=True) 

labels = ['Oxygen','Hydrogen','Carbon_Dioxide','Nitrogen'] 
values = [4500,2500,1053,500] 
domains = [ 
    {'x': [0.0, 0.33], 'y': [0.0, 0.33]}, 
    {'x': [0.0, 0.33], 'y': [0.33, 0.66]}, 
    {'x': [0.0, 0.33], 'y': [0.66, 1.0]}, 
    {'x': [0.33, 0.66], 'y': [0.0, 0.33]}, 
    {'x': [0.66, 1.0], 'y': [0.0, 0.33]}, 
    {'x': [0.33, 1.0], 'y': [0.33, 1.0]} 
] 
traces = [] 

for domain in domains: 
    trace = go.Pie(labels = labels, 
        values = values, 
        domain = domain, 
        hoverinfo = 'label+percent+name') 
    traces.append(trace) 

layout = go.Layout(height = 600, 
        width = 600, 
        autosize = False, 
        title = 'Main title') 
fig = go.Figure(data = traces, layout = layout) 
py.iplot(fig, show_link = False) 

Plotly pie charts subplots example

P.S.申し訳ありませんが、後でy座標が下から始まるので、レイアウトを垂直に反映しています。また、隣接するサブプロット間にスペースを追加することもできます(たとえば、0.31を右に0.31、左隅に0.33の代わりに0.35など)。

最後に、円グラフを使用する前に、実際に最適なオプションかどうかを考えて、thisthisのような批評家を考えてください。

関連する問題