matplot画图控制marker点的个数_python画图 - v0

本文介绍了Python的matplotlib库在画图时如何控制marker点的数量,探讨了线条风格、颜色和标记,以及如何调整坐标轴的范围和显示。通过实例详细解析了pyplot模块的基本操作,包括设置图表的绘图范围、添加轴标题和调整轴坐标间隔。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7fd52d7f64ee56c56cc0693d64e4080e.png

学了这么多年python了,还一直没有系统地了解过python的画图功能。

每次都是现学现用,但是某些比较紧急的场合,往往就会比较耗时又耗力,因为不成体系,还经常会忘记已经吸纳的新知识。

所以,我决定把这块的画图功能系统的学习一下,进行知识储备。

Python的pyplot模块绘制图表的基本操作。
=======================================================

一个简单的二维折线图:

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [1.2, 2.5, 4.5, 7.3]

# plot函数作图
plt.plot(x, y)

plt.savefig("test.png", dpi=120)
# show函数展示出这个图,如果没有这行代码,则程序完成绘图,但看不到
plt.show()

运行后的效果是这样的,从数值对应上,横轴应该是x轴,纵轴应该是y轴。

6200b9e7d2313438b2c8eea4d7ef30d2.png

但是,对应图与代码,另外疑问的是,为什么x轴给出的是整数,在绘制时却用了浮点?而又为什么y轴给出的是浮点数,在绘制时却用的是整数呢?

----------------------------------------------------------------------------------------------

另一个点是:

show()函数在通常的运行情况下,将会阻塞程序的运行,直到用户关闭绘图窗口。换句话说,在关闭show()函数弹出的图像窗口前,show()函数后面的代码不会运行,直到用户关闭图像窗口,才会继续。

我测试了普通的print()之后,发现并没有阻塞。。。

但是呢,当我在调用plt.savefig()将当前的Figure对象保存成图像文件时,

如果plt.savefig()代码放在了plt.show()之后,那我本地保存的图像就是一张空白图,不符合预期;

但如果plt.savefig()代码放在了plt.show()之前,则可以成功实现保存。

虽然问题不大,但也让我产生疑问:到底是有阻塞还是没有阻塞呢?如果有,阻塞什么,而又不阻塞什么呢?
=======================================================

不同风格的线条:

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [1.2, 2.5, 4.5, 7.3]

#线条颜色、线条样式、突出(marker)每个记录的点、线条粗细
plt.plot(x, y, color="r", linestyle="--", marker="*", linewidth=1.0)

plt.show()

运行后的效果:

a51dc663a819db3f897c78917493eeb7.png


---------------------------------------------------------------------------------------------

线条风格(linstyle):

9e2422066d8fe7ef5efdec7c5598d447.png

supported values are '-', '--', '-.', ':', 'None', ' ', '', 'solid', 'dashed', 'dashdot', 'dotted'
-----------------------------------------------------------------------------------------------

线条颜色(color):

99cb25719f580e64064362fd26eacb67.png

-----------------------------------------------------------------------------------------------

线条标记(marker):

c9db27158cd71817aca7e020e92759ec.png

======================================================

坐标轴控制

-绘图范围:

import matplotlib.pyplot as plt
import numpy as np

#x 的取值范围
x = np.arange(-5, 5, 0.02)
y = np.sin(x)

#控制图像的绘图范围
#plt.axis([x_min, x_max, y_min, y_max])
plt.axis([-np.pi, np.pi, -2, 2])

plt.plot(x, y, color="r", linestyle="-", linewidth=1)

plt.show()

运行效果如下:

3a326cebf8fed9e9f683f20c683fa92c.png

值得注意的一个点:

虽然x的取值范围在[−5,5],但是绘图时,只是展示了[−π,π]之间的函数图。

引出一个可以控制图像范围的函数:

plt.axis([x_min, x_max, y_min, y_max])

如果只是单独想要控制x轴或者y轴的取值,则可以用plt.xlim(x_min, x_max)plt.ylim(y_min, y_max),用法与plt.axis()类似。
----------------------------------------------------------------------------------------------

-标题和间隔:

import matplotlib.pyplot as plt
import numpy as np
import math

x = np.arange(-2 * math.pi, 2 * math.pi, 0.02)
y = np.sin(x)

plt.axis([-10, 10, -2, 2])

plt.xticks([i * np.pi/2 for i in range(-4, 5)], [str(i * 0.5) + "$pi$" for i in range(-4, 5)])

plt.yticks([i * 0.5 for i in range(-4, 5)])

plt.xlabel("x")
plt.ylabel("y")

plt.plot(x, y, color="r", linestyle="-", linewidth=1)

plt.show()

运行效果如下:

0edbb49136fba93e4b98c7f5f57751bd.png

纯粹知识的学习记录:

函数plt.xlabel()plt.xlabel()用来实现对x轴和y轴添加标题。

函数plt.xticks()plt.yticks()用来实现对x轴和y轴坐标间隔(也就是轴记号)的设定。用法上,函数的输入是两个列表,第一个表示取值,第二个表示标记。当然如果你的标记就是取值本身,则第二个列表可以忽略。(支持latex公式表达)

=======================================================

参考链接:https://blog.csdn.net/guoziqing506/article/details/78975150

PS:感谢参考文章的作者,从细节、小处一步步向前推进,能够很好的帮助我建立知识体系。

不过,一如既往地,我的问题真多,虽然问题不大,但是拥有自己的思考分析,我认为是应该一直坚持的事情。

毕竟自己小菜鸡,一直在参考文章进行学习,期待学习后期可以有自己完全独立、不依赖参考文章的成形文字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值