Python学习-Matplotlib库绘制简单散点图图和线型图、标签设置以及刻度线设置操作
目录
1、Matplotlib绘图细节的简单理解
2、绘制点图、线型图
3、给图表设置复杂标注
4、移动刻度线
1、Matplotlib绘图细节
Figure(画板)、axes(画纸)、axis(x轴,y轴)&data(数据)、plot(绘图函数),title(标题)、axis(Tick,Tick lable, lable)(axis的刻度&标签)
导入库
import numpy as np
import matplotlib.pyplot as plt
导入中文字体,打印图标签
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=15) # 导入中文字体,打印中文标签
2、绘制点图、线型图
设置数据(x, y)
x = np.linspace(start=0, stop=np.pi*2, num=30) # 从x轴0到2Π之间,生成100个数据点
ys, yc = np.cos(x), np.sin(x) # y轴,y与x对应函数映射
# plot(*args,fmt,data=None,**kwargs) args:x,y fmt:线颜色
# **kwargs:线宽度(linewidth=2),颜色(color='blue'),图标(marker='o',markersize=12),线风格(linestyle='dashed')
plt.figure(1)
plt.subplot(221)
# 点图,必须指定图标,且不能有关于线的指定条件,否则将会画成线
plt.plot(x, ys, '.', color='blue')
plt.plot(x, yc, '.', color='green')
# 线型图
plt.subplot(222)
plt.plot(x, ys, color='blue')
plt.plot(x, yc, color='red')
# 虚线 线风格(linestyle='dashed','-','--','-.',':')
plt.subplot(223)
plt.plot(x, ys, marker='o', color='blue', linestyle='--')
plt.plot(x, yc, marker='o', color='red', linestyle='--')
# 改坐标标签
plt.subplot(224)
plt.plot(x, ys)
plt.plot(x, yc)
plt.xlabel('坐标轴x', fontproperties=font)
plt.ylabel('坐标轴y', fontproperties=font)
plt.title('cos & sin', fontproperties=font)
plt.show()
输出
图1为散点图,图2为线型图,图三设置线风格,图4设置标签
3、给图表设置复杂标注
plt.figure(2)
x1 = np.arange(-np.pi, np.pi, 0.05) # 在x轴-Π到Π之间,以0.05为间隔生成数据点
ys, yc = np.cos(x1), np.sin(x1) # y轴,y与x对应函数映射
plt.plot(x1, ys)
plt.plot(x1, yc)
# 文本标题标注text(x, y, s, **kwargs) x,y:位置,kwargs:字体属性
plt.text(x=-1, y=-0.75, s='cos & sin', fontsize=20, fontweight='heavy')
# 箭头标注arrow(x, y, dx, dy, **kwargs)
plt.arrow(x=-2.0, y=0.75, dx=2.0, dy=0.25, width=0.02, fc='green')
# 复杂标注
plt.annotate(text='Top max', xy=(-2.5, 0.68), color='red')
plt.show()
输出
4、移动刻度线
plt.figure(3)
x1 = np.arange(-np.pi, np.pi, 0.05) # 在x轴-Π到Π之间,以0.05为间隔生成数据点
ys, yc = np.cos(x1), np.sin(x1) # y轴,y与x对应函数映射
plt.plot(x1, ys)
plt.plot(x1, yc)
# 移动刻度线
ax = plt.gca() # 获取当前axes类实例
# 用spines设置颜色值为none,把右刻度线和顶刻度线隐藏
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom') # 把x轴刻度线位置设置为bottom
ax.spines['bottom'].set_position(('data', 0)) # 把底部的刻度线设置到数据区域的0位置
ax.yaxis.set_ticks_position('left') # 把y轴刻度线位置设置为left
ax.spines['left'].set_position(('data', 0)) # 把左部的刻度线设置到数据区域的0位置
plt.show()