ValueError:为 plotly.graph_objs.Pie 类型的对象指定的属性无效:'xaxis'

Ian*_*ndo 3 python plot visualization subplot plotly

我试图在 2 个不同的轴上绘制 2 个不同的 Plotly 饼图。这是我的代码:

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

monday_freq = meta_df['monday_is_day_off'].value_counts()
tuesday_freq = meta_df['tuesday_is_day_off'].value_counts()

trace1 = go.Pie(labels=list(monday_freq.keys()), 
values=list(monday_freq.values), hole=0.7, hoverinfo='label+percent')
trace2 = go.Pie(labels=list(tuesday_freq.keys()), 
values=list(tuesday_freq.values), hole=0.7, hoverinfo='label+percent')

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

iplot(fig)
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到以下错误:

ValueError: Invalid property specified for object of type plotly.graph_objs.Pie: 'xaxis'
Run Code Online (Sandbox Code Playgroud)

我一直在网上寻找解决方案,但无济于事。

Dmi*_*sil 5

还有另一种绘制饼图子图的方法。您只需要指定domainannotation(如果您想在饼图的孔中放置跟踪的名称)。

代码(基于 plotly 文档中示例的数据):

# import all the necessaries libraries
import plotly.offline as py
import plotly.graph_objs as go

# change to your data
labels = ['Oxygen','Hydrogen','Carbon_Dioxide','Nitrogen']
labels2 = ['Helium','Lithium','Aluminium','Phosphorus']
values = [4500,2500,1053,500]
values2 = [6500,1500,2700,1286]
colors = ['#FEBFB3', '#E1396C', '#96D38C', '#D0F9B1']
colors2 = ['#29ECEC', '#EC7029', '#5E6B6B','#B6E44C']

# Create one trace for each day (Monday, Tuesday and so on)
trace1 = go.Pie(labels=labels, values=values,
               hoverinfo='label+percent', textinfo='value', 
               textfont=dict(size=20),
               name = 'Monday',
               # Create hole in pie where we will place day name
               hole = 0.2,
               marker=dict(colors=colors, 
                           line=dict(color='#000000', width=2)
                           ),
               # Set where first plot will be plotted
               domain=dict(x=[0,0.5])
               )
trace2 = go.Pie(labels=labels2, values=values2,
               hoverinfo='label+percent', textinfo='value', 
               textfont=dict(size=20),
               name='Tuesday',
               # Create hole in pie where we will place day name
               hole = 0.2,
               marker=dict(colors=colors2, 
                           line=dict(color='#000000', width=2)
                           ),
               # Set where second plot will be plotted
               domain=dict(x=[0.5,1.0])
               )
# Fill out the data wtih traces
data = [trace1,trace2]
# Create one annotation to each day (Monday, Tuesday and so on)
ann1 = dict(font=dict(size=20),
            showarrow=False,
            text='Monday',
            # Specify text position (place text in a hole of pie)
            x=0.23,
            y=0.5
            )
ann2 = dict(font=dict(size=20),
            showarrow=False,
            text='Tuesday',
            # Specify text position (place text in a hole of pie)
            x=0.78,
            y=0.5
            )
# Specify layout to set the title and annotations to our traces
layout = go.Layout(title ='Pie chart subplots',
                   annotations=[ann1,ann2],
                   # Hide legend if you want
                   #showlegend=False
                   )
# Create fig with data and layout
fig = go.Figure(data=data,layout=layout)
# Plot the plot and save the file in your Python script directory
py.plot(fig, filename='subplot_pie_chart.html')
Run Code Online (Sandbox Code Playgroud)

输出: 饼图子图 还建议您检查如何创建甜甜圈子图并在两个轴上绘制子图 -链接以更好地理解。