matplotlib学习(一)

本文是matplotlib学习的第一部分,通过实例讲解如何绘制并优化折线图,包括设置图片大小、保存图片、添加描述信息、调整坐标轴刻度、解决中文显示问题、添加网格线和图例等。文章最后提到matplotlib的多功能性,并鼓励读者尝试更多图表类型。
摘要由CSDN通过智能技术生成

今天来学习学习matplotlib,它是一个绘图库,可以绘制折线图,直方图…,是根据matlab而来的。编不下去了

初步绘制

好了,正题开始

拿一个例子来讲把

比如这里有一组数据,是一天之内的气温变化,每两个小时测一次温度

温度变化 [15, 13, 14.5, 17, 20, 25, 26, 26, 27, 22, 18, 15]

现在我想绘制一个折线图,更直观的反映温度变化

那么我们开始把

直接上源码

from matplotlib import pyplot as plt

x = range(2,25,2)  # 取不到25
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 27, 22, 18, 15]

#绘图
plt.plot(x,y)

#显示
plt.show()

虽然代码很简单,我还是简单的提一提吧
第一行是导入相应的模块,as 是取一个别名,plt 就是 pyplot
range(start,end,step) ----> 起始点,终点, 步长,但是取不到终点,是开区间

程序运行起来是这个亚子的,生成这么一个图片

好了,大功告成

谢谢大家观看,收工了,告辞

存在一些问题

但是这图也太难看了吧,给别人谁看得懂,我们可以再添一点东西

目前存在以下问题:
1、设置图片的大小(想要一个高清无码大图)
2、保存到本地
3、描述信息,比如x轴和y轴表示什么,这个图表示什么
4、调整x或者y的刻度的间距
5、线条的样式,比如颜色,透明度等
6、标记出特殊的点,比如告诉别人最高点和最低点在哪里
7、给图片添加一个水印,防伪,防止盗用

设置图片大小

接下来介绍这么一个方法解决图片大小问题,还可以调节清晰程度

这需要用到一个函数figure()

还是直接上源码吧QAQ

from matplotlib import pyplot as plt

x = range(2,25,2)  # 取不到25
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 27, 22, 18, 15]

# 设置图片大小及清晰度
plt.figure(figsize=(20,8),dpi=80)

# 绘图
plt.plot(x,y)

# 显示
plt.show()

figsize=(20,8)意思是设置图片长为20,宽为8

dpi就是dotpixel,点像素的意思,dpi=80意思就是每英寸有80个像素点,可以保持图片放大的时候可以依然很清晰,当然不一定是80了,可以根据自己的需求设置

程序运行是这个亚子
在这里插入图片描述

保存到本地

有时候我们绘制了一个图,想把它变成一张图片,保存到本地

就是一个简单的savefig()函数,参数传入要保存的路径就好了

源代码源代码QAQ,我这里是保存到本目录,命名为1.png

from matplotlib import pyplot as plt

x = range(2,25,2)  # 取不到25
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 27, 22, 18, 15]

# 设置图片大小及清晰度
plt.figure(figsize=(20,8),dpi=80)

# 绘图
plt.plot(x,y)

# 保存到本地
plt.savefig('./1.png')

# 显示
plt.show()

要注意保存到本地,应该是在描绘之后再保存

调整x轴或者y轴的刻度

不知道大家有没有发现,这个温度是每隔2小时测一次,但是描绘的x轴坐标间距并不是2,而是它自己生成的5

如果我们想自己设定间距呢?又该如何做

这里又有新知识点

这次介绍的一个函数是 xticks()

比如我想让刻度间距为1

那么可以这样(有些东西我就注释了)

from matplotlib import pyplot as plt

x = range(2,25,2) 
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 27, 22, 18, 15]

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

# 绘图
plt.plot(x,y)

# 设置x轴的刻度
x_ticks = [i for i in range(2,25)]
plt.xticks(x_ticks)

# 保存到本地
# plt.savefig('./1.png')

# 显示
plt.show()

它是这个亚子的
在这里插入图片描述


能不能再缩小间距,当然可以

所以我令x_ticks = [i for i in range(2,25,0.5)], 让间距变成0.5

但是这是不行的,问题就出在range里面的步长,它不能为浮点数

所以我这样写 x_ticks = [i/2 for i in range(4,50)] , 这是可以的


还可以对x_ticks再次取步长

# 设置x轴的刻度
x_ticks = [i/2 for i in range(4,50)]
plt.xticks(x_ticks[::3])

是这个亚子的
在这里插入图片描述


y轴也是一样的,我们可以对y轴的刻度这样设置, 只是函数变成了 yticks()

我们可以根据y轴的最小值和最大值设定

# 调整y轴的刻度
y_ticks = [range(min(y),max(y)+1)]   # 因为是取不到max(y),所有再+1
plt.yticks(y_ticks)

这个亚子
在这里插入图片描述
================================ 我是优雅的分界线 ===============================================

现在问题升级

如果列表 y 表示10点到12点的每一分钟的气温,如何绘制折现图观察每分钟气温的变化情况?
y = [rando.randint(20,35) for i in range(120)]

很明显这 y 是一个随机数,反正图很沙雕,是不是气温已经不重要了

我们可以写如下程序

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=(12,8),dpi=100)

# 绘图
plt.plot(x,y)

# 显示
plt.show()

是这个亚子的
在这里插入图片描述

它横坐标表示的是120分钟

我们发现这并不直观

我有一个大胆的想法,把x刻度变成字符串,而不仅仅是数字

看看这该如何实现

我们先来简单的测试一下

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=(12,8),dpi=100)

# 绘图
plt.plot(x,y)

# 调整x轴的刻度
x_labels = ["hello,{}".format(i) for i in x]
plt.xticks(x,x_labels)

# 显示
plt.show()

是这个亚子的
在这里插入图片描述
下面什么鬼,密密麻麻的

别着急,是因为太密集了

我们来让它变的稀疏一点

from matplotlib import pyplot as plt
import random

x = range(0,120)
y = [random.randint(20,35) for i in range(120)]

# 设置图片大小及清晰度
plt.figure
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值