天天看點

python餅圖設定圖例位置_【matplotlib】餅圖+legend()、loc、color位置顔色圖例中文顯示(一個餅圖的例子)...

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)

python餅圖設定圖例位置_【matplotlib】餅圖+legend()、loc、color位置顔色圖例中文顯示(一個餅圖的例子)...

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

python餅圖設定圖例位置_【matplotlib】餅圖+legend()、loc、color位置顔色圖例中文顯示(一個餅圖的例子)...

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

python餅圖設定圖例位置_【matplotlib】餅圖+legend()、loc、color位置顔色圖例中文顯示(一個餅圖的例子)...

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

python餅圖設定圖例位置_【matplotlib】餅圖+legend()、loc、color位置顔色圖例中文顯示(一個餅圖的例子)...

image

參考資料: