Plotly 饼图未显示所有数据
Plotly pie graph not showing all data
我注意到我的 go.Pie 图表只显示数据框列中 3 个值中的 2 个。我在创建引用数据框中完全相同的列的 px.treemap 时注意到了这一点,它显示了所有 3 个值。
下面是我的饼图代码,然后是树图代码
#docCategory count pie graph
valuesDocCat = df['docCategory'].value_counts()
figDocCat = go.Figure(data=[go.Pie(labels = df['docCategory'], values = valuesDocCat)])
figDocCat.update_traces(textposition = 'inside')
figDocCat.update_layout(uniformtext_minsize=14, uniformtext_mode='hide', title='Document Category breakdown')
#treeMap test graph
valuesTreemap = df['Kind'].value_counts()
figTreemap = px.treemap(df, path = ['docCategory', 'Kind'], color='docCategory')
figTreemap.update_traces(root_color='lightgrey')
figTreemap.update_layout(margin = dict(t=50, l=25, r=25, b=25)
你可以看到我上面的代码在两个实例中都引用了 df['docCategory']
,但正如你在下面的图片中看到的那样,饼图没有 'Unknown' 字段,而树状图有。
有什么想法吗?我有其他饼图引用了 2 个以上的字段并且没有问题,它只是发生在这个上。
- 你的问题“Plotly pie graph not showing all data”,它显示了所有内容。
figDocCat = go.Figure(data=[go.Pie(labels = df['docCategory'], values = valuesDocCat)])
- 您正在为
labels
和 values
传递不同长度的数组。 plotly 从标签中提取前 3 个项目,其中一些是相同的。
- 为了保持一致,这一行应该是
figDocCat = go.Figure(data=[go.Pie(labels=valuesDocCat.index, values=valuesDocCat)])
。即标签和值都来自同一个 pandas series
- 有模拟数据框来演示
完整解决方案
import plotly.graph_objects as go
import plotly.express as px
import pandas as pd
import numpy as np
cats = {
"Structured": ["Spreadsheet"],
"Unknown": ["System File", "Unrecognised"],
"Unstrcutured": ["Document", "Email", "Image", "Calendar Entry"],
}
df = pd.DataFrame(
[
{"docCategory": c, "Kind": np.random.choice(cats[c], 2)[0]}
for c in np.random.choice(list(cats.keys()), 25)
]
)
# docCategory count pie graph
valuesDocCat = df["docCategory"].value_counts()
figDocCat = go.Figure(data=[go.Pie(labels=valuesDocCat.index, values=valuesDocCat)])
figDocCat.update_traces(textposition="inside")
figDocCat.update_layout(
uniformtext_minsize=14, uniformtext_mode="hide", title="Document Category breakdown"
)
figDocCat.show()
# treeMap test graph
valuesTreemap = df["Kind"].value_counts()
figTreemap = px.treemap(df, path=["docCategory", "Kind"], color="docCategory")
figTreemap.update_traces(root_color="lightgrey")
figTreemap.update_layout(margin=dict(t=50, l=25, r=25, b=25))
我注意到我的 go.Pie 图表只显示数据框列中 3 个值中的 2 个。我在创建引用数据框中完全相同的列的 px.treemap 时注意到了这一点,它显示了所有 3 个值。
下面是我的饼图代码,然后是树图代码
#docCategory count pie graph
valuesDocCat = df['docCategory'].value_counts()
figDocCat = go.Figure(data=[go.Pie(labels = df['docCategory'], values = valuesDocCat)])
figDocCat.update_traces(textposition = 'inside')
figDocCat.update_layout(uniformtext_minsize=14, uniformtext_mode='hide', title='Document Category breakdown')
#treeMap test graph
valuesTreemap = df['Kind'].value_counts()
figTreemap = px.treemap(df, path = ['docCategory', 'Kind'], color='docCategory')
figTreemap.update_traces(root_color='lightgrey')
figTreemap.update_layout(margin = dict(t=50, l=25, r=25, b=25)
你可以看到我上面的代码在两个实例中都引用了 df['docCategory']
,但正如你在下面的图片中看到的那样,饼图没有 'Unknown' 字段,而树状图有。
有什么想法吗?我有其他饼图引用了 2 个以上的字段并且没有问题,它只是发生在这个上。
- 你的问题“Plotly pie graph not showing all data”,它显示了所有内容。
figDocCat = go.Figure(data=[go.Pie(labels = df['docCategory'], values = valuesDocCat)])
- 您正在为
labels
和values
传递不同长度的数组。 plotly 从标签中提取前 3 个项目,其中一些是相同的。 - 为了保持一致,这一行应该是
figDocCat = go.Figure(data=[go.Pie(labels=valuesDocCat.index, values=valuesDocCat)])
。即标签和值都来自同一个 pandas series
- 您正在为
- 有模拟数据框来演示
完整解决方案
import plotly.graph_objects as go
import plotly.express as px
import pandas as pd
import numpy as np
cats = {
"Structured": ["Spreadsheet"],
"Unknown": ["System File", "Unrecognised"],
"Unstrcutured": ["Document", "Email", "Image", "Calendar Entry"],
}
df = pd.DataFrame(
[
{"docCategory": c, "Kind": np.random.choice(cats[c], 2)[0]}
for c in np.random.choice(list(cats.keys()), 25)
]
)
# docCategory count pie graph
valuesDocCat = df["docCategory"].value_counts()
figDocCat = go.Figure(data=[go.Pie(labels=valuesDocCat.index, values=valuesDocCat)])
figDocCat.update_traces(textposition="inside")
figDocCat.update_layout(
uniformtext_minsize=14, uniformtext_mode="hide", title="Document Category breakdown"
)
figDocCat.show()
# treeMap test graph
valuesTreemap = df["Kind"].value_counts()
figTreemap = px.treemap(df, path=["docCategory", "Kind"], color="docCategory")
figTreemap.update_traces(root_color="lightgrey")
figTreemap.update_layout(margin=dict(t=50, l=25, r=25, b=25))