【问题标题】:Why are the subplots not displayed in subplot?为什么子图不显示在子图中?
【发布时间】:2021-02-04 11:34:16
【问题描述】:

我想创建一个只有 3 个子图的 2x2 图。 1 个条形图和两个饼图。见代码:

import plotly.graph_objs as go 
from plotly.subplots import make_subplots

years = [1980, 1980, 1982, 1983, 1984, 1985, 1986, 1987, 1988,
         1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
         1998, 1999 ,2000 ,2001, 2002, 2003, 2004, 2005, 2006, 
         2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015,
         2016, 2017, 2018, 2019, 2020]
freq = [173,1368,2238,4135,5455,6280,7470,6580,7537,8781,10894,14788,20562,27637,
        32446,32665,30374,28234,24235,22312,16817,20222,24080,30398,30230,27462,
        33582,28908,31648,26579,29121,31216,34574,34271,32570,32531,43390,46761,
        55920,34675,0]

values_in = [872641, 13994, 39055, 8985]
labels_in = ['Company', 'Goverment (NGO)', 'Individual', 'University']

values_cty = [297286, 175039, 170002, 66060, 35678, 31959, 26268, 24724, 22058, 17902],
labels_cty = ['Japan', 'Germany', 'USA', 'France' ,'Italy' ,'Switzerland' , 'Korea',
          'Great Brtian', 'Netherlands', 'China(PRC)']

fig = make_subplots(
    rows=2, cols=2,
    specs=[[{"colspan": 2}, None],[{'type':'pie'}, {'type':'pie'}]],
    subplot_titles=("Patents","Countries", "Institutions"))

fig.add_trace(go.Bar(x=years, y=freq),row=1,col=1)

fig.add_trace(go.Pie(labels=labels_cty, values=values_cty),
                 row=2, col=1)
fig.add_trace(go.Pie(labels=labels_in, values=values_in),
                 row=2, col=2)

我不明白为什么不显示饼图。没有错误代码。 我错过了什么吗?

【问题讨论】:

    标签: python plotly plotly-python


    【解决方案1】:

    在我看来,您只缺少一些域属性,这些属性是一些子图所需要的,例如 go.Pie()

    domain=dict(x=[0, 0.5]
    

    剧情:

    代码:

    from plotly.subplots import make_subplots
    import plotly.graph_objects as go
    
    years = [1980, 1980, 1982, 1983, 1984, 1985, 1986, 1987, 1988,
             1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
             1998, 1999 ,2000 ,2001, 2002, 2003, 2004, 2005, 2006, 
             2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015,
             2016, 2017, 2018, 2019, 2020]
    freq = [173,1368,2238,4135,5455,6280,7470,6580,7537,8781,10894,14788,20562,27637,
            32446,32665,30374,28234,24235,22312,16817,20222,24080,30398,30230,27462,
            33582,28908,31648,26579,29121,31216,34574,34271,32570,32531,43390,46761,
            55920,34675,0]
    
    values_in = [872641, 13994, 39055, 8985]
    labels_in = ['Company', 'Goverment (NGO)', 'Individual', 'University']
    
    values_cty = [297286, 175039, 170002, 66060, 35678, 31959, 26268, 24724, 22058, 17902]
    labels_cty = ['Japan', 'Germany', 'USA', 'France' ,'Italy' ,'Switzerland' , 'Korea',
              'Great Brtian', 'Netherlands', 'China(PRC)']
    
    fig = make_subplots(
        rows=2, cols=2,
        specs=[[{"colspan": 2}, None],[{'type':'pie'}, {'type':'pie'}]],
        subplot_titles=("Patents","Countries", "Institutions"))
    
    fig.add_trace(go.Bar(x=years, y=freq),row=1,col=1)
    
    fig.add_trace(go.Pie(
         values= [872641, 13994, 39055, 8985],
         labels=labels_in,
         domain=dict(x=[0, 0.5]),
         ), 
         row=2, col=1)
    
    fig.add_trace(go.Pie(
         values=values_cty,
         labels=labels_cty,
         domain=dict(x=[0.5, 1.0]),
         ),
        row=2, col=2)
    
    fig.show()
    

    【讨论】:

    • 您可能对我如何解决 subplot2 中的重叠问题(方向='顺时针'没有解决)以及如何增加饼图的大小有一个提示?
    • @Epimetheus- 可能,是的。如果您花时间将其作为一个新问题发布,那么我一定会在找到时间时查看它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    相关资源
    最近更新 更多