matplotlib
Posted zhujiongning
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matplotlib相关的知识,希望对你有一定的参考价值。
为什么要学习matplotlib
1.能将数据进行可视化,更直观的呈现
2,使数据更加美观,更有说服力
什么是matplotlib
matplotlib:最流行的python底层绘图库,主要做数据可视化图表,模仿MATLAB构建
基础绘图
案例:
#假设一天中每隔两个小时(range(2,26,2))的气温分别是[15,13,14,5,17,20,25,26,26,24,22,18,15]
#代码
import matplotlib.pyplot as plt
x=range(2,27,2)
y=[15,13,14,5,17,20,25,26,26,24,22,18,15]
plt.plot(x,y)
plt.show()
接下来要解决几个问题
1.设置图片的大小
2.调整X或者Y的刻度的间距
3.线条的样式(比如颜色,透明度等)
4.标记处的特殊的点(比如最高点,最低点在哪里)
5.添加水印
6.描述信息,X轴,Y轴表示什么,这个图表示什么
7.保存到本地
设置图片的大小和保存图形
案例
#代码
fig=plt.figure(figsize=(20,8),dpi=100)
#figsize接收一个元组,表示图片的高和宽,单位是英寸
#DPI分辨率,代表了每一英寸有多少像素,默认80
plt.plot(x,y)
plt.show
保存图片
案例:
#代码
fig=plt.figure(figsize=(20,8),dpi=100)
plt.plot(x,y)
fig.savefig(‘test.png‘)
#可以保存为SVG这种矢量图格式,放大以后不会有锯齿
#fig.savefig("test.svg")
X轴和Y轴的调整和设置中文
#代码
plt.plot(x,y)
#x轴的刻(度
plt.xticks(x)
plt.yticks(y)
plt.show()
案例2:
列表A表示10点到12点每一分钟的气温,如何绘制折线图观察每分钟气温的变化情况
A=[random.randint(20,35)for i in range (120)]
#代码
import matplotlib as mpl
mpl.rcParams[‘font.sans-serif‘] = [‘FangSong‘]
mpl.rcParams[‘font.size‘] = 16
y=[random.randint(20,35)for i in range (120)]
x=list(range(120))
fig=plt.figure(figsize=(20,8))
plt.plot(x,y)
xlable=[‘10点{}分‘.format(i) for i in range (60)]
xlable+=[‘11点{}分‘.format(i) for i in range (60)]
plt.xticks(x[::3],xlable[::3],rotation=45)
plt.yticks(y)
添加描述的信息
#设置标题
#添加网格
import matplotlib as mpl
#设置中文
mpl.rcParams[‘font.sans-serif‘] = [‘FangSong‘] # 用来正常显示中文标签
mpl.rcParams[‘font.size‘] = 16 # 设置字体大小
#构建坐标
#x轴表示年龄,Y轴表示女朋友的个数
x=range(11,31)
y_self = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y_d = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]
#创建容器
fig=plt.figure(figsize=(20,8))
#画图
plt.plot(x,y_self,label=‘自己‘,color=‘black‘,linestyle=‘-.‘)
plt.plot(x,y_d,label=‘同桌‘)
#设置刻度
x_lables=[‘{}岁‘.format(i) for i in x]
plt.xticks(x,x_lables)
plt.ylabel(‘女朋友的个数‘)
plt.title(‘我和同桌历年交女朋友的个数对比‘)
#设置了图例一定要加上这句话
plt.legend()
plt.grid(alpha=0.3)
plt.annotate(‘最高点‘,xy=(23,6),xytext=(24,6),arrowprops={‘arrowstyle‘:‘<->‘})
plt.show()
散点图
问题:
假设通过爬虫你获取了北京2016年3月份,10月份每天白天的最高气温(分别位于列表A和B中),要求找出气温随时间变化的规律
import matplotlib as mpl
#设置中文
mpl.rcParams[‘font.sans-serif‘] = [‘FangSong‘] # 用来正常显示中文标签
mpl.rcParams[‘font.size‘] = 16 # 设置字体大小
#构建坐标
x_3=list(range(1,32))
y_3=[10, 16, 17, 14, 12, 10, 12, 6, 6, 7, 8, 9, 12, 15, 15, 17, 18, 21, 16, 16, 20, 13, 15, 15, 15, 18, 20, 22, 22, 22, 24]
x_10=[i+50 for i in x_3]
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]
#设置容器
fig=plt.figure(figsize=(15,8))
#绘图
plt.scatter(x_3,y_3,label=‘3月份‘)
plt.scatter(x_10,y_10,label=‘10月份‘)
#设置轴刻度
#集合
y=set(y_3+y_10)
min_y=min(y)
max_y=max(y)
plt.yticks(range(min_y,max_y+1))
#x轴
x=x_3+x_10
x_lables=[‘3月{}日‘.format(i) for i in range(1,32)]+[‘10月{}日‘.format(i) for i in range(1,32)]
plt.xticks(x[::2],x_lables[::2],rotation=45)
plt.xlabel(‘日期‘)
plt.ylabel(‘温度(C)‘)
plt.title(‘北京2016年3月份到10月份的气温变化趋势图‘)
plt.legend()
plt.show
#标记点
plt.annotate(‘ 最高点‘,xy=(53,28),arrowprops={‘arrowstyle‘:‘<->‘})
plt.show
条形图
假设获取到2019年内地电影票房前20的电影(列表X)和电影票房的数据(列表Y),那么如何更加直观的显示数据
#代码
import matplotlib.pyplot as plt
import matplotlib as mpl
#设置中文
mpl.rcParams[‘font.sans-serif‘] = [‘FangSong‘] # 用来正常显示中文标签
mpl.rcParams[‘font.size‘] = 16 # 设置字体大小
#构建坐标
movies = x= [‘哪吒之魔童降世‘, ‘流浪地球‘, ‘复仇者联盟4:终局之战‘, ‘疯狂的外星人‘, ‘飞驰人生‘, ‘烈火英雄‘, ‘速度与激情:特别行动‘, ‘蜘蛛侠:英雄远征‘, ‘扫毒2天地对决‘, ‘大黄蜂‘, ‘惊奇队长‘, ‘比悲伤更悲伤的故事‘, ‘哥斯拉2:怪兽之王‘, ‘阿丽塔:战斗天使‘, ‘银河补习班‘, ‘狮子王‘, ‘反贪风暴4 ‘, ‘熊出没·原始时代‘, ‘使徒行者2:谍影行动‘, ‘大侦探皮卡丘‘]
y = [49.04, 46.18, 42.05, 21.83, 17.03, 16.74, 14.16, 14.01, 12.85, 11.38, 10.25, 9.46, 9.27, 8.88, 8.64, 8.23, 7.88, 7.09, 6.92, 6.34]
x=range(len(movies))
#设置容器
fig=plt.figure(figsize=(20,8),dpi=100)
#绘图
plt.barh(x,y,)
#设置轴刻度
plt.xticks(x,rotation=90)
plt.xlabel(‘电影名称‘)
plt.ylabel(‘电影票房‘)
plt.title(‘2019年电影的票房‘)
plt.grid(alpha=0.3)
plt.legend()
以上是关于matplotlib的主要内容,如果未能解决你的问题,请参考以下文章