【Python数据可视化】用Matplotlib绘制常见统计图,中文显示字体任意设置

本文详细介绍了如何使用Matplotlib进行数据可视化,包括绘制折线图、散点图、条形图、饼图、直方图等各种图表,并提供中文显示字体设置的方法,同时涵盖了一图多线、坐标轴移动等高级技巧,帮助读者提升Python数据可视化的技能。
摘要由CSDN通过智能技术生成


  Matplotlib是一个Python2D绘图库,它可用于Python脚本、Python和IPython shell、JupyterNotebook、Web应用程序服务器和四个图形用户界面工具包。
  Matplotlib绘图非常方便,只需几行代码即可生成直方图、饼图、散点图等常见图形。
  本文主要总结了Matplotlib绘图中的一些常用方法,把用Matplotlib绘制常见统计图做一个汇总,解决了中文字符无法正常显示问题,并可以根据需要一张图显示不同字体。

一、对Matplotlib图形结构的认识

在这里插入图片描述
  通常,可将一张Matplotlib图像分成三层结构:
  第一层:底层容器曾,主要包括Canvas、Figure、Axes;
  第二层:辅助显示层,主要包括axis、spines、grid、legend、title等;
  第三层:图像层,即通过plot、scatter等方法绘制的图像。

二、Matplotlib绘图设置主要方法

1、Matplotlib绘制普通折线图

  使用默认设置生成的折线图,缺乏美感。下面就来一步步的美化。
  说一下,可以不加%matplotlib inline 这一句,如果不加这一句,只是首次启动jupyternotebook需要运行两次才会显示出图像,后面都正常。

from matplotlib import pyplot as plt
%matplotlib inline   

x = range(1,8) # x轴的位置
y = [17, 17, 18, 15, 11, 11, 13]
plt.plot(x,y)
plt.show()

在这里插入图片描述

(1) 设置折现颜色、形状、折点样式

x = range(1,8) # x轴的位置
y = [17, 17, 18, 15, 11, 11, 13]
plt.plot(x,y,color='red',alpha=0.5,linewidth=3,linestyle=':',marker='*',markersize='20',markeredgecolor='g',markeredgewidth = 2)
plt.show()

color=‘red’:折线颜色
alpha=0.5:折线透明度(0-1)
linewidth=3:折线宽度
linestyle=’:’:折线线的样式
marker=’*’:折点样式
markersize=‘20’:折点大小
markeredgecolor=‘g’:折点边缘颜色
markeredgewidth = 2:折点边缘线宽度

在这里插入图片描述

(2) 设置图片大小并保存

from matplotlib import pyplot as plt
import random
x = range(2,28,2)
y = [random.randint(15,30) for i in x]

#设置图片大小
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)
#plt.show()
#保存图片
plt.savefig('./t1.png')

figsize:指定figure的宽和高,单位为英寸;
dpi:图画的分辨率,缺省值为80
注意:保存要放在绘制的下面,并且plt.show()会释放figure资源,如果在plt.show()之后保存图片,将只能保存空图片。
图片也可以保存成svg这种矢量图格式,这种矢量图在网页中放大后不会有锯齿。

(3) 绘制x轴和y轴的刻度

坐标轴刻度不用x、y的默认值,可用plt.xticks()、plt.yticks()来设置,其中rotation=45是让文字旋转45度

from matplotlib import pyplot as plt
import random
x = range(2,15,2)
y = [random.randint(15,30) for i in x]

#设置图片大小
plt.figure(figsize=(10,8),dpi=80)

#构造x轴刻度标签
x_ticks_label = ['{};00'.format(i) for i in x]
plt.xticks(x,x_ticks_label,rotation = 45)
#设置y轴刻度标签
y_ticks_label = ['{}℃'.format(i) for i in range(min(y),max(y)+1)]
plt.yticks(range(min(y),max(y)+1),y_ticks_label)

#绘图
plt.plot(x,y)
plt.show()

在这里插入图片描述

(4) 中文正常显示设置

  matplotlib只显示英文,中文显示为‘口’,网上常见的设置方法都过于复杂,比较实用的一种方法是
  plt.rcParams[‘font.sans-serif’]=[‘SimHei’] # 用来正常显示中文标签
  plt.rcParams[‘axes.unicode_minus’]=False # 用来正常显示负号
  但是这种设置出的中文通篇都是一种字体,无法个性化设置,比如标题一种字体,轴坐标一种字体。

  我的方法可以设置多个字体、字号,只需要过matplotlib下的font_manager就可以解决。
  首先通过路径“C:\Windows\Fonts\”查看自己Windows下的字体。
  再通过font_manager.FontProperties()设置字体属性:
my_font = font_manager.FontProperties(fname=‘C:\Windows\Fonts\msyh.ttc’,size=20)
  最后,设置坐标轴刻度的fontproperties属性:plt.xticks(x,fontproperties=my_font)

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

my_font = font_manager.FontProperties(fname='C:\Windows\Fonts\msyh.ttc',size=20)
my_font1 = font_manager.FontProperties(fname='C:\Windows\Fonts\STCAIYUN.TTF',size=25)


x = range(2,14,2)
y = [random.randint(15,30) for i in x]
plt.figure(figsize=(8,4),dpi=80)

#设置X轴的刻度
x_ticks_label = ['2月{}日'.format(i) for i in x]
plt.xticks(x,x_ticks_label,fontproperties=my_font)
#设置Y轴的刻度
y_ticks_label = ['{}℃'.format(i) for i in range(min(y),max(y)+1)]
plt.yticks(range(min(y),max(y)+1,2),y_ticks_label,size=20)

plt.plot(x,y,marker='o')
plt.title('近10天最高温度',fontproperties = my_font1)
plt.show()

在这里插入图片描述

(5) 一图多线

  通过使用多次plt.plot()达到一图多线目的:
  plt.plot(x,y1,label=‘我’)
  plt.plot(x,y2,label=‘同事’)

  添加图例用plt.lengend()
注意:只有在图例里添加prop参数是显示中文,其他都是用fontproperties参数。loc:设置位置,有upper left、lower left、center left、upper center

import matplotlib.pyplot as plt
from matplotlib import font_manager
import random
my_font = font_manager.FontProperties(fname='C:\Windows\Fonts\msyh.ttc',size=20)

x = range(11
  • 4
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值