python画饼图(两种偶)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

python画饼图(两种偶)
Pie(芒果派还是草莓派)
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from pylab import mpl
import seaborn as sns
mpl.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.figure(facecolor='snow')
sns.set_style("darkgrid", {"font.sans-serif": ['simhei', 'Droid Sans Fallback']})
font_size = 11
font_family = "SimHei"
font_weight = "bold"
plt.rc("font", size=font_size, family=font_family, weight=font_weight)
def myPie():
data = [1249,1462,1728,1771,978]
labels = ['2015','2016','2017','2018','2019']
explode = [0,0,0.3,0,0]
colors = ['red','hotpink','purple','orange','yellow']
plt.axes(aspect="equal") #保证正圆
plt.xlim(0,8)
plt.ylim(0,8)
plt.gca().spines['right'].set_color('white')
plt.gca().spines['top'].set_color('white')
plt.gca().spines['left'].set_color('white')
plt.gca().spines['bottom'].set_color('white')
# 绘制饼图
plt.pie(x=data, # 绘制数据
labels=labels, # 添加编程语⾔标签
explode=explode, # 突出显⽰Python
colors=colors, # 设置⾃定义填充⾊
autopct='%.2f%%', # 设置百分⽐的格式,保留2位⼩数
pctdistance=0.8, # 设置百分⽐标签和圆⼼的距离
labeldistance=1.37, # 设置标签和圆⼼的距离
startangle=160, # 设置饼图的初始⾓度
center=(4, 4), # 设置饼图的圆⼼(相当于X轴和Y轴的范围)
radius=2.6, # 设置饼图的半径(相当于X轴和Y轴的范围)
counterclock=False, # 是否为逆时针⽅向,False表⽰顺时针⽅向
wedgeprops={'linewidth': 1, 'edgecolor': 'pink'}, # 设置饼图内外边界的属性值
# textprops={'fontsize': 19, 'color': 'black', 'fontproperties': my_font}, # 设置⽂本标签的属性值
textprops={'fontsize': 10, 'color': 'black'}, # 设置⽂本标签的属性值
frame=1) # 是否显⽰饼图的圆圈,1为显⽰
# 不显⽰X轴、Y轴的刻度值
plt.xticks(())
plt.yticks(())
# 添加图形标题
# plt.title('专利分布', fontproperties=my_font)
# plt.title('distribution of Food')
# 显⽰图形
plt.show()
fig.savefig('res/pic/4.png')
def axPie():
fig, ax = plt.subplots(figsize=(8, 4), subplot_kw=dict(aspect="equal"))
recipe = ['2015y 1249',
'2016y 1462',
'2017y 1728',
'2018y 1771',
'2019y 978']
data = [1249,1462,1728,1771,978]
"""
参数wedgeprops以字典形式传递,设置饼图边界的相关属性,例如圆环宽度0.5
饼状图默认从x轴正向沿逆时针绘图,参数startangle可指定新的⾓(例如负40度)度起画
"""
wedges, texts = ax.pie(data, wedgeprops=dict(width=0.5), startangle=-40)
# 创建字典bbox_props,设置⽂本框的边框样式(boxstyle:⽅框,pad设置⽅框尺⼨)、前景⾊(fc)为⽩⾊(w)、边框颜⾊(ec)为⿊⾊(k)、线粗(lw)为0.72 bbox_props = dict(boxstyle="square,pad=0.3", fc="w", ec="k", lw=0.72)
"""
参数集kw以字典形式传递,包含⼀系列⽤于绘图标注的指定参数
xycoords⽤于指定点xy的坐标环境,xycoords='data'表⽰沿⽤被注释的对象所采⽤的坐标系(默认设置)
textcoords⽤于指定点xytext的坐标环境,textcoords='data'表⽰沿⽤被注释的对象所采⽤的坐标系(默认设置)
参数arrowprops以字典形式传递,⽤于控制箭头的诸多属性,如箭头类型(arrowstyle)、箭头连接时的弯曲程度(connectionstyle) """
kw = dict(xycoords='data', textcoords='data', arrowprops=dict(arrowstyle="-"),
bbox=bbox_props, zorder=0, va="center")
for i, p in enumerate(wedges): # 遍历每⼀个扇形
ang = (p.theta2 - p.theta1) / 2. + p.theta1 # 锁定扇形夹⾓的中间位置,对应的度数为ang
# np.deg2rad(x)将度数x转为弧度(x*pi)/180
y = np.sin(np.deg2rad(ang)) # np.sin()求正弦
x = np.cos(np.deg2rad(ang)) # np.cos()求余弦
"""
np.sign()符号函数:⼤于0返回1.0,⼩于0返回-1.0,等于0返回0.0
参数horizontalalignment⽤于设置垂直对齐⽅式,可选参数:left、right、center
当余弦值x⼤于0(即标签在饼图右侧时,按框左侧对齐)时,horizontalalignment="left"
当余弦值x⼩于0(即标签在饼图左侧时,按框右侧对齐)时,horizontalalignment="right"
"""
horizontalalignment = {-1: "right", 1: "left"}[int(np.sign(x))]
connectionstyle = "angle,angleA=0,angleB={}".format(ang) # 参数connectionstyle⽤于控制箭头连接时的弯曲程度
kw["arrowprops"].update({"connectionstyle": connectionstyle}) # 将connectionstyle更新⾄参数集kw的参数arrowprops中"""
⽤⼀个箭头/横线指向要注释的地⽅,再写上⼀段话的⾏为,叫做annotate
ax.annotate()⽤于对已绘制的图形做标注
recipe[i]是第i个注释⽂本
size设置字体⼤⼩
xy=(x1, y1)表⽰在给定的xycoords中,被注释对象的坐标点
xytext=(x2, y2)表⽰在给定的textcoords中,注释⽂本的坐标点
"""
ax.annotate(recipe[i], size=15, xy=(x, y), xytext=(1.35 * np.sign(x), 1.4 * y),
horizontalalignment=horizontalalignment, **kw)
ax.set_title("")
plt.show()
fig.savefig('res/pic/3.png')
if__name__ == "__main__":
# drawLineStyle()
# axPie()
myPie()
myPie:
axPie:。

相关文档
最新文档