Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中创建具有不同大小切片的饼图?_Python_Matplotlib_Charts_Pie Chart - Fatal编程技术网

如何在Python中创建具有不同大小切片的饼图?

如何在Python中创建具有不同大小切片的饼图?,python,matplotlib,charts,pie-chart,Python,Matplotlib,Charts,Pie Chart,我想写一些足球运动员的球探报告,为此我需要想象。其中一种是饼图。现在我需要一些饼图,如下所示,具有不同大小的切片(与切片所指示的内容数量成比例)。有人能给我建议怎么做吗?或者有任何链接到我可以学习的网站吗 我以前使用过rose或极坐标条形图。这是一个例子 将plotly.express导入为px df=px.data.wind() 图=px.bar\u极坐标(df,r=“频率”,theta=“方向”, color=“strength”,template=“plotly\u深色”, 颜色\u离散\

我想写一些足球运动员的球探报告,为此我需要想象。其中一种是饼图。现在我需要一些饼图,如下所示,具有不同大小的切片(与切片所指示的内容数量成比例)。有人能给我建议怎么做吗?或者有任何链接到我可以学习的网站吗


我以前使用过
rose
极坐标条形图
。这是一个例子

将plotly.express导入为px
df=px.data.wind()
图=px.bar\u极坐标(df,r=“频率”,theta=“方向”,
color=“strength”,template=“plotly\u深色”,
颜色\u离散\u序列=px.colors.sequential.Plasma\r)
图2(图3)

您正在寻找的被称为“雷达饼图”。它类似于更常用的“雷达图”,但我认为它看起来更好,因为它突出了数值,而不是专注于无意义的形状

足球数据集面临的挑战是,每个类别都有不同的比例,因此您希望将每个值绘制为某个最大值的百分比。我的代码将完成这一任务,但您需要注释原始值以完成这些图表

仅使用标准matplotlib库,使用极轴即可完成绘图。我从这里借用了代码()


(顺便说一句,你要找的词是)谢谢你,伙计。不知道实际名称的示例代码会有很大帮助。谢谢
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from math import pi

from random import random, seed
seed(12345)

# Generate dataset with 10 rows, different maxes
maxes = [5, 5, 5, 2, 2, 10, 10, 10, 10, 10]
df = pd.DataFrame(
    data = {
        'categories': ['category_{}'.format(x) for x, _ in enumerate(maxes)],
        'scores': [random()*max for max in maxes],
        'max_values': maxes,
    },
)
df['pct'] = df['scores'] / df['max_values']
df = df.set_index('categories')

# Plot pie radar chart
N = df.shape[0]
theta = np.linspace(0.0, 2*np.pi, N, endpoint=False)
categories = df.index
df['radar_angles'] = theta

ax = plt.subplot(polar=True)
ax.bar(df['radar_angles'], df['pct'], width=2*pi/N, linewidth=2, edgecolor='k', alpha=0.5)
ax.set_xticks(theta)
ax.set_xticklabels(categories)
_ = ax.set_yticklabels([])