python饼图设置图例位置_【matplotlib】饼图+legend()、loc、color位置颜色图例中文显示(一个饼图的例子)...

本文详细介绍了如何使用matplotlib库在Python中创建饼图,并重点讲解了如何设置图例位置,包括'best'、'upper right'等选项。同时,文章还演示了如何解决饼图中文显示问题,以及调整颜色、添加阴影和百分比显示的方法。通过几个实例,逐步展示了饼图的改进过程,包括修改文字颜色、调整图形大小和改变文本大小等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

45febe08ba6a?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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()

45febe08ba6a?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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()

45febe08ba6a?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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()

45febe08ba6a?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image

参考资料:

### 回答1: 可以使用`plt.legend()`函数来设置图例,具体步骤如下: 1. 在绘制时,通过`labels`参数设置每个数据的标签; 2. 在`plt.legend()`函数中,通过`labels`参数设置每个标签的名称。 下面是一个简单的示例代码: ```python import matplotlib.pyplot as plt # 数据和标签 data = [10, 30, 20, 40] labels = ['A', 'B', 'C', 'D'] # 绘制 plt.pie(data, labels=labels) # 设置图例 plt.legend(labels) # 显示形 plt.show() ``` 运行代码后,会得到一个带有图例。你可以根据自己的需求调整图例位置、字体大小等属性。 ### 回答2: 在Python中,我们可以使用matplotlib库来绘制,并且还可以通过设置图例来标识每个扇形所代表的数据。 首先,我们需要导入matplotlib库: ```python import matplotlib.pyplot as plt ``` 接下来,我们可以使用`plt.pie()`函数绘制。该函数接受两个参数:数据和标签。数据表示各个扇形所占比例的列表,而标签则是与数据对应的字符串列表。 例如,假设我们有四个扇形,它们的数据分别是30,40,10和20,对应的标签分别是'A','B','C'和'D'。我们可以这样绘制: ```python data = [30, 40, 10, 20] labels = ['A', 'B', 'C', 'D'] plt.pie(data, labels=labels) ``` 如果我们希望在的右侧显示图例,我们可以使用`plt.legend()`函数。该函数可以接受多个参数,其中`loc`表示图例位置,`bbox_to_anchor`表示图例的锚点,`title`表示图例的标题。 例如,我们可以将图例放置在右侧,并设置图例的标题为'Legend': ```python plt.legend(loc='center right', bbox_to_anchor=(1.2, 0.5), title='Legend') ``` 最后,我们可以使用`plt.show()`函数显示图例: ```python plt.show() ``` 通过以上步骤,我们就可以在Python中使用matplotlib库绘制,并设置图例来标识每个扇形所代表的数据。 ### 回答3: 要设置Python图例,可以使用Matplotlib库中的legend()函数。首先,我们需要导入所需的库: ```python import matplotlib.pyplot as plt ``` 接下来,我们创建一个的示例数据: ```python labels = ['A', 'B', 'C', 'D'] sizes = [15, 30, 45, 10] ``` 然后,我们使用`plt.pie()`函数创建,并设置标签和比例: ```python plt.pie(sizes, labels=labels) ``` 现在,我们可以使用`plt.legend()`函数来添加图例。当我们设置时,会在`plt.pie()`函数中指定`labels`参数,它们将自动用作图例的标签。我们只需调用`plt.legend()`函数即可在中添加图例: ```python plt.legend() ``` 完整的代码示例如下所示: ```python import matplotlib.pyplot as plt labels = ['A', 'B', 'C', 'D'] sizes = [15, 30, 45, 10] plt.pie(sizes, labels=labels) plt.legend() plt.show() ``` 运行代码后,将会显示一个带有图例图例显示每个数据标签的名称,帮助读者了解中每个扇形区域所代表的含义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值