私聊我做毕设或者实验课题。
1.简介
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形
2.基本使用
1.基本绘图
from matplotlib import pyplot as plt
#figsize 里面是长和宽 dpi表示像素点
fig=plt.figure(figsize=(20,8),dpi=80)
x=range(2,26,2)
y=[15,14,13,17.5,18,20,22,14,12,18,15,19]
#绘图
plt.plot(x,y)
#绘制x轴的刻度
#plt.xticks(x)
#plt.xticks(range(2,25))
_xticks_labels = [i/2 for i in range(4,49)]
plt.xticks(_xticks_labels)
plt.yticks(y)
#保存
plt.savefig('./t1.png')
plt.show()

2.简单例子
设计一个10点到12点每分钟温度显示情况
from matplotlib import pyplot as plt
import random
x=range(0,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)
_xtick_labels = ['10点{}分'.format(i) for i in range(60)]
_xtick_labels+=['11点{}分'.format(i-60) for i in range(60,120)]
#rotation表示旋转
plt.xticks(_x[::3],_xtick_labels[::3],rotation=45)
#绘制网格 alpha设置透明度
plt.grid(alpha=0.4)
#添加描述信息
plt.xlabel('时间')
plt.ylabel('温度,单位(C)')
plt.title('10点到12点的每分钟温度显示情况')
plt.show()

可以看到中文显示不出来,这里我们需要进行设置
3.显示中文
1.在Python/lib目录下添加ch.py,这里字体可以按照自己喜好进行设置

#ch.py
def set_ch():
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
在之前的例子里面导入当前的包
from matplotlib import pyplot as plt
import random
#设置中文字体
import ch
ch.set_ch()
x=range(0,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)
_xtick_labels = ['10点{}分'.format(i) for i in range(60)]
_xtick_labels+=['11点{}分'.format(i-60) for i in range(60,120)]
#rotation表示旋转
plt.xticks(_x[::3],_xtick_labels[::3],rotation=45)
#绘制网格 alpha设置透明度
plt.grid(alpha=0.4)
#添加描述信息
plt.xlabel('时间')
plt.ylabel('温度,单位(C)')
plt.title('10点到12点的每分钟温度显示情况')
plt.show()

4.多次图像的绘制
label:为当前图像设置标签,要与legend方法共同使用,color指明颜色...,loc指明当前图标显示的位置
=============== =============
Location String Location Code
=============== =============
'best' 0
'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
from matplotlib import pyplot as plt
#设置中文字体
import ch
ch.set_ch()
plt.figure(figsize=(20,8),dpi=80)
x=range(11,31)
y1=[1,0,1,1,2,4,3,2,3,4,5,6,7,8,5,6,3,3,2,1]
y2=[2,3,2,0,0,2,1,3,1,1,1,2,3,7,4,5,8,5,2,4]
plt.plot(x,y1,label="第一位",color='orange',linestyle=':',linewidth=5)
plt.plot(x,y2,label="第二位",color='cyan',linestyle='-.')
_x = ['he{}'.format(i) for i in x]
plt.xticks(x,_x)
plt.grid(alpha=0.4,color='yellow',linestyle='--')
plt.legend(loc=2)
plt.show()

5.散点图的绘制
from matplotlib import pyplot as plt
#设置中文字体
import ch
ch.set_ch()
plt.figure(figsize=(20,8),dpi=80)
y_3=[11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
y_10=[26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]
x_3=range(1,32)
x_10=range(51,82)
plt.scatter(x_3,y_3,label='3月份')
plt.scatter(x_10,y_3,label='10月份')
#调整x的刻度
_X=list(x_3)+list(x_10)
_xtick_labels = ['3月{}号'.format(i) for i in x_3]
_xtick_labels += ['10月{}号'.format(i-50) for i in x_10]
plt.xticks(_X[::3],_xtick_labels[::3],rotation=45)
plt.legend(loc=2)
plt.xlabel('时间')
plt.ylabel('温度,单位(C)')
plt.title('3月和10月温度散点图显示')
plt.show()

6.条形图的绘制
from matplotlib import pyplot as plt
#设置中文字体
import ch
ch.set_ch()
plt.figure(figsize=(10,8),dpi=80)
a=['战狼','速度于激情8','功夫瑜伽','西游伏魔篇']
b=[56.01,26.94,17.53,16.49]
#width指明条形图的宽度
plt.bar(range(len(a)),b,width=0.1)
plt.xticks(range(len(a)),a)
plt.show()

7.横向条形图
使用barh方法
from matplotlib import pyplot as plt
#设置中文字体
import ch
ch.set_ch()
plt.figure(figsize=(10,8),dpi=80)
a=['战狼','速度于激情8','功夫瑜伽','西游伏魔篇']
b=[56.01,26.94,17.53,16.49]
plt.barh(range(len(a)),b,height=0.1)
plt.yticks(range(len(a)),a)
plt.show()

8.绘制多次条形图
from matplotlib import pyplot as plt
import ch
ch.set_ch()
plt.figure(figsize=(20,8),dpi=80)
a=['战狼','速度于激情8','功夫瑜伽','西游伏魔篇']
day_01=[131,143,343,212]
day_02=[121,323,112,232]
day_03=[85,54,21,43]
x1=list(range(len(a)))
x2=[i+0.2 for i in x1]
x3=[i+0.2*2 for i in x1]
plt.bar(x1,day_01,width=0.2)
plt.bar(x2,day_02,width=0.2)
plt.bar(x3,day_03,width=0.2)
plt.xticks(x2,a)
plt.show()

9.绘制直方图
import matplotlib.pyplot as plt
import numpy as np
x=np.random.randint(0,100,100)#生成【0-100】之间的100个数据,即 数据集
bins=np.arange(0,101,10)#设置连续的边界值,即直方图的分布区间[0,10],[10,20]...
#直方图会进行统计各个区间的数值
plt.hist(x,bins,color='fuchsia',alpha=0.5)#alpha设置透明度,0为完全透明
plt.xlabel('scores')
plt.ylabel('count')
plt.xlim(0,100)#设置x轴分布范围
plt.show()

网友评论