美文网首页呆鸟的Python数据分析编程-Python
【matplotlib】饼图+legend()、loc、colo

【matplotlib】饼图+legend()、loc、colo

作者: 明日孤风寒 | 来源:发表于2019-04-18 10:14 被阅读0次

legend()

关键就是在于这里:添加一个图例
plt.legend(loc='best')

调试图例的位置

  • 在legend的参数中, loc参数设置图例的显示位置的:
 plt.legend([l1, l2], ['first', 'second'], loc = 'upper right')             #其中,loc表示位置的;
'best'         : 0, (only implemented for axes legends)(自适应方式)
'upper right'  : 1,
'upper left'   : 2,
'lower left'   : 3,
'lower right'  : 4,
'right'        : 5,
'center left'  : 6,
'center right' : 7,
'lower center' : 8,
'upper center' : 9,
'center'       : 10,
  • 显示中文,中文的格式、显示负号
#coding:utf-8
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
#有中文出现的情况,需要u'内容'
labels = u'男性好友', u'女性好友', u'未填性别'
下面是Windows的字体对应名称,Follow your heart, 各种换!
黑体  SimHei
微软雅黑    Microsoft YaHei
微软正黑体   Microsoft JhengHei
新宋体 NSimSun
新细明体    PMingLiU
细明体 MingLiU
标楷体 DFKai-SB
仿宋  FangSong
楷体  KaiTi
仿宋_GB2312   FangSong_GB2312
楷体_GB2312   KaiTi_GB2312
  • 颜色,显示颜色
colors = ['red','yellowgreen','lightskyblue']
plt.pie(sizes,explode=explode,labels=labels,colors=colors,
         labeldistance = 1.1,autopct = '%3.1f%%',shadow = False,
         startangle = 90,pctdistance = 0.6)
image
  • 第一次改进(改进了图形颜色,并添加了图例)
# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
 
#显示中文  YaHei  JhengHei
plt.rcParams['font.sans-serif']=['Microsoft JhengHei']
 
male = 70
female = 20
other = 10
total = 100
 
# Pie chart, where the slices will be ordered and plotted counter-clockwise:
labels =[ u'男性', u'女性', u'未填']
sizes = [male,female,other]
colors = ['cornflowerblue','orange','limegreen']
explode = (0, 0.1, 0)
 
 
fig1, ax1 = plt.subplots()
 
'''ax1.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%',
        shadow=True, startangle=90)'''
#相对于,去掉了阴影shadow=True
 
ax1.pie(sizes, explode=explode, labels=labels, colors=colors,
        autopct='%1.1f%%', shadow=False, startangle=90)
ax1.axis('equal')  # Equal aspect ratio ensures that pie is drawn as a circle.
# 关键就是在于这里:添加一个图例
plt.legend(loc='upper right')
plt.show()

image
  • 第二次改进(改进了文字颜色)

from matplotlib import pyplot as plt 
 
#调节图形大小,宽,高
plt.figure(figsize=(6,9))
#定义饼状图的标签,标签是列表
labels = [u'第一部分',u'第二部分',u'第三部分']
#每个标签占多大,会自动去算百分比
sizes = [60,30,10]
colors = ['red','yellowgreen','lightskyblue']
#将某部分爆炸出来, 使用括号,将第一块分割出来,数值的大小是分割出来的与其他两块的间隙
explode = (0.05,0,0)
 
patches,l_text,p_text = plt.pie(sizes,explode=explode,labels=labels,colors=colors,
                                labeldistance = 1.1,autopct = '%3.1f%%',shadow = False,
                                startangle = 90,pctdistance = 0.6)
 
#labeldistance,文本的位置离远点有多远,1.1指1.1倍半径的位置
#autopct,圆里面的文本格式,%3.1f%%表示小数有三位,整数有一位的浮点数
#shadow,饼是否有阴影
#startangle,起始角度,0,表示从0开始逆时针转,为第一块。一般选择从90度开始比较好看
#pctdistance,百分比的text离圆心的距离
#patches, l_texts, p_texts,为了得到饼图的返回值,p_texts饼图内部文本的,l_texts饼图外label的文本
 
#改变文本的大小
#方法是把每一个text遍历。调用set_size方法设置它的属性
for t in l_text:
    t.set_size=(30)
for t in p_text:
    t.set_size=(20)
# 设置x,y轴刻度一致,这样饼图才能是圆的
plt.axis('equal')
plt.legend()
plt.show()
image
  • 补充第二个例子
    饼图的绘制可以使用matplotlib库中的pie函数

plt.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)
 
 
x:指定绘图的数据;
 
explode:指定饼图某些部分的突出显示,即呈现爆炸式;
 
labels:为饼图添加标签说明,类似于图例说明;
 
colors:指定饼图的填充色;
 
autopct:自动添加百分比显示,可以采用格式化的方法显示;
 
pctdistance:设置百分比标签与圆心的距离;
 
shadow:是否添加饼图的阴影效果;
 
labeldistance:设置各扇形标签(图例)与圆心的距离;
 
startangle:设置饼图的初始摆放角度;
 
radius:设置饼图的半径大小;
 
counterclock:是否让饼图按逆时针顺序呈现;
 
wedgeprops:设置饼图内外边界的属性,如边界线的粗细、颜色等;
 
textprops:设置饼图中文本的属性,如字体大小、颜色等;
 
center:指定饼图的中心点位置,默认为原点
 
frame:是否要显示饼图背后的图框,如果设置为True的话,需要同时控制图框x轴、y轴的范围和饼图的中心位置

# 导入第三方模块
import matplotlib.pyplot as plt
 
# 设置绘图的主题风格(不妨使用R中的ggplot分隔)
plt.style.use('ggplot')
 
# 构造数据
edu = [0.2515,0.3724,0.3336,0.0368,0.0057]
labels = ['中专','大专','本科','硕士','其他']
 
explode = [0,0.1,0,0,0]  # 用于突出显示大专学历人群
colors=['#9999ff','#ff9999','#7777aa','#2442aa','#dd5555'] # 自定义颜色
 
# 中文乱码和坐标轴负号的处理
plt.rcParams['font.sans-serif'] = ['Dengxian']
plt.rcParams['axes.unicode_minus'] = False
 
# 将横、纵坐标轴标准化处理,保证饼图是一个正圆,否则为椭圆
plt.axes(aspect='equal')
 
# 控制x轴和y轴的范围
plt.xlim(0,5)
plt.ylim(0,5)
 
# 绘制饼图
plt.pie(x = edu, # 绘图数据
        explode=explode, # 突出显示大专人群
        labels=labels, # 添加教育水平标签
        colors=colors, # 设置饼图的自定义填充色
        autopct='%.1f%%', # 设置百分比的格式,这里保留一位小数
        pctdistance=0.8,  # 设置百分比标签与圆心的距离
        labeldistance = 1.4, # 设置教育水平标签与圆心的距离
        startangle = 180, # 设置饼图的初始角度
        radius = 1.5, # 设置饼图的半径
        counterclock = False, # 是否逆时针,这里设置为顺时针方向
        wedgeprops = {'linewidth': 1.5, 'edgecolor':'black'},# 设置饼图内外边界的属性值
        textprops = {'fontsize':12, 'color':'k'}, # 设置文本标签的属性值
        center = (2.5, 2.5), # 设置饼图的原点
        frame = 1 )# 是否显示饼图的图框,这里设置显示
 
# 删除x轴和y轴的刻度
plt.xticks(())
plt.yticks(())
# 添加图标题
plt.title('芝麻信用失信用户教育水平分布')
 
# 显示图形
plt.show()
image

参考资料:

matplotlib中的legend()——用于显示图例
https://www.cnblogs.com/yinheyi/p/6792120.html

知乎视角下的清华2017
https://mp.weixin.qq.com/s/UsMT9H__wFQ3RYBU7wpiQQ

python如何在matplotlib中绘制图例legend?
https://jingyan.baidu.com/article/f00622280d3cd5fbd3f0c8ff.html

python_使用matplotlib画饼状图(pie)
https://www.jianshu.com/p/0a76c94e9db7

matplotlib中的legend()——用于显示图例
https://www.cnblogs.com/yinheyi/p/6792120.html

转载自CSDN

相关文章

网友评论

    本文标题:【matplotlib】饼图+legend()、loc、colo

    本文链接:https://www.haomeiwen.com/subject/kxqzwqtx.html