ValueError: Invalid property specified for object of type plotly.graph_objs.Pie: 'xaxis'
10,750
There is another way to plot pie chart subplots. You just need to specify domain
and annotation
(if you want to place name of the trace in the hole of pie chart).
Code(based on data from examples in plotly docs):
# 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')
Output: Also suggest you to check how to create donut subplots and plot subplots on two axis - link for better understanding.
Comments
-
Ian Dzindo almost 2 years
I am trying to plot 2 different Plotly pie charts on 2 different axes. This is my code:
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)
When I run this, I get the following error:
ValueError: Invalid property specified for object of type plotly.graph_objs.Pie: 'xaxis'
I have been searching around the web for a solution, but to no avail.