Python大火的原因之一就是它有规模强大的工具库,今天我们将介绍Python的最热门的几大库之一——Matplotlib。可以发现,它和我们常听到的Matlib很像,都是数学绘图工具,但是由于Python强大的功能,它比Matlib容易上手和使用。
更多资料请参考官网:
中文文档:https://www.matplotlib.org.cn/
英文文档:https://www.matplotlib.org.cn/en/
Python库安装的方式基本都是相同的,在Windows下,都要使用pip命令。
python -m pip install matplotlib(或pip install matplotlib)
安装后,对其进行测试,没有出现错误,则认为已经安装成功,命令如下:
#首先,进入到Python环境中
import matplotlib
一张精美的图应该包含以下几个要素,如图所示。接下来我将用几个简单的例子,分别介绍matplotlib库中常用的函数和方法。
# 导入库
import matplotlib.pyplot as plt
# 数据准备
sqares=[1,4,9,16,25]
# 根据数据画图
plt.plot(sqares)
# 以下部分,就是对结果图进行美化
# 首先是添加标题,并设置字体大小
plt.title("Sqare Draw",fontsize=24)
# 对X,Y轴进行添加标签,设置字体大小
plt.xlabel("Value",fontsize=14)
plt.ylabel("Sqare of Value",fontsize=14)
# 设置刻度标记的大小,就是坐标轴的字体大小,
# 参数axis的值为'x'、'y'、'both',分别代表设置X轴、Y轴以及同时设置,默认值为'both'
plt.tick_params(axis='both',labelsize=14)
# 数据可视化,也就是将结果变成图片展示出来
plt.show()
可以发现一个问题,就是横坐标为4.0的时候,纵坐标是25,这里出现里问题。这是因为当使用plot()对提供的数据绘图的时候,它默认第一个数据点对应的坐标是0,因此可以手动设定为1。修改后的代码如下:
# 导入库
import matplotlib.pyplot as plt
# 数据准备
input_values=[1,2,3,4,5]
sqares=[1,4,9,16,25]
# 根据数据画图
plt.plot(input_values, sqares, linewidth=5)
# 以下部分,就是对结果图进行美化
# 首先是添加标题,并设置字体大小
plt.title("Sqare Draw",fontsize=24)
# 对X,Y轴进行添加标签,设置字体大小
plt.xlabel("Value",fontsize=14)
plt.ylabel("Sqare of Value",fontsize=14)
# 设置刻度标记的大小,就是坐标轴的字体大小,
# 参数axis的值为'x'、'y'、'both',分别代表设置X轴、Y轴以及同时设置,默认值为'both'
plt.tick_params(axis='both',labelsize=14)
# 数据可视化,也就是将结果变成图片展示出来
plt.show()
# 导入库
import matplotlib.pyplot as plt
# 数据准备
x_values=[1,2,3,4,5]
y_values=[1,4,9,16,25]
# scatter方法是将点标在图上,s是设置点的大小
plt.scatter(x_values,y_values,s=100)
# 数据可视化,也就是将结果变成图片展示出来
plt.show()
# 导入库
import matplotlib.pyplot as plt
# 数据准备
x_values=list(range(1,1001))
y_values=[x**2 for x in x_values]
# scatter方法是将点标在图上,s是设置点的大小
plt.scatter(x_values,y_values,s=40)
# 设置每个坐标轴的取值范围
plt.axis([0, 1200, 0, 1200000])
# 数据可视化,也就是将结果变成图片展示出来
plt.show()
自定义数据点的颜色:
# 参数c可以设定颜色,也可以使用RGB颜色模式,如c=(0,0,0.8)
# 三个数都是0~1,分别代表红、绿、蓝,越接近0,颜色越深,越接近1,颜色越浅。
# edgecolors是数据点的轮廓,默认值就是none
plt.scatter(x_values,y_values,c='red',edgecolors='none',s=40)
# 导入库
import matplotlib.pyplot as plt
# 数据准备
x_values=list(range(1,1001))
y_values=[x**2 for x in x_values]
# scatter方法是将点标在图上,s是设置点的大小,将参数c设置为y值的列表,并用参数cmap告诉plt使用哪个# # 颜色映射,y值小的显示为浅蓝色,y值大的显示为深蓝色。
plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, s=40)
# 设置每个坐标轴的取值范围
plt.axis([0, 1200, 0, 1200000])
# 数据可视化,也就是将结果变成图片展示出来
plt.show()
自动保存图片
plt.savefig('sqares_plot.png',bbox_inches='tight')
# 第一个参数是设定保存的图片的名称,第二个参数是将图表多余的空白区域剪掉,也可以不设置它。
它有3个属性:
from random import choice
class RandomWalk():
"""一个生成随机漫步数据的类"""
def __init__(self,num_points=5000):
"""初始化随机漫步的步数为5000步"""
self.num_points=num_points
"""所有的随机漫步都始于(0,0)"""
self.x_values=[0]
self.y_values=[0]
完整代码如下:
注意,每次生成的图都是随机的
from random import choice
import matplotlib.pyplot as plt
class RandomWalk():
"""一个生成随机漫步数据的类"""
def __init__(self,num_points=5000):
"""初始化随机漫步的步数为5000步"""
self.num_points=num_points
"""所有的随机漫步都始于(0,0)"""
self.x_values=[0]
self.y_values=[0]
def fill_walk(self):
"""计算随机漫步包含的所有点"""
# 不断漫步,直到到达规定的步数,本例为5000
while len(self.x_values)
由于点是按照顺序生成的,因此颜色从浅到深也是按照点的顺序生成的。因此将代码执行的部分修改成如下:
rw=RandomWalk()
rw.fill_walk()
point_number=list(range(rw.num_points))
plt.scatter(rw.x_values, rw.y_values, c=point_number, cmap=plt.cm.Blues, s=15)
plt.show()
rw=RandomWalk()
rw.fill_walk()
point_number=list(range(rw.num_points))
plt.scatter(rw.x_values, rw.y_values, c=point_number, cmap=plt.cm.Blues, s=15)
# 起点是绿色,终点是红色
plt.scatter(0,0,c='green',s=100)
plt.scatter(rw.x_values[-1],rw.y_values[-1],c='red',s=100)
plt.show()
plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)
创建实例的时候,可以赋值一个新的实参值,覆盖原先的默认值,如:(其他代码相同)
rw=RandomWalk(50000)
#python默认的屏幕分辨率是80像素/英寸,可以使用函数figure()修改分辨率
plt.figure(dpi=128, figsize=(10, 6))