python画图
这段代码,主要体现了多个子图的绘制、3D离散图、3维刻度格式的修改以及做标签的修改。
特别是3维刻度修改,不同于2D可以直接使用
plt.xticks(fontproperties='Times New Roman', size=12) plt.yticks(fontproperties='Times New Roman', size=12)
3D的刻度修改需要借助matplotlib 的font_manager。
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import font_manager
import numpy as np
# 读取CSV文件
# path1 = r"E:\gesture_recognition\gesture_while_walking\c2_3m\zwx\zwx_1\log_data_2.csv"
# path2 = r"E:\gesture_recognition\gesture_while_walking\c2_3m\zwx\zwx_2\log_data_2.csv"
# path3 = r"E:\gesture_recognition\gesture_while_walking\c2_3m\zwx\zwx_3\log_data_2.csv"
# path4 = r"E:\gesture_recognition\gesture_while_walking\c2_3m\zwx\zwx_4\log_data_2.csv"
# path5 = r"E:\gesture_recognition\gesture_while_walking\c2_3m\zwx\zwx_5\log_data_2.csv"
# #
path1 = r"E:\ly\ly图\ly\ly\ly_1_1\log_data_2.csv"
path2 = r"E:\ly\ly图\ly\ly\ly_2_1\log_data_2.csv"
path3 = r"E:\ly\ly图\ly\ly\ly_3_1\log_data_2.csv"
path4 = r"E:\ly\ly图\zwx\zwx\zwx_4\log_data_2.csv"
path5 = r"E:\ly\ly图\ly\ly\ly_5_1\log_data_2.csv"
csv_files = [path1,path2,path3,path4,path5]
plt.subplots_adjust(wspace=0.5, hspace=0.2)
# fig, axs = plt.subplots(1, 5, figsize=(20, 4))
fig = plt.figure(figsize=(20, 4))
set_title = ["PL","PS","CR","UP","KO"]
i=0
for i, csv_file in enumerate(csv_files):
data = np.loadtxt(csv_file, delimiter=",", skiprows=1)
data = data[data[:, 3] < 4.5]
data = data[data[:, 3] > 3.5]
data = data[data[:, 4] < 2]
data = data[data[:, 4] > -1]
data = data[data[:, 2] < 1]
data = data[data[:, 2] > -0.2]
# 提取x、y、z坐标数据
x = data[:, 2] # 第3列为x坐标
y = data[:, 3] # 第4列为y坐标
z = data[:, 4] # 第5列为z坐标
# velocity = data.iloc[:, 5] # 第6列为速度
# frame = data.iloc[:, 0] # 第6列为速度
# print(x)
# 创建三维坐标轴
# ax = axs[i]
ax = fig.add_subplot(1, 5, i+1, projection='3d') # 用add_subplot创建3D子图
# ax.xaxis.set_ticks([0.0,1.0,2.0,3.0,4.0])
ax.set_frame_on(True)
# ax.axis('off')
# 为速度设置颜色映射
# colors = velocity
colors = 'blue'
# 绘制点
ax.scatter(x, y, z, c='b', marker='o')
# 绘制点,设置颜色
scatter = ax.scatter(x, y, z, c=colors, cmap='viridis', marker='o')
# 设置子图标题
ax.set_title(set_title[i],fontname="Times New Roman",fontsize=16)
# # 设置颜色条
# cbar = plt.colorbar(scatter)
# cbar.set_label('velocity')
# cax = fig.add_axes([0.93, 0.15, 0.02, 0.7]) # [x, y, width, height]
# cbar = fig.colorbar(scatter, cax=cax)
# cbar.set_label('velocity')
plt.rcParams['axes.unicode_minus'] = False
ax.tick_params(which = 'major', labelsize=10, pad=0.5,width = 40)
ticks_font = font_manager.FontProperties(family='Times New Roman')
ticks_weight = font_manager.FontProperties(weight = "bold")
for tick in ax.get_xticklabels():
tick.set_fontproperties(ticks_font)
tick.set_fontproperties(ticks_weight)
for tick in ax.get_yticklabels():
tick.set_fontproperties(ticks_font)
tick.set_fontproperties(ticks_weight)
for tick in ax.get_zticklabels():
tick.set_fontproperties(ticks_font)
tick.set_fontproperties(ticks_weight)
# 设置坐标轴标签
ax.set_xlabel('X',fontname="Times New Roman",fontsize=16,labelpad=3)
ax.set_ylabel('Y',fontname="Times New Roman",fontsize=16,labelpad=3)
ax.set_zlabel('Z',fontname="Times New Roman",fontsize=16,labelpad=3)
# 调整子图之间的间距
# plt.tight_layout()
# 显示图形
plt.show()
浙公网安备 33010602011771号