如何用Python创建漂亮的绘图

在这里插入图片描述


包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】!

在这里插入图片描述

用Python绘制高质量图表

  • 我们将以一组随机生成的数据为例,逐步优化绘图效果。目标是实现一个带分类标签的3D散点图,并导出为高清矢量图。

1.生成数据与基础绘图
import numpy as np
import matplotlib.pyplot as plt

# 生成随机数据矩阵
n_samples = 1024
n_features = 3  
# 均值、标准差、峰度
feature_matrix = np.random.rand(n_samples, n_features)

# 基础3D绘图(初阶版)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(feature_matrix[:, 0], feature_matrix[:, 1], feature_matrix[:, 2])
plt.show()

在这里插入图片描述

效果:散点堆砌一团,无颜色区分,坐标轴标签缺失,整体缺乏信息量(类似图1)。
2.进阶优化:分类标签与样式调整
# 设置分类标签和颜色
target_names = ['Health', 'Broken', 'Unknown']
colors = ['blue', 'red', 'green']

# 随机分配样本类别(模拟真实数据)
np.random.seed(42)
targets = np.random.choice([0, 1, 2], size=n_samples)

# 创建画布并绘图
fig = plt.figure(figsize=(12, 8), dpi=150)
ax = fig.add_subplot(111, projection='3d')

# 按类别绘制散点
for i in range(3):
mask = (targets == i)
ax.scatter(feature_matrix[mask, 0],
feature_matrix[mask, 1],
feature_matrix[mask, 2],
c=colors[i],
label=target_names[i],
s=50,          

# 点大小
alpha=0.8,     
# 透明度
edgecolor='w') # 边缘颜色

# 添加标签和样式调整
ax.set_xlabel('$\mu$ (Mean)', fontsize=14, labelpad=15)  # LaTeX公式支持
ax.set_ylabel('$\sigma$ (Std)', fontsize=14, labelpad=15)
ax.set_zlabel('$\kappa$ (Kurtosis)', fontsize=14, labelpad=15)
ax.set_title('Feature Matrix Visualization', fontsize=16, pad=20)

# 设置坐标轴范围和网格
ax.set_xlim(feature_matrix[:, 0].min(), feature_matrix[:, 0].max())
ax.set_ylim(feature_matrix[:, 1].min(), feature_matrix[:, 1].max())
ax.set_zlim(feature_matrix[:, 2].min(), feature_matrix[:, 2].max())
ax.grid(True, linestyle='--', alpha=0.6)

# 添加图例并调整视角
ax.legend(loc='upper left', fontsize=12
ax.view_init(elev=20, azim=45)  # 调整3D视角
plt.tight_layout()``plt.show()

在这里插入图片描述

优化效果:
  • 散点按类别颜色区分,边缘清晰
  • 坐标轴使用LaTeX公式字体
  • 网格线为虚线,提升层次感
  • 视角调整后,数据分布更直观(类似图2)。
3.终极技巧:导出高清矢量图
# 配置全局字体(需系统安装LaTeX)
plt.rcParams.update({"text.usetex": True,       
# 启用LaTeX渲染
"font.family": "serif",    
# 使用衬线字体
"font.serif": ["Times New Roman"]})
# 导出为PDF(矢量格式,无限放大不模糊)
fig.savefig('feature_matrix.pdf',
bbox_inches='tight',pad_inches=0.1,transparent=True)  # 透明背景,便于论文嵌入
# 导出为PNG(高清位图)
fig.savefig('feature_matrix.png',
dpi=300,            
# 分辨率
facecolor='white')  # 背景填充白色
总结与建议
  • 全局样式统:通过"plt.rcParams"配置字体、颜色主题,避免重复设置。
  • 善用LaTeX公式:坐标轴标签中的数学符号能大幅提升图表专业度。
  • 矢量格式优先:论文或报告中使用PDF/EPS格式,确保缩放不失真。
  • 3D绘图慎用:若需印刷,可转为多视图2D图(如Seaborn的"pairplot")。
4.用Seaborn增添美观
  • 由于Seaborn本身不支持3D绘图,我们可以结合Matplotlib的3D功能,同时利用Seaborn的样式和调色板。
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 生成随机数据矩阵
n_samples = 1024
n_features = 3  # 均值、标准差、峰度
feature_matrix = np.random.rand(n_samples, n_features)

# 将数据转换为DataFram
df = pd.DataFrame(feature_matrix, columns=['Mean', 'Std', 'Kurtosis'])

# 随机分配样本类别(模拟真实数据)
np.random.seed(42)
df['Target'] = np.random.choice(['Health', 'Broken', 'Unknown'], size=n_samples)

# 基础散点图(初阶版)
sns.scatterplot(data=df, x='Mean', y='Std', hue='Target')
plt.show()
from mpl_toolkits.mplot3d 
import Axes3D

# 设置Seaborn主题和调色板
sns.set_theme(style="whitegrid", palette="deep")

# 创建画布并绘图
fig = plt.figure(figsize=(12, 8), dpi=150)
ax = fig.add_subplot(111, projection='3d')

# 按类别绘制散点
for i, target in enumerate(df['Target'].unique()):
mask = (df['Target'] == target)ax.scatter(df.loc[mask, 'Mean'],
df.loc[mask, 'Std'],
df.loc[mask, 'Kurtosis'],
label=target,
s=50,          # 点大小
alpha=0.8,     # 透明度
edgecolor='w') # 边缘颜色

# 添加标签和样式调整
ax.set_xlabel('$\mu$ (Mean)', fontsize=14, labelpad=15)  # LaTeX公式支持
ax.set_ylabel('$\sigma$ (Std)', fontsize=14, labelpad=15)
ax.set_zlabel('$\kappa$ (Kurtosis)', fontsize=14, labelpad=15)
ax.set_title('Feature Matrix Visualization', fontsize=16, pad=20)

# 设置坐标轴范围和网格
ax.set_xlim(df['Mean'].min(), df['Mean'].max())
ax.set_ylim(df['Std'].min(), df['Std'].max())
ax.set_zlim(df['Kurtosis'].min(), df['Kurtosis'].max())
ax.grid(True, linestyle='--', alpha=0.6)

# 添加图例并调整视角
ax.legend(loc='upper left', fontsize=12)
ax.view_init(elev=20, azim=45)  # 调整3D视角
plt.tight_layout()
plt.show()

在这里插入图片描述

优化效果:
  • 散点按类别颜色区分,边缘清晰
  • 坐标轴使用LaTeX公式字体
  • 网格线为虚线,提升层次感
  • 视角调整后,数据分布更直观(类似图2)。

总结与建议
  • Seaborn主题统一:通过"sns.set_theme()"配置全局样式,避免重复设置。
  • 结合Matplotlib:Seaborn虽不支持3D绘图,但可与Matplotlib无缝结合,发挥各自优势。
  • 善用LaTeX公式:坐标轴标签中的数学符号能大幅提升图表专业度。
  • 矢量格式优先:论文或报告中使用PDF/EPS格式,确保缩放不失真。
    图片

总结

  • 最后希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!

文末福利

  • 最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】领取!
  • ① Python所有方向的学习路线图,清楚各个方向要学什么东西
  • ② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
  • ③ 100多个Python实战案例,学习不再是只会理论
  • ④ 华为出品独家Python漫画教程,手机也能学习

可以扫描下方二维码领取【保证100%免费在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值