小黄人番外短片合集 — 第13集【Competition 比赛】
Matplotlib 系列文章(持续更新中):
- 《Python 数据分析三剑客之 Matplotlib(一):初识 Matplotlib 与其 matplotibrc 配置文件》
- 《Python 数据分析三剑客之 Matplotlib(二):文本描述 / 中文支持 / 画布 / 网格等基本图像属性》
- 《Python 数据分析三剑客之 Matplotlib(三):图例 / LaTeX / 刻度 / 子图 / 补丁等基本图像属性》
- 《Python 数据分析三剑客之 Matplotlib(四):线性图的绘制》
- 《Python 数据分析三剑客之 Matplotlib(五):散点图的绘制》
- 《Python 数据分析三剑客之 Matplotlib(六):直方图 / 柱状图 / 条形图的绘制》
- 《Python 数据分析三剑客之 Matplotlib(七):饼状图的绘制》
文章目录
- 【1x00】方法描述
- 【2x00】简单示例
- 【3x00】按角度调整扇形标签
- 【4x00】显示图例
- 【5x00】突出显示扇形块
- 【6x00】显示各扇区所占百分比
- 【7x00】旋转饼状图
- 【8x00】自定义每个扇形和文字属性
这里是一段防爬虫文本,请读者忽略。
本文原创首发于 CSDN,作者 TRHX。
博客首页:https://itrhx.blog.csdn.net/
本文链接:https://itrhx.blog.csdn.net/article/details/106025845
【1x00】方法描述
matplotlib.pyplot.pie()
方法用于绘制饼状图。
基本语法:
matplotlib.pyplot.pie(
x[, explode=None, labels=None, colors=None,
autopct=None, pctdistance=0.6, shadow=False,
labeldistance=1.1, startangle=None, radius=None,
counterclock=True, wedgeprops=None, textprops=None,
center=(0, 0), frame=False, rotatelabels=False, \*, data=None]
)
参数 | 描述 |
---|---|
x | 每个扇形块的大小,数组形式,大小单位是比例 |
explode | 指定对应扇形块脱离饼图的半径大小,数组形式,其中元素个数应该是 len(x) |
labels | 每个扇形块上的文本标签,列表形式 |
labeldistance | 每个扇形块上的文本标签与扇形中心的距离,float 类型,默认 1.1 |
colors | 每个扇形块对应的颜色,数组形式 |
autopct | 用于计算每个扇形块所占比例,字符串或者函数类型 例如: autopct='%1.1f%%' 表示浮点数,保留一位小数,并添加百分比符号 |
pctdistance | 每个扇形块的中心与 autopct 生成的文本之间的距离,float 类型,默认 0.6 |
shadow | 是否为扇形添加阴影效果 |
startangle | 将饼图按照逆时针旋转指定的角度,float 类型 |
radius | 饼图的半径,如果是 None,则将被设置为 1,float 类型 |
counterclock | 是否按照逆时针对扇形图进行排列,bool 类型,默认 True |
wedgeprops | 传递给绘制每个扇形图对象的参数,字典形式,参数值参见 Wedge 例如: wedgeprops = {'linewidth': 3} 设置扇形边框线宽度为 3 |
textprops | 传递给文本对象的参数,字典形式 例如: textprops={'color': 'r', 'fontsize': 15} 设置文字为红色,大小为15 |
center | 饼图圆心在画布上是坐标,默认 (0, 0) |
frame | 是否显示 x, y 坐标轴外框,默认 False |
rotatelabels | 是否按照角度进行调整每块饼的 label 文本标签,默认 False |
【2x00】简单示例
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
x = [10, 30, 45, 15]
labels = ['Java', 'Golang', 'Python', 'C++']
colors = ['red', 'yellow', 'blue', 'green']
# 指定4个扇区所占比例以及扇区的颜色,扇区文本标签距离扇区中心1.1
plt.pie(x, labels=labels, colors=colors, labeldistance=1.1)
plt.title('饼状图简单示例')
plt.show()
【3x00】按角度调整扇形标签
rotatelabels
属性可以设置是否按照角度调整每块饼的 label(标签)显示方式。
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
x = [10, 30, 45, 15]
labels = ['Java', 'Go', 'Python', 'C++']
colors = ['red', 'yellow', 'blue', 'green']
# 指定4个扇区所占比例以及扇区的颜色,扇区文本标签距离扇区中心1.1,按角度调整 labels
plt.pie(x, labels=labels, colors=colors, labeldistance=1.1, rotatelabels=True)
plt.title('饼状图按角度调整 labels 示例')
plt.show()
【4x00】显示图例
与前面文章中绘制线性图、散点图、条形图一样,调用 matplotlib.pyplot.legend()
方法可绘制图例,该方法的参数解释参见前文《Python 数据分析三剑客之 Matplotlib(三):图例 / LaTeX / 刻度 / 子图 / 补丁等基本图像属性》
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
x = [10, 30, 45, 15]
labels = ['Java', 'Go', 'Python', 'C++']
colors = ['red', 'yellow', 'blue', 'green']
plt.pie(x, labels=labels, colors=colors, labeldistance=1.1)
plt.title('饼状图显示图例示例')
plt.legend(bbox_to_anchor=(1, 1))
plt.show()
【5x00】突出显示扇形块
explode
参数可以实现突出显示某一块扇区,接收数组形式的参数,这个数组中的元素个数应该是 len(x),即和扇区块的数量相同。
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
x = [10, 30, 45, 15]
labels = ['Java', 'Golang', 'Python', 'C++']
colors = ['red', 'yellow', 'blue', 'green']
# 指定第一个扇区块脱离饼图的半径大小为0.3,其它扇区不脱离
plt.pie(x, labels=labels, colors=colors, labeldistance=1.1, explode=[0.3, 0, 0, 0])
plt.title('饼状图突出显示扇形块示例')
plt.legend(bbox_to_anchor=(1, 1))
plt.show()
【6x00】显示各扇区所占百分比
autopct
参数可用于计算每个扇形块所占比例,接收字符串或者函数类型,例如:autopct='%1.1f%%'
表示浮点数,保留一位小数,并添加百分比符号。pctdistance
参数用于调整每个扇形块的中心与 autopct
生成的文本之间的距离,float 类型,默认 0.6。
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
x = [10, 30, 45, 15]
labels = ['Java', 'Golang', 'Python', 'C++']
colors = ['red', 'yellow', 'blue', 'green']
plt.pie(
x, # 每个扇形块所占比例
labels=labels, # 扇形块文本标签
colors=colors, # 扇形块颜色
labeldistance=1.1, # 扇形块标签距离中心的距离
explode=[0.3, 0, 0, 0], # 第一个扇形块突出显示
autopct='%1.1f%%', # 显示百分比,保留一位小数
pctdistance=0.5 # 百分比文本距离饼状图中心的距离
)
plt.title('饼状图显示各扇区所占百分比示例')
plt.legend(bbox_to_anchor=(1, 1)) # 显示图例
plt.show()
【7x00】旋转饼状图
startangle
参数可以选择饼状图,改变饼状图放置的角度。注意是按照逆时针旋转。
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
x = [10, 30, 45, 15]
labels = ['Java', 'Golang', 'Python', 'C++']
colors = ['red', 'yellow', 'blue', 'green']
plt.pie(
x, # 每个扇形块所占比例
labels=labels, # 扇形块文本标签
colors=colors, # 扇形块颜色
labeldistance=1.1, # 扇形块标签距离中心的距离
explode=[0.3, 0, 0, 0], # 第一个扇形块突出显示
autopct='%1.1f%%', # 显示百分比,保留一位小数
pctdistance=0.5, # 百分比文本距离饼状图中心的距离
startangle=-90 # 逆时针旋转-90°,即顺时针旋转90°
)
plt.title('饼状图旋转角度示例')
plt.legend(bbox_to_anchor=(1, 1)) # 显示图例
plt.show()
【8x00】自定义每个扇形和文字属性
wedgeprops
参数以字典形式为每个扇形添加自定义属性,例如:wedgeprops = {'linewidth': 3}
设置扇形边框线宽度为 3,更多其他参数值参见 Wedge;
textprops
参数同样以字典形式为文本对象添加自定义属性,例如:textprops={'color': 'r', 'fontsize': 15}
设置文字为红色,大小为15,更多其他参数值参见 Text。
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
x = [10, 30, 45, 15]
labels = ['Java', 'Golang', 'Python', 'C++']
colors = ['red', 'yellow', 'blue', 'green']
plt.pie(
x, # 每个扇形块所占比例
labels=labels, # 扇形块文本标签
colors=colors, # 扇形块颜色
labeldistance=1.1, # 扇形块标签距离中心的距离
explode=[0.3, 0, 0, 0], # 第一个扇形块突出显示
autopct='%1.1f%%', # 显示百分比,保留一位小数
pctdistance=0.6, # 百分比文本距离饼状图中心的距离
shadow=True, # 显示阴影效果
wedgeprops={ # 为每个扇形添加属性
'width': 0.7, # 扇形宽度0.7
'edgecolor': '#98F5FF', # 扇形边缘线颜色
'linewidth': 3 # 扇形边缘线宽度
},
textprops={ # 为文字添加属性
'fontsize': 13, # 文字大小
'fontweight': 'bold', # 文字粗细
'color': 'k' # 文字颜色,黑色
}
)
plt.title('饼状图自定义每个扇形和文字属性示例', fontweight='bold')
plt.legend(bbox_to_anchor=(1, 1), borderpad=0.6) # 显示图例
plt.show()