初识Python中matplotlib库

最近遇到个任务需要画一些坐标图,我就在想,用了这么长时间的 Python 了,能不能用 Python 画图呢?学习一门语言不能只为了学习语言而学习,要做到学以致用。Google 了一下,果然有新的发现,Python 中 matplotlib 库是专门用来画图的,操作了一番后,发现用 Python 画图真的爽,人生苦短,快用 Python!下面简单的介绍一下 matplotlib 库的用法,起到一个抛转引玉的作用,更多好玩的事情等待着咱们一起来探索。

我有如下数据集,想要在坐标轴上画出它们的图像:

x = [-1.0, -0.5, 1.5, 2.5, 4.0, 5.5, 7.0, 9.0, 10.5, 11.5,
     13.0, 15.5, 18.0, 20.5, 23.0, 25.5, 28.0, 33.0, 38.0, 43.0]
data1 = [0.1, 0.9, 5.6, 7.8, 14.8, 21.2, 26.3, 32.0, 36.6, 39.4,
         42.6, 47.9, 52.2, 56.1, 59.8, 63.2, 66.3, 72.2, 77.5, 81.5]
data2 = [0.1, 0.2, 2.1, 3.7, 6.8, 9.8, 11.8, 14.9, 16.1, 17.2,
         18.6, 20.7, 22.6, 24.4, 26.0, 27.5, 28.9, 31.0, 32.9, 34.3]

让我们一起来看下如何用 Python 中 matplotlib 库画出它们的图像吧。

想要用 matplotlib,首先你需要导入这个库:

import matplotlib.pyplot as plt

然后输入一下代码:

plt.title("curve")      # 标题
plt.xlabel("x")         # x 轴信息
plt.ylabel("y")         # y 轴信息
plt.plot(x, data1)      # 画出图像
plt.plot(x, data2)

plt.show()              # 显示

你瞧,函数图像就轻松地画出来了,不得不说,Python 真的太好用了。
在这里插入图片描述
但是这样看,这个图像太单调了,我们给它丰富一下细节,对每一条曲线加上一个标签,将原来的 plt.plot() 方法传入参数:

plt.plot(x, data1, label="curve1")
plt.plot(x, data2, label="curve2")

然后再用方法 plt.legend() 放置标签的位置:

plt.legend(loc='upper center', bbox_to_anchor=(0.2, 0.95))

其中第一个参数为标签大概位置,第二个参数是调整标签的具体位置,然后新的图像为:
在这里插入图片描述
但是我对这个图像还不满意,这个坐标跟我平常见到的坐标不太一样呀,有什么办法可以变成我们常见的坐标吗?这时候就要发挥出我们的智慧了。

这个图像有四条坐标轴,上下左右各一条,我们只需要把上和右坐标轴隐藏,然后移动剩下两条坐标轴不就好咯。

ax = plt.gca()                          # 获取坐标轴
ax.spines['right'].set_color('none')    # 将右坐标轴颜色设置为空白
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')   # 将刻度在 x 轴底部显示
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))   # 把图像与坐标轴关联
ax.spines['left'].set_position(('data', 0))

图像成功的变成了我们想要的样子:
在这里插入图片描述
以下是具体代码:

import matplotlib.pyplot as plt

x = [-1.0, -0.5, 1.5, 2.5, 4.0, 5.5, 7.0, 9.0, 10.5, 11.5,
     13.0, 15.5, 18.0, 20.5, 23.0, 25.5, 28.0, 33.0, 38.0, 43.0]
data1 = [0.1, 0.9, 5.6, 7.8, 14.8, 21.2, 26.3, 32.0, 36.6, 39.4,
         42.6, 47.9, 52.2, 56.1, 59.8, 63.2, 66.3, 72.2, 77.5, 81.5]
data2 = [0.1, 0.2, 2.1, 3.7, 6.8, 9.8, 11.8, 14.9, 16.1, 17.2,
         18.6, 20.7, 22.6, 24.4, 26.0, 27.5, 28.9, 31.0, 32.9, 34.3]

ax = plt.gca()                          # 获取坐标轴
ax.spines['right'].set_color('none')    # 将右坐标轴颜色设置为空白
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')   # 将刻度在 x 轴底部显示
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))   # 把图像与坐标轴关联
ax.spines['left'].set_position(('data', 0))

plt.title("curve")      # 标题
plt.xlabel("x")         # x 轴信息
plt.ylabel("y")         # y 轴信息
plt.plot(x, data1, label="curve1")
plt.plot(x, data2, label="curve2")
plt.legend(loc='upper center', bbox_to_anchor=(0.2, 0.95))

plt.show()              # 显示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值