python数据可视化——plot函数、基本图像属性设置、中文显示问题解决方法、子图设置
目录
1 plot()函数
plot(*args,**kwargs)
参数名称 | 含义 |
---|---|
args |
前2个位置参数用来设置折线图上若干个端点坐标; 第一个参数位置:x坐标; 第二个参数位置:y坐标; 第三个参数位置:颜色、线型、标记符号形状:
|
kwargs |
|
——示例
import numpy as np
import matplotlib.pyplot as plt
#模拟数据
x = np.arange(0, 2 * np.pi, 0.1)
y = np.sin(x)
#画图并显示
plt.plot(x,y)
plt.show()
2 基本图像属性设置
2.1 坐标轴标题
#front(标签属性):字体、大小等
font = {'family' : 'Times New Roman','weight' : 'normal','size': 12}
plt.xlabel("x",font)
plt.ylabel(r"y",font)
2.2 坐标轴范围
plt.xlim(0,100)
plt.ylim(0,100)
2.3 坐标标签
plt.text(np.pi/2, max(y),'Max',fontsize=14) #添加文字
2.4 添加记号
plt.scatter([np.pi/2], [max(y)], marker='*', color='red', s=120) #画个记号
2.5 添加参考线
# 绘制水平线
plt.hlines(1, xmin = 0, xmax = 0.542, ls = '--', lw = 2,\
color = 'royalblue', label = 'hlines')
# 绘制竖直线
plt.vlines(0.0296, ymin = 0, ymax = 2, ls = '--', lw = 2,\
color = 'orange', label = 'vlines')
2.6 图标标题
plt.title('our first plot') #图标标题
2.7 设置figure大小、像素
plt.figure(figsize=(6, 4), dpi=100)
2.8 保存图片
plt.savefig("折线图01.png", dpi=200)
3 代码整合示例
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 2 * np.pi, 0.1)
y = np.sin(x)
plt.plot(x,y,color='green',linewidth=1,linestyle='--',marker='o',markersize=2)
plt.xlabel('X label') #x轴标题
plt.ylabel('Y label') #y轴标题
plt.xlim(0,2*np.pi) #设置x轴的范围
plt.ylim(-1,1) #设置y轴的范围
plt.text(np.pi/2, max(y),'Max',fontsize=14) #添加文字
plt.scatter([np.pi/2], [max(y)], marker='*', color='red', s=120) #画个记号
# 绘制水平线
plt.hlines(0, xmin = 0, xmax = 6, ls = '--', lw = 2,\
color = 'royalblue', label = 'hlines')
# 绘制竖直线
plt.vlines(3, ymin = -1, ymax = 1, ls = '--', lw = 2,\
color = 'orange', label = 'vlines')
plt.title('our first plot') #图标标题
plt.show()
4 中文显示问题解决方法
#图上显示中文的问题
import matplotlib.pyplot as plt
import matplotlib as mpl
# 生成x轴数据 列表推导式
x_data = [i for i in range(0, 55, 5)]
# 构造y轴数据
y_data1 = [0.5, 0.62, 0.72, 0.78, 0.85, 0.7, 0.64, 0.44, 0.29, 0.15, 0.09]
y_data2 = [0.5, 0.67, 0.71, 0.76, 0.79, 0.66, 0.58, 0.44, 0.38, 0.26, 0.18]
y_data3 = [0.5, 0.59, 0.72, 0.74, 0.76, 0.68, 0.58, 0.48, 0.4, 0.36, 0.3]
# matplotlib其实是不支持显示中文的 显示中文需要一行代码设置字体
mpl.rcParams['font.family'] = 'STKAITI' #'STKAITI'——字体
plt.rcParams['axes.unicode_minus'] = False # 解决坐标轴负数的负号显示问题
# 设置图形显示风格
#plt.style.use('ggplot')
# 设置figure大小、像素
plt.figure(figsize=(6, 4), dpi=100)
# 绘制三条折线 点的形状 颜色 标签:用于图例显示
plt.plot(x_data, y_data1, marker='^', color="k", label="设备1")
plt.plot(x_data, y_data2, marker="o", color="k", label="设备2")
plt.plot(x_data, y_data3, marker="s", color="k", label="设备3")
# x y 轴标签 字体大小
plt.xlabel("时间周期/min", fontsize=13)
plt.ylabel("直接信任度值", fontsize=13)
# 显示图例
plt.legend()
# 保存图片 展示show
plt.savefig("折线图01.png", dpi=200)
plt.show()
5 子图设置
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 2 * np.pi, 0.1)
y_sin = np.sin(x)
y_cos = np.cos(x)
# 创建画布,切分绘图区域
figure = plt.figure(figsize=(8,4),dpi=100)
#各子图位置
ax1 = plt.subplot(1, 2, 1)
ax2 = plt.subplot(1, 2, 2)
# 绘制两条曲线
l1=ax1.plot(x, y_sin,'r--') # 绘制第一个子图
l2=ax2.plot(x, y_cos,'b-') # 绘制第二个子图
#设置显示标题
ax1.set_title('sin curve')
ax2.set_title('cos curve')
#调整子图之间距离
plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=0.6, hspace=0.5)
plt.show()