五一假期时候,我在自己的电脑上安装了 matplotlib
安装步骤请转至:matplotlib 安装介绍
现在,我终于可以在自己电脑上学习 matolotlib 数学绘图库了,
说终于两个字,是完全是在安装过程中确实历经了折磨,根其原因是不懂,没接触过,而且我的学习方式是阅读,所学内容皆从书上来,有时候阅读的方式确实不如 听。
开始学习新内容之前,先分享一下安装时候碰到的坎坷,
两种安装方式:
- 命令行安装
就是通过命令进行安装,不需要自己手动到官网去下载.whl文件,而且不用考虑python版本,通过特定命令,直接下载matplotlib,而且版本也是自适应的。
那为什么用这种方式安装失败了?
说是自适应版本,说是自动,不用手动下载,没错!!确实没错,但是这也太自动了,把所有版本都下载下来。。
。。。这,我肯定得终止了吧?!
- 手动安装
手动安装确实靠谱,而且最后我也是通过这种方式成功的。(只讨论安装时候遇到的趣事,安装步骤请移步上述链接)手动安装一定一定要注意版本,看自己的python版本,然后下载版本对应的 .whl !这样失败概率很小。
好吧!不啰嗦了。 下面开始学习新内容喽 !
文章目录
- 绘制简单的折线图
- 先绘制一个简单的折线图
- 修改标签文字和线条粗细
- 校正图形
- 使用scatter() 绘制散点图并设置样式
- 使用 scatter() 绘制一系列的点点
- 自动计算数据
- 删除数据点的轮廓
- 自定义颜色
- 使用颜色映射
- 自动保存图表
绘制简单的折线图
我学习到的所有内容都是从书里来的!
我写的内容,只不过是一种搬运,把书里讲的,大差不差的弄到文章里,就自认为自己学过了,如果有忘记的,遇到问题了!自己知道把答案存在哪了,可以第一时间找到。
先绘制一个简单的折线图
使用平方数序列 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')
第一个参数指定以什么样的文件名保存图表。
第二个参数指定图表多余的空白区域裁剪掉。如果想在保存图表时忽略空白区域,可以不指定这个参数。