效果图:
主要步骤:
1. 数据准备:随机赋值的数据
2. 图像绘制:绘制单环形图和多环形图
详细代码:着急的直接拖到最后有完整代码
步骤一:导入库包及图片存储路径并设置中文字体为宋体,西文为新罗马(没有的库包要先下好奥)
###############################################################################
# 导入库及文件
import matplotlib.pyplot as plt
from matplotlib import rcParams
import numpy as np
config = {
"font.family": 'serif',
"font.size": 12,
"mathtext.fontset": 'stix',
"font.serif": ['SimSun'],
}
rcParams.update(config)
rcParams['axes.unicode_minus']=False
步骤二:赋值数据
###############################################################################
figpath = r'H:/00.csdn/02fig/'
data = np.array([[60., 32.], [37., 40.], [29., 10.]])
label = ['a', 'b', 'c', 'd', 'e', 'f']
color = ['#E9BAA4', '#89BDCC', '#7B86A3', '#B6D8CB', '#AD9A85',
'#AEB3C6', '#D57F70', '#89BDCC', '#64AA9A']
步骤三:绘制环形图A
###############################################################################
# 绘制图像环图A
fig = plt.figure(figsize=(8, 8)) # 创建画布
ax = fig.add_axes([0.1, 0.6, 0.6, 0.4]) # 安排子图位置
# data:所绘制的数据
# labels:数据的标签,这里不显示
# colors:饼图颜色
# autopct:饼图百分数保留的位数
# pctdistance:百分数位置
# explode:选择哪一块突出显示
# radius:饼图半径
# textprops:饼图中文本的字号及颜色
# wedgeprops:设置环图半径及边缘颜色
wedges, text, autotexts = ax.pie(np.sum(data, axis=1),
labels=['A', 'B' ,'C'],
colors=color,
autopct='%1.2f%%',
pctdistance=0.8,
# explode=[0, 0.1, 0, 0, 0, 0],
radius=1,
textprops={'size':10, 'color':'k'},
wedgeprops=dict(width=0.4, edgecolor='w')
)
help(ax.pie)
# 绘制图例及标题
# ax.legend(wedges, label, loc="right", bbox_to_anchor=(0.9,0,0.3,1))
ax.set_title('环图A')
步骤四:绘制环形图B
###############################################################################
# 绘制图像环图B
ax1 = fig.add_axes([0.5, 0.6, 0.6, 0.4]) # 安排子图位置
wedges, text, autotexts = ax1.pie(np.sum(data, axis=1),
labels=['A', 'B' ,'C'],
colors=color,
autopct='%1.2f%%',
pctdistance=0.8,
# explode=[0, 0.1, 0, 0, 0, 0],
radius=1,
textprops={'size':10, 'color':'k'},
wedgeprops=dict(width=0.4, edgecolor='w')
)
wedges, text, autotexts = ax1.pie(data.flatten(),
labels=None,
colors=color,
autopct='%1.2f%%',
pctdistance=0.75,
# explode=[0, 0.1, 0, 0, 0, 0],
radius=0.6,
textprops={'size':10, 'color':'k'},
wedgeprops=dict(width=0.3, edgecolor='w')
)
# ax.pie(vals.flatten(), radius=1-size, colors=inner_colors,
# wedgeprops=dict(width=size, edgecolor='w'))
# 绘制图例及标题
# ax1.legend(wedges, label, loc="right", bbox_to_anchor=(0.9,0,0.3,1))
ax1.set_title('环图B')
步骤五:保存图像
################################################################################
# 输出并保存图像
plt.savefig(figpath+'011 环状图.png', bbox_inches = 'tight', dpi=600, format='png')
plt.show()
完整代码在这里:
###############################################################################
# 导入库及文件
import matplotlib.pyplot as plt
from matplotlib import rcParams
import numpy as np
config = {
"font.family": 'serif',
"font.size": 12,
"mathtext.fontset": 'stix',
"font.serif": ['SimSun'],
}
rcParams.update(config)
rcParams['axes.unicode_minus']=False
###############################################################################
figpath = r'H:/00.csdn/02fig/'
data = np.array([[60., 32.], [37., 40.], [29., 10.]])
label = ['a', 'b', 'c', 'd', 'e', 'f']
color = ['#E9BAA4', '#89BDCC', '#7B86A3', '#B6D8CB', '#AD9A85',
'#AEB3C6', '#D57F70', '#89BDCC', '#64AA9A']
###############################################################################
# 绘制图像环图A
fig = plt.figure(figsize=(8, 8)) # 创建画布
ax = fig.add_axes([0.1, 0.6, 0.6, 0.4]) # 安排子图位置
# data:所绘制的数据
# labels:数据的标签,这里不显示
# colors:饼图颜色
# autopct:饼图百分数保留的位数
# pctdistance:百分数位置
# explode:选择哪一块突出显示
# radius:饼图半径
# textprops:饼图中文本的字号及颜色
# wedgeprops:设置环图半径及边缘颜色
wedges, text, autotexts = ax.pie(np.sum(data, axis=1),
labels=['A', 'B' ,'C'],
colors=color,
autopct='%1.2f%%',
pctdistance=0.8,
# explode=[0, 0.1, 0, 0, 0, 0],
radius=1,
textprops={'size':10, 'color':'k'},
wedgeprops=dict(width=0.4, edgecolor='w')
)
help(ax.pie)
# 绘制图例及标题
# ax.legend(wedges, label, loc="right", bbox_to_anchor=(0.9,0,0.3,1))
ax.set_title('环图A')
###############################################################################
# 绘制图像环图B
ax1 = fig.add_axes([0.5, 0.6, 0.6, 0.4]) # 安排子图位置
wedges, text, autotexts = ax1.pie(np.sum(data, axis=1),
labels=['A', 'B' ,'C'],
colors=color,
autopct='%1.2f%%',
pctdistance=0.8,
# explode=[0, 0.1, 0, 0, 0, 0],
radius=1,
textprops={'size':10, 'color':'k'},
wedgeprops=dict(width=0.4, edgecolor='w')
)
wedges, text, autotexts = ax1.pie(data.flatten(),
labels=None,
colors=color,
autopct='%1.2f%%',
pctdistance=0.75,
# explode=[0, 0.1, 0, 0, 0, 0],
radius=0.6,
textprops={'size':10, 'color':'k'},
wedgeprops=dict(width=0.3, edgecolor='w')
)
# ax.pie(vals.flatten(), radius=1-size, colors=inner_colors,
# wedgeprops=dict(width=size, edgecolor='w'))
# 绘制图例及标题
# ax1.legend(wedges, label, loc="right", bbox_to_anchor=(0.9,0,0.3,1))
ax1.set_title('环图B')
###############################################################################
# 输出并保存图像
plt.savefig(figpath+'011 环状图.png', bbox_inches = 'tight', dpi=600, format='png')
plt.show()