Matplotlib 初使用

五一假期时候,我在自己的电脑上安装了 matplotlib
安装步骤请转至:matplotlib 安装介绍

现在,我终于可以在自己电脑上学习 matolotlib 数学绘图库了,
说终于两个字,是完全是在安装过程中确实历经了折磨,根其原因是不懂,没接触过,而且我的学习方式是阅读,所学内容皆从书上来,有时候阅读的方式确实不如

开始学习新内容之前,先分享一下安装时候碰到的坎坷,
两种安装方式:

  1. 命令行安装

就是通过命令进行安装,不需要自己手动到官网去下载.whl文件,而且不用考虑python版本,通过特定命令,直接下载matplotlib,而且版本也是自适应的。
那为什么用这种方式安装失败了?
说是自适应版本,说是自动,不用手动下载,没错!!确实没错,但是这也太自动了,把所有版本都下载下来。。
。。。这,我肯定得终止了吧?!

  1. 手动安装

手动安装确实靠谱,而且最后我也是通过这种方式成功的。(只讨论安装时候遇到的趣事,安装步骤请移步上述链接)手动安装一定一定要注意版本,看自己的python版本,然后下载版本对应的 .whl !这样失败概率很小。

好吧!不啰嗦了。 下面开始学习新内容喽 !

绘制简单的折线图

我学习到的所有内容都是从书里来的!
我写的内容,只不过是一种搬运,把书里讲的,大差不差的弄到文章里,就自认为自己学过了,如果有忘记的,遇到问题了!自己知道把答案存在哪了,可以第一时间找到。

先绘制一个简单的折线图

使用平方数序列 1、4、9、16、25绘制图表。

import matplolib pyplot as plt

squares = [1,4,9,16,25]

plt.pylot(squares)
plt.show()

代码很简单,导入一下 matplolib 下的 pyplot,然后调用 pyplot 中的函数就可以了。
其实这个小需求,说白了就是画个图,然后图中的数用指定的,不能乱填。
.
那就创建一个列表,将需求中的数存放在列表里,然后调用pylot函数将列表中存储的数放到图上,就把图画出来了,最后就是调用显示的方法,把图显示出来。接着我们就可以运行程序了。

我们看一下运行效果:
在这里插入图片描述

哦对了!朋友们,我现在改用 pycharm编辑器了。
在这里插入图片描述
之前用 Geany在这里插入图片描述
是因为写的代码不多,这个刚好够用,没必要换,没必要接触功能更多的更简洁的 pycharm。

修改标签文字和线条粗细

有没有觉得上面示例的效果图标签文字太小,线条太细。
不过没关系,
matplotlib可以实现调整可视话的各个方法:

import matplotlib.pyplot as plt

squares = [1,4,9,16,25]

plt.plot(squares,linewidth =5)

#设置图表标题,并给坐标轴加上标题
#设置图表标题
plt.title("Square Numbers",fontsize = 24)
# 设置横坐标标题
plt.xlabel("Value",fontsize = 14)
#设置纵坐标标题
plt.ylabel("Square of Value",fontsize = 24)

#设置刻度标记的大小
plt.tick_params(axis='both',labelsize = 10) #我眼瞎,所以设置的10..
plt.tick_params()
plt.show()

看一下程序运行效果:
在这里插入图片描述
哇!看着好舒服 ~
在这里插入图片描述

集中注意力,我们继续学习!

校正图形

不知道你有没有发现折线图中的问题 ?4的平方是多少?

没错!你算的没有问题,那你看看咱们图上的是多少?。。先别方!我们来校正一下:

这个问题很简单处理,我们只需要在设置一组序列,然后也将其传递到 pyplot函数中,因为该函数会对输出值的生成方式作出假设,而传递进两组序列,它无法自动假设。也就不会出现问题了。

import matplotlib.pyplot as plt

input_values = [1,2,3,4,5]
squares = [1,4,9,16,25]

plt.plot(input_values,squares,linewidth =5)

#设置图表标题,并给坐标轴加上标题
#设置图表标题
plt.title("Square Numbers",fontsize = 24)
# 设置横坐标标题
plt.xlabel("Value",fontsize = 14)
#设置纵坐标标题
plt.ylabel("Square of Value",fontsize = 24)

#设置刻度标记的大小
plt.tick_params(axis='both',labelsize = 10)
plt.tick_params()
plt.show()

在看一下传递两组序列的输出效果:
在这里插入图片描述

无稽之谈

我也在思考一个问题,为什么传递两组序列,x和y坐标上的数标就会增加或者?难道坐标是我们传递设置的吗?
可是代码中没有写关于这个设置的语句啊~
哦!想明白了。
plot()函数到底可以接收多少个参数我确实无从知道,因为《python 编程从入门到实践》这本书确实真的是从入门到实践了。没有讲细节方面,尺度刚好是在会用,知道怎么用。先不考虑 plot() 能接收什么参数的问题,我们把焦点放在,我们传递了什么!
squares 这组序列将决定图上曲线表示的值。
而 input_values呢?你有没有发现 squares 中存储了几个元素?
.
是的,你也发现了吧。所以我是这么认为的,所以是无稽之谈…

使用scatter() 绘制散点图并设置样式

该函数可用于绘制曲线图上需要突出的值,其效果如图:
在这里插入图片描述
该效果通过调用 scatter() 函数的编码如下:

import matplotlib.pyplot as plt
plt.scatter(2,4)
plt.show()

scatter 其中传递的两个参数,就是需要突出显示的坐标。

接着,我们也给点状图加上标题,标签等:

import matplotlib.pyplot as plt

plt.scatter(2,4,s=200)
plt.title("Square Numbers",fontsize =24)
plt.xlabel("Value",fontsize =14)
plt.ylabel("Square of Value",fontsize =14)

plt.tick_params(axis='both',which='major',labelsize=14)
plt.show()

效果如图:
在这里插入图片描述

使用 scatter() 绘制一系列的点点

如果想绘制更多的点点,我们可以将scatter接收的两个参数组成为序列传递。
在这里插入图片描述

就像这样:

import matplotlib.pyplot as plt

x_values = [1,2,3,4,5]
y_values = [1,4,9,16,25]

plt.scatter(x_values,y_values,s =100)

plt.title("Square Numbers",fontsize =24)
plt.xlabel("Value",fontsize = 14)
plt.ylabel("Square of Value",fontsize = 14)

plt.tick_params(axis='both',which='major',labelsize =14)
plt.show()
自动计算数据

如果自己计算列表要包含的值,效率是非常低下的。如果需求中需要绘制的点非常多怎么办?1000个?

我们可以利用循环来帮助我们完成计算。
编码如下:

import matplotlib.pyplot as plt

x_values = list(range(1,1001))
y_values = [x**2 for x in x_values]

plt.scatter(x_values,y_values,s =10)

plt.title("Square Numbers",fontsize =24)
plt.xlabel("Value",fontsize = 14)
plt.ylabel("Square of Value",fontsize = 14)

plt.tick_params(axis='both',which='major',labelsize =12)
#设置每个坐标轴取值范围
plt.axis([0,1100,0,1100000])
plt.show()

程序执行效果如图:
在这里插入图片描述

删除数据点的轮廓

图上小点点的颜色默认为蓝色,轮廓默认为黑色。
如果数据较小时,我们能看到的数据效果还是很清晰的,可是如果数据量很多时,黑色的轮廓将会黏在一起。

所以我们对其轮廓进行删除:

plt.scatter(x_values,y_values,edgecolor='none',s=40)

来对比一下删除之后的效果:
在这里插入图片描述

自定义颜色

向 scatter 传递参数 c 可以进行点点颜色的设置:

plt.scatter(x_values,y_values,c = 'green',edgecolor='none',s=40)

在这里插入图片描述

或者也可以通过 RGB形式来定义颜色:

#RGB模式指定颜色需要设置元组
plt.scatter(x_values,y_values,c =(0,0,0.8),edgecolor='none',s=40)
使用颜色映射

颜色映射是一系列颜色,它们从起始颜色渐变到结束颜色。
在可视化中,颜色映射用于突出数据的规律。例如用较浅的颜色显示较小的值,用较深的颜色显示较大的值。

import matplotlib.pyplot as plt

x_values = list(range(1,1001))
y_values = [x**2 for x in x_values]

plt.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Blues,edgecolor='none',s=40)

plt.title("Square Numbers",fontsize =24)
plt.xlabel("Value",fontsize = 14)
plt.ylabel("Square of Value",fontsize = 14)

plt.tick_params(axis='both',which='major',labelsize =12)
#设置每个坐标轴取值范围
plt.axis([0,1100,0,1100000])
plt.show()

效果如图:
在这里插入图片描述

自动保存图表

如果想让程序自动将图表保存到文件中,
可以对 plt.show() 的调用替换为 plt.savefig():

plt.savefig('squares_plt.png',bbox_inches='tight')

第一个参数指定以什么样的文件名保存图表。
第二个参数指定图表多余的空白区域裁剪掉。如果想在保存图表时忽略空白区域,可以不指定这个参数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兔C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值