如何在绘图中对饼图进行子图绘制?

时间:2019-03-04 02:17:53

标签: python pandas ipython plotly subplot

如何在“ fig”中子图“ pie1”,使其位于“第一个”位置。这就是我的做法,但无法解决

    import pandas as pd
    import numpy as np
    import seaborn as sns
    import plotly.offline as pyp
    import plotly.graph_objs as go
    from plotly import tools
    import plotly.plotly as py
    from plotly.offline import iplot,init_notebook_mode
    from IPython.core.display import HTML
    import plotly.io

    df1=pd.read_excel('file.xlsx',sheet_name='sheet1',index=False)
    con_pivot=pd.pivot_table(con,index='Category',values=('Payment'),aggfunc='sum',margins=True,margins_name='Total')

    fig = tools.make_subplots(rows=2, cols=2, subplot_titles=('The first','3','2','4'))

    pie1=go.Pie(labels=con_pivot.index,values=con_pivot.values)
    fig.append_trace(pie1,1,1)
    pyo.plot(fig)

任何帮助将不胜感激。 谢谢

2 个答案:

答案 0 :(得分:1)

以下是通过使用make_subplots函数来实现并排饼图的方法(非常感谢@Oysiyl的输入数据):

from plotly.subplots import make_subplots
import plotly.graph_objects as go
from plotly.offline import plot


fig = make_subplots(rows=1, cols=2, specs=[[{"type": "pie"}, {"type": "pie"}]])


fig.add_trace(go.Pie(
     values=[16, 15, 12, 6, 5, 4, 42],
     labels=["US", "China", "European Union", "Russian Federation",
             "Brazil", "India", "Rest of World"
             ],
     domain=dict(x=[0, 0.5]),
     name="GHG Emissions"), 
     row=1, col=1)

fig.add_trace(go.Pie(
     values=[27, 11, 25, 8, 1, 3, 25],
     labels=["US", "China", "European Union", "Russian Federation",
             "Brazil", "India", "Rest of World"
             ],
     domain=dict(x=[0.5, 1.0]),
     name="CO2 Emissions"),
    row=1, col=2)

plot(fig)

enter image description here

答案 1 :(得分:0)

您应该查看domain参数以从饼图进行子图绘制。例如,要在1行(x轴)中绘制两个饼图,您可以指定第一和第二个绘图所占的位置(第一个绘图从0%到50%,第二个绘图从50%到100%)。

代码:

from plotly import tools
import plotly.offline as py
import plotly.graph_objs as go

trace1 = go.Pie(
     values=[16, 15, 12, 6, 5, 4, 42],
     labels=["US", "China", "European Union", "Russian Federation",
             "Brazil", "India", "Rest of World"
             ],
     domain=dict(x=[0, 0.5]),
     name="GHG Emissions",
     hoverinfo="label+percent+name",
)
trace2 = go.Pie(
     values=[27, 11, 25, 8, 1, 3, 25],
     labels=["US", "China", "European Union", "Russian Federation",
             "Brazil", "India", "Rest of World"
             ],
     domain=dict(x=[0.5, 1.0]),
     name="CO2 Emissions",
     hoverinfo="label+percent+name",
)
layout = go.Layout(title="Global Emissions 1990-2011",)
data = [trace1, trace2]
fig = go.Figure(data=data, layout=layout)
py.plot(fig, filename='simple-pie-subplot')

输出: Simple pie chart subplot 如果需要,您还可以检查documentation并在此处找到2x2子图的示例。