主要参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
plt.pie( x, # 各扇形的数值 explode=None, # 爆炸分离显示与否,通过bool array指定 labels=None, # 显示的标签 colors=None, autopct=None, # 自动计算百分比并按格式显示,例如'%.2f%%'时显示为23.45% pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, # 数据放置默认按逆时针 wedgeprops=None, # 扇形参数 textprops=None, # 可以通过dict传入字体设置参数 center=(0, 0), frame=False, rotatelabels=False, *, normalize=None, data=None, ) |
设置填充(用于科研绘图)
这里利用的主要时pyplot的实例化思想,单独修改某个参数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# 内置的填充种类 patterns = ('/','//','-', '+', 'x', '\\', '\\\\', '*', 'o', 'O', '.') ax.cla() fig_nested_pie, ax = plt.subplots(figsize=(16,8)) size = 0.3 FS = 14 PD = 0.85 cmap = plt.get_cmap('tab20') outer_colors = cmap(np.arange(4)*2) inner_colors = cmap(np.arange(4)*2+1) wedge_dic = dict(width=size,edgecolor='w') font_dic = dict(fontsize=FS,weight='bold') wedges_num,texts_num,autotexts_num = ax.pie(x=list(sec_counts.values()),autopct='%.2f%%',shadow=False, colors=inner_colors,textprops=font_dic,wedgeprops=wedge_dic,pctdistance=PD,radius=1-size) # 此处利用了ax.pie返回的第一个参数是wedges的特点 wedges_loss,texts_loss,autotexts_loss = ax.pie(x=list(loss_counts.values()),radius=1,autopct='%.2f%%',shadow=False,textprops=font_dic,colors=outer_colors,wedgeprops=wedge_dic,pctdistance=PD) lgd_num = ax.legend(handles=wedges_num,labels=sec_counts.keys(),title='Num Counts',loc='lower right',fontsize='x-large') ax.add_artist(lgd_num) # 添加到画布,实现一图双legend ax.legend(handles=wedges_loss,labels=loss_counts.keys(),title='Loss Counts',loc='upper right',fontsize='x-large') |
此时的效果
还可以进一步设置图像填充
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 面向对象的设置填充 hatches=['/','//','-', '+'] for wedge,hatch in zip(wedges_num,hatches): wedge.set_hatch(hatch) # 设置边界颜色 for wedge in wedges_num: wedge.set_edgecoler('k') # 设置legend title大小 egend.get_title().set_fontsize(fontsize=18) # 移除多于的legend ax.artists.clear() |
效果图
图例legend设置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
legend(loc # Location code string, or tuple (see below). # 图例所有figure位置。 labels # 标签名称。 prop # the font property. # 字体参数 fontsize # the font size (used only if prop is not specified). # 字号大小。 markerscale # the relative size of legend markers vs. # original 图例标记与原始标记的相对大小 markerfirst # If True (default), marker is to left of the label. # 如果为True,则图例标记位于图例标签的左侧 numpoints # the number of points in the legend for line. # 为线条图图例条目创建的标记点数 scatterpoints # the number of points in the legend for scatter plot. # 为散点图图例条目创建的标记点数 scatteryoffsets # a list of yoffsets for scatter symbols in legend. # 为散点图图例条目创建的标记的垂直偏移量 frameon # If True, draw the legend on a patch (frame). # 控制是否应在图例周围绘制框架 fancybox # If True, draw the frame with a round fancybox. # 控制是否应在构成图例背景的FancyBboxPatch周围启用圆边 shadow # If True, draw a shadow behind legend. # 控制是否在图例后面画一个阴影 framealpha # Transparency of the frame. # 控制图例框架的 Alpha 透明度 edgecolor # Frame edgecolor. facecolor # Frame facecolor. ncol # number of columns. # 设置图例分为n列展示 borderpad # the fractional whitespace inside the legend border. # 图例边框的内边距 labelspacing # the vertical space between the legend entries. # 图例条目之间的垂直间距 handlelength # the length of the legend handles. # 图例句柄的长度 handleheight # the height of the legend handles. # 图例句柄的高度 handletextpad # the pad between the legend handle and text. # 图例句柄和文本之间的间距 borderaxespad # the pad between the axes and legend border. # 轴与图例边框之间的距离 columnspacing # the spacing between columns. # 列间距 title # the legend title. # 图例标题 bbox_to_anchor # the bbox that the legend will be anchored. # 指定图例在轴的位置 bbox_transform) # the transform for the bbox. # transAxes if None. |
tips:
个人推荐输出纯色填充图像后再用AI修改,更加直观快捷。
Official Docs
https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.pie.html