Matplotlib之基础语句与绘图

mac2025-08-12  9

Matplotlib的基础语句与绘图

1、matplotlib是什么

2、matplotlib的步骤和方法

3、matlab常用的几种绘图功能

1、matplotlib是什么

Matplotlib是一个python的2D绘图库,是比较流行的底层绘图库。 Matplotlib库模仿MATALAB,所以部分的语言语法及规范和MATLAB相同。 Matplotlib主要用于数据可视化,可以直观表现数据信息,使得数据更加具体,容易理解。 Matplotlib可以绘制各种各样的数据图形,基本常用的是折线图、散点图、柱状图(条形图)、直方图等

2、matplotlib的基础步骤和方法

2.1、绘图步骤

导入绘图模块(matplotlib.pyplot)设置图片的大小和分辨率等参数(plt.figure())绘制图形并显示(plt.plot(x,y))设置x,y轴的坐标刻度(plt.xticks(),plt.yticks())设置图的标题(plt.title())、x轴标签(plt.xlable())、y轴标签(plt.ylabel())图片描述和标记(plt.legend())设置字体(matplotlib.font_manager.FontProperties())保存图片(plt.savefig())

2.2 绘制简单图形

import numpy as np import matplotlib.pyplot as plt #x轴 x=np.arange(0,5,0.1) #y轴 y=np.sin(x) #绘制图形 plt.plot(x,y) plt.show(

2.3设置图片大小、数值型坐标刻度并保存图片

from matplotlib import pyplot as plt x=range(2,27,2) y=[15,13,14,5,17,28,25,26,26,24,22,18,15] #设置图片大小(figsize)和像素(dpi),figure表示轮廓图(或画布) #可以实例化一个figure对象并传递参数,之后该实例增加或修改参数或是供其他函数调用 fig=plt.figure(figsize=(20,8),dpi=80) #设置x轴的坐标刻度 plt.xticks(range(2,26)) #绘制图形 plt.plot(x,y) #保存图片,'./matfig1.png'为保存路径,图片的存储格式为png. plt.savefig('./matfig1.png') plt.show()

2.4 设置中文字体、设置坐标轴的非数值型坐标刻度和增加图片标签

2.4.1设置图片中的中文字体

默认情况下matplotlib不支持中文字符,所以要注意设置中文字体 (1)首先查找本机字体存储位置 linux/mac/window下查找本机字体存储地址:

fc-list %查找所有字体存储地址 fc-list :lang=zh %查看中文字体存储地址(冒号前有空格)

(2)选择一个中文字体存储地址,在程序中加载字体

from matplotlib import font_manager my_font=font_manager.FontProperties(fname="C:/WINDOWS/fonts/msyhl.ttc")

2.4.2 设置坐标轴(x,y)的坐标刻度和增加图片标签

(1)画出一个在10时、11时温度随着时间变化的折线图

from matplotlib import pyplot as plt import random from matplotlib import font_manager #1、一种使用matplotlib.rc模块设定字体的方法 #import matplotlib #font={'family':'Microsoft YaHei', # 'weight':'bold', # 'size':'large'} #matplotlib.rc["font",**font] #matplotlib.rc["font",family='Microsoft YaHei',weight='bold'] #2、第二种利用matplotlib.font_manager设置字体的方法 my_font=font_manager.FontProperties(fname="C:/WINDOWS/fonts/msyhl.ttc") x=range(120) y=[random.randint(20,35) for i in range(120)] plt.figure(figsize=(20,8),dpi=80) plt.plot(x,y) #设置x轴的非数值型坐标刻度, _x=list(x) #设置10时、11时的以分钟为间隔的时间刻度序列 _xtick_labels =["10时{}分".format(i) for i in range(60)] _xtick_labels += ["11时{}分".format(i) for i in range(60)] #用时间刻度序列替换数值型刻度序列,::3稀疏坐标刻度(坐标间隔拓宽为3分钟) #rotation调整刻度值的旋转角度,fontproperties设置刻度值的字体 plt.xticks(_x[::3],_xtick_labels[::3],rotation=45,fontproperties=my_font) #设置x轴、y轴标签和图片标题,fontproperties设置中文字体 plt.xlabel("时间",fontproperties=my_font) plt.ylabel("温度",fontproperties=my_font) plt.title("温度随时间变化",fontproperties=my_font) plt.show()

(2)画出一个人11~30岁每年旅行次数

from matplotlib import pyplot as plt from matplotlib import font_manager #利用matplotlib.font_manager设置字体的方法 my_font=font_manager.FontProperties(fname="C:/WINDOWS/fonts/msyhl.ttc") y=[1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1] x=range(11,31) plt.figure(figsize=(20,8),dpi=80) plt.plot(x,y) #设置x轴的非数值型坐标刻度 _xtick_labels=["年龄{}岁".format(i) for i in x] #用非数值型刻度序列替换数值型刻度序列 #rotation调整刻度值的旋转角度,fontproperties设置刻度值的字体 plt.xticks(x,_xtick_labels,rotation=45,fontproperties=my_font) #设置y轴的数值型坐标刻度 plt.yticks(range(min(y),max(y)+1)) #设置x轴、y轴标签和图片标题,fontproperties设置中文字体 plt.xlabel("年龄",fontproperties=my_font) plt.ylabel("旅游次数",fontproperties=my_font) plt.title("每年的旅游次数",fontproperties=my_font) #设置网格 plt.grid() plt.show()

2.5 增加图片上的曲线图例

在同一张图上绘制正弦曲线和余弦曲线,并在图中标出图例

from matplotlib import pyplot as plt import numpy as np from matplotlib import font_manager my_font=font_manager.FontProperties(fname="C:/WINDOWS/fonts/msyhl.ttc") x=np.arange(0,5,0.1) y1=np.sin(x) y2=np.cos(x) #分别绘制正弦曲线和余弦曲线,color表示线条的颜色,linestyle表示线条的样式 plt.plot(x,y1,label="正弦曲线",color='r',linestyle="-.") plt.plot(x,y2,label="余弦曲线",color='b',linestyle=":") plt.title("在一张图上绘制正弦和余弦曲线",fontproperties=my_font) #设置曲线的图例,prop表示图例的字体,loc表示图例在图中的位置 plt.legend(prop=my_font,loc="best") plt.show()

3几种基础图形

(1)折线图 以上都是折线图,绘制折线图使用(matplotlib.plot())

from matplotlib import pyplot as plt import numpy as np x=np.arange(0,30,2) y=x**2+5 plt.plot(x,y) plt.show()

(2)散点图

from matplotlib import pyplot as plt import numpy as np x=range(1,31) y=np.random.rand(30) plt.scatter(x,y) plt.show()

(3)条形图

from matplotlib import pyplot as plt from matplotlib import font_manager my_font=font_manager.FontProperties(fname="C:/WINDOWS/fonts/msyhl.ttc") x=["小明","小华","小佳","小陈"] y=[34.5,67.5,87.6,77.4] #绘制条形图,width为条形的宽度 plt.bar(range(len(x)),y,width=0.3) plt.xticks(range(len(x)),x,fontproperties=my_font) plt.show()

(4)直方图

from matplotlib import pyplot as plt import random y=[random.randint(0,90) for i in range(0,50)] d=3 num_bins=(max(y)-min(y)) // d plt.hist(y,num_bins) plt.show()

最新回复(0)