Python 设置具有适当大小和间距的饼图子图
我正在努力设置具有适当大小和间距的饼图子图。 如果饼图的大小太小,则数据不可见,如果子图之间的间距不合适,则图形将被填满。 因此,子地块的布局如下3行:;2列。 请参见数据集中的以下代码片段:Python 设置具有适当大小和间距的饼图子图,python,python-3.x,pandas,plotly,Python,Python 3.x,Pandas,Plotly,我正在努力设置具有适当大小和间距的饼图子图。 如果饼图的大小太小,则数据不可见,如果子图之间的间距不合适,则图形将被填满。 因此,子地块的布局如下3行:;2列。 请参见数据集中的以下代码片段: violent_main=pd.DataFrame({'Counts': crimes[crimes['Class Main Cathegory'].notnull()==True].groupby(['Police District Number'])['Class Main Cathegory'].v
violent_main=pd.DataFrame({'Counts': crimes[crimes['Class Main Cathegory'].notnull()==True].groupby(['Police District Number'])['Class Main Cathegory'].value_counts()}).reset_index()
violent_main
还附带了数据集的打印屏幕:
我正在使用以下代码进行绘图:
#PD_1D
label_PD_1D=violent_main[violent_main['Police District Number']=='1D']['Class Main Cathegory']
values_PD_1D=violent_main[violent_main['Police District Number']=='1D']['Counts']
#PD_2D
label_PD_2D=violent_main[violent_main['Police District Number']=='2D']['Class Main Cathegory']
values_PD_2D=violent_main[violent_main['Police District Number']=='2D']['Counts']
#PD_3D
label_PD_3D=violent_main[violent_main['Police District Number']=='3D']['Class Main Cathegory']
values_PD_3D=violent_main[violent_main['Police District Number']=='3D']['Counts']
#PD_4D
label_PD_4D=violent_main[violent_main['Police District Number']=='4D']['Class Main Cathegory']
values_PD_4D=violent_main[violent_main['Police District Number']=='4D']['Counts']
fig = {
"data": [
{
"values": values_PD_1D,
"labels": label_PD_1D,
"domain": {'x': [0.0, 0.35], 'y': [2.22, 2.53]},
"name": "PD_1D",
"hoverinfo":"label+percent+name",
"hole": .4,
"type": "pie"
},
{
"values": values_PD_2D,
"labels": label_PD_2D,
"text":"CO2",
"textposition":"inside",
"domain":{'x': [0.50, 0.85], 'y': [2.22, 2.53]},
"name": "PD_2D",
"hoverinfo":"label+percent+name",
"hole": .4,
"type": "pie"
},
{
"values": values_PD_3D,
"labels": label_PD_3D,
"text":"CO2",
"textposition":"inside",
'domain': {'x': [0.0, 0.35], 'y': [.9, 1.13]},
"name": "CO2 Emissions",
"hoverinfo":"label+percent+name",
"hole": .4,
"type": "pie"
}
],
"layout": {
"title":"Violent Crimes by main cathegory",
"annotations": [
{
"font": {
"size": 20
},
"showarrow": False,
"text": "PD_1D",
"x": 0.12,
"y": 0.5
},
{
"font": {
"size": 20
},
"showarrow": False,
"text": "PD_2D",
"x": 0.73,
"y": 0.5
},
{
"font": {
"size": 20
},
"showarrow": False,
"text": "PD_3D",
"x": 0.20,
"y": 0.25
}
]
}
}
iplot(fig, filename='donut')
在这段代码中,我试图使用“域”操纵布局:{x:[],y:[])
但是,我无法获得所需的布局。例如,3号地块较小,位于1号地块和2号地块上方。我希望该地块的大小与其他地块相同,但在1号地块和2号地块下方
请参见下图:
我希望我能找出逻辑,这样我就能画出饼图:3行:2列。
请建议看看这个极好的答案: 为了获得相同大小的绘图,其
域
跨度需要相同。域从底部开始(例如,0向下,1向上)
值_PD_1D=[i代表范围内的i(30,100,10)]
values_PD_2D=values_PD_1D[::-1]
values_PD_3D=values_PD_1D[::-2]
label_PD_1D = ['Javascript', 'Python', 'R', 'Java', 'C#', 'C++', 'Perl']
label_PD_2D = label_PD_1D
label_PD_3D = label_PD_1D[::-2]
fig = {
"data": [
{
"values": values_PD_1D,
"labels": label_PD_1D,
"domain": {'x': [0.0, 0.45], 'y': [0, 0.45]},
"name": "PD_1D",
"hoverinfo":"label+percent+name",
"hole": .4,
"type": "pie"
},
{
"values": values_PD_2D,
"labels": label_PD_2D,
"textposition":"inside",
"domain":{'x': [0.55, 1], 'y': [0, 0.45]},
"name": "PD_2D",
"hoverinfo":"label+percent+name",
"hole": .4,
"type": "pie"
},
{
"values": values_PD_3D,
"labels": label_PD_3D,
'domain': {'x': [0.0, 0.45], 'y': [0.55, 1]},
"hoverinfo":"label+percent+name",
"hole": .4,
"type": "pie"
}
],
"layout": {
"title":"Programming languages",
"annotations": [
{
"font": {
"size": 20
},
"showarrow": False,
"text": "PD_1D",
"x": 0.12,
"y": 0.5
},
{
"font": {
"size": 20
},
"showarrow": False,
"text": "PD_2D",
"x": 0.73,
"y": 0.5
},
{
"font": {
"size": 20
},
"showarrow": False,
"text": "PD_3D",
"x": 0.12,
"y": 1.1
}
]
}
}
plotly.offline.iplot(fig, filename='donut')
我想要的可以通过使用这样的布局字典来实现:
layout = dict(height = 1200,
width = 1000,
autosize = False,
title = 'Violent Crimes/PD by main cathegory',
annotations= [{"font": {"size": 24},"showarrow": False,"text": "PD_1D","x": 0.14, "y": 0.82},
{"font": {"size": 24},"showarrow": False,"text": "PD_2D","x": 0.86, "y": 0.82},
{"font": {"size": 24},"showarrow": False,"text": "PD_3D","x": 0.14, "y": 0.48},
{"font": {"size": 24},"showarrow": False,"text": "PD_4D","x": 0.86, "y": 0.48},
{"font": {"size": 24},"showarrow": False,"text": "PD_5D","x": 0.14, "y": 0.13},
{"font": {"size": 24},"showarrow": False,"text": "PD_6D","x": 0.86, "y": 0.13}]
)
在布局字典中,宽度、高度参数控制子地块大小。
x、 y域为每个子地块提供更多的起点,并被限制在1的上限。因此,仅使用域无法获得子地块之间良好的详细程度和间距。
请参阅随附的打印屏幕
答案解决了你的问题吗?嗨,Maximilian,这不是我想要的,但我设法解决了问题。这是可以解决的。我们不会“关闭”回答的问题;相反,你应该这样做,以便将来对其他人有用。