matplotlib可视化

一、画饼图并且解决中文乱码问题:

import matplotlib.pyplot as plt
myfont = mpl.font_manager.FontProperties(fname=r"/Users/Anne/Downloads/weuruan 2/msyh.ttf")  #fname指定字体文件  选简体显示中文#fname="本机字体路径"
mpl.rcParams['axes.unicode_minus'] = False
mpl.rcParams['font.sans-serif'] = ['SimHei']
# Pie chart, where the slices will be ordered and plotted counter-clockwise:
labels = '青Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)  # only "explode" the 2nd slice (i.e. 'Hogs')

fig1, ax1 = plt.subplots()
patches,l_text,p_text = ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
        shadow=True, startangle=90)
ax1.axis('equal',fontproperties=myfont)  # Equal aspect ratio ensures that pie is drawn as a circle.
for t in l_text: 
    t.set_fontproperties(myfont) # 把每个文本设成中文字体
plt.show()

在这里插入图片描述

import matplotlib.pyplot as plt
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.axes(aspect='equal')
plt.xlim(0,4)
plt.ylim(0,4)
patches,l_text,p_text = plt.pie(x = edu,
        explode=explode, 
        labels=labels, 
        colors=colors, 
        autopct='%.1f%%', 
        pctdistance=0.8,  
        labeldistance = 1.15,
        startangle = 180, 
        radius = 1.5,
        counterclock = False, 
        wedgeprops = {'linewidth': 1.5, 'edgecolor':'green'},
        textprops = {'fontsize':12, 'color':'k'},
        center = (1.8,1.8), 
        frame = 1
        )
plt.xticks(())

plt.yticks(())
plt.title('芝麻信用失信用户教育水平分布',fontproperties=myfont)
for t in l_text: 
    t.set_fontproperties(myfont) # 把每个文本设成中文字体
plt.show()

在这里插入图片描述

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

import matplotlib.pyplot as plt
from matplotlib import font_manager

# 中文字体准备
my_font = font_manager.FontProperties(fname="/Library/Fonts/Songti.ttc",size=16)

# 数据准备
movie_name = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它']
place_count = [60605,54546,45819,28243,13270,9945,7679,6799,6101,4621,20105]

# 显示饼图
# patches:为了得到饼图的返回值
# l_texts:饼图外标签的文本
# p_texts:饼图内部文本的
patches,l_text,p_text = plt.pie(place_count, labels=movie_name, autopct="%1.2f%%",  colors=['b', 'r', 'g', 'y', 'c', 'm', 'y', 'm', 'c', 'g', 'g'], shadow=True, startangle=90, labeldistance = 1.1, pctdistance = 0.8)
# labeldistance:文本的位置离远点有多远,1.1指1.1倍半径的位置
# autopct:圆里面的文本格式,%1.2f %%表示小数有2位,整数有1位的浮点数
# shadow:饼是否有阴影
# startAngle:起始角度为0,从0开始逆时针转,为第一块。一般选择从90度开始比较好看
# pctdistance:百分比的文本离圆心的距离

for t in l_text: 
    t.set_fontproperties(my_font) # 把每个文本设成中文字体
    
# 图形保存到该文件路径下
plt.savefig("pie.png")

# 保持饼形图圆形,保证长宽一样
plt.axis("equal")

plt.show()

在这里插入图片描述二、条形图📊
matplotlib.pyplot.rcParams#中文乱码的处理
#对坐标轴不能正确显示负号进行设置
matplotlib.pyplot.bar#绘图,依次x轴、y轴、x轴刻度标签对齐形式、填充色、填充透明度
matplotlib.pyplot.ylabel#添加轴标签
matplotlib.pyplot.title#添加标题
matplotlib.pyplot.xticks#添加刻度标签
matplotlib.pyplot.ylim#设置Y轴的刻度范围
enumerate#循环为每个条形图添加数值标签,enumerate返回x=gpd的index,y=gdp的value
matplotlib.pyplot.text(x, y, ha=)#ha函数定义水平值标签的对齐形式
matplotlib.pyplot.show()#显示图形
在这里插入图片描述

import matplotlib.pyplot as plt
import matplotlib  as mpl
myfont = mpl.font_manager.FontProperties(fname=r"/Users/Anne/Downloads/weuruan 2/msyh.ttf")  #fname指定字体文件  选简体显示中文
mpl.rcParams['axes.unicode_minus'] = False
mpl.rcParams['font.sans-serif'] = ['SimHei']
GDP = [12406.8,13908.57,9386.87,9143.64]
#plt.rcParams['font.sans-serif'] =['SimHei']
#plt.rcParams['axes.unicode_minus'] = False
plt.bar(range(4), GDP, align = 'center',color='steelblue', alpha = 0.8)
plt.ylabel('GDP',fontproperties=myfont)
plt.title('四个直辖市GDP大比拼',fontproperties=myfont)
plt.xticks(range(4),['北京市','上海市','天津市','重庆市'],fontproperties=myfont)
plt.ylim([4000,16000])
for x,y in enumerate(GDP):
    print(x)
    print(y)
    plt.text(x,y+100,'%s' %round(y,1),ha='center')
plt.show()

在这里插入图片描述

def barGrph(X,Y,Ylabel,Title,Ylim, Align ,Color, Alpha,Myfont):
    '''
    :X:横坐标数据,Y:纵坐标数据,
    Ylabel:纵坐标标签名,
    Title:标题名(图名),
    Ylim:纵坐标的刻度值范围, 
    Align:变量值位置设定 ,
    Color:bar图的颜色, 
    Alpha:透明度,
    Myfont:字体类型
    '''
    plt.bar(range(len(X.unique())), list(Y), align = Align,color=Color, alpha = Alpha)
    plt.ylabel(Ylabel,fontproperties=Myfont)
    plt.title(Title,fontproperties=Myfont)
    plt.xticks(range(len(X.unique())),list(X.unique()),fontproperties=Myfont)
    plt.ylim(Ylim)
    for x,y in enumerate(Y):
        plt.text(x,y+3000,'%s' %round(y,1),ha='center')
    plt.show()
import matplotlib.pyplot as plt
price = [39.5,39.9,45.4,38.9,33.34]
#plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
#plt.rcParams['axes.unicode_minus'] = False
plt.barh(range(5), price, align = 'center',color='steelblue', alpha = 0.8)
plt.xlabel('价格',fontproperties=myfont)
plt.title('不同平台书的最低价比较',fontproperties=myfont)
plt.yticks(range(5),['亚马逊','当当网','中国图书网','京东','天猫'],fontproperties=myfont)
plt.xlim([32,47])
for x,y in enumerate(price):
    plt.text(y+0.1,x,'%s' %y,va='center')
plt.show()
import matplotlib.pyplot as plt
import numpy as np
Y2016 = [15600,12700,11300,4270,3620]
Y2017 = [17400,14800,12000,5200,4020]
labels = ['北京','上海','香港','深圳','广州']
bar_width = 0.45
plt.bar(np.arange(5), Y2016, label = '2016', color = 'steelblue', alpha = 0.8, width = bar_width)
plt.bar(np.arange(5)+bar_width, Y2017, label = '2017', color = 'indianred', alpha = 0.8, width = bar_width)
plt.xlabel('Top5城市',fontproperties=myfont)
plt.ylabel('家庭数量',fontproperties=myfont)
plt.title('亿万财富家庭数Top5城市分布',fontproperties=myfont)
plt.xticks(np.arange(5)+bar_width,labels,fontproperties=myfont)
plt.ylim([2500, 19000])
for x2016,y2016 in enumerate(Y2016):
    plt.text(x2016, y2016+100, '%s' %y2016)
for x2017,y2017 in enumerate(Y2017):
    plt.text(x2017+bar_width, y2017+100, '%s' %y2017)
plt.legend()
# 图形保存到该文件路径下
plt.savefig("bar.png")
plt.show()

多重条形图📊
在这里插入图片描述

推叠图:

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

# 中文字体准备
my_font = font_manager.FontProperties(fname="/Library/Fonts/Songti.ttc",size=24)

date =[1,2,3,4,5]
earn=[156,356,574,300,687]
pay=[[15,30,27,43,21],[22,38,27,18,42]]

plt.stackplot(date,earn,pay, colors=['green','yellow','orange'])

plt.xlabel('time')
plt.ylabel('value')

plt.plot([],[],color='green', label="income", lineWidth=5)
plt.plot([],[],color='yellow',label="launch", lineWidth=5)
plt.plot([],[],color='orange',label="dinner", lineWidth=5)

plt.title(u'叠堆图示例——统计五天收入与支出', FontProperties=myfont)

plt.legend()
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值