Matplotlib之基础语句与绘图

Matplotlib的基础语句与绘图

1、matplotlib是什么

2、matplotlib的步骤和方法

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

1、matplotlib是什么

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

2、matplotlib的基础步骤和方法

2.1、绘图步骤

  1. 导入绘图模块(matplotlib.pyplot)
  2. 设置图片的大小和分辨率等参数(plt.figure())
  3. 绘制图形并显示(plt.plot(x,y))
  4. 设置x,y轴的坐标刻度(plt.xticks(),plt.yticks())
  5. 设置图的标题(plt.title())、x轴标签(plt.xlable())、y轴标签(plt.ylabel())
  6. 图片描述和标记(plt.legend())
  7. 设置字体(matplotlib.font_manager.FontProperties())
  8. 保存图片(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(

Matplotlib之基础语句与绘图_第1张图片

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

Matplotlib之基础语句与绘图_第2张图片

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

2.4.1设置图片中的中文字体

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

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

Matplotlib之基础语句与绘图_第3张图片
(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()

Matplotlib之基础语句与绘图_第4张图片
(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()

Matplotlib之基础语句与绘图_第5张图片

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

Matplotlib之基础语句与绘图_第6张图片

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

Matplotlib之基础语句与绘图_第7张图片
(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()

Matplotlib之基础语句与绘图_第8张图片
(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()

Matplotlib之基础语句与绘图_第9张图片
(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()

Matplotlib之基础语句与绘图_第10张图片

你可能感兴趣的:(python)