Python绘制三维散点图并给散点标记记号

本文介绍了如何使用Python的matplotlib库来绘制三维散点图,并为每个散点标记上对应的名称或编号。通过简单的代码示例,展示了如何自定义散点图上的文字标签。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将三维散点绘制在三维空间中,并给相应的点 标记序号:

代码如下:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D


x=[1,2,3,4,5]
y=[2,1,4,3,5]
z=[6,5,4,3,1]


ax = plt.figure().add_subplot(111,projection='3d')
ax.scatter(x, y, z,c='r',marker='o')
for i in range(len(x)):
    ax.text(x[i],y[i],z[i],i)


当然也可以标记其他的名称了:

将最后两行的代码稍加修改就可以啦:

name=['北京','上海','广州','深圳','杭州']
for i in range(len(x)):
    ax.text(x[i],y[i],z[i],name[i])

画出来的图就是这样的了:


### 使用Matplotlib创建带有自定义X轴和Y轴的折线图 为了实现这一目标,可以利用 `matplotlib` 库中的多种功能来自定义图形的各种属性。以下是具体方法: #### 导入必要的库 首先需要导入 `matplotlib.pyplot` 模块以便后续操作。 ```python import matplotlib.pyplot as plt ``` #### 准备数据集 准备用于绘图的数据集合,这里假设已经拥有三组不同的时间序列数据作为例子展示。 ```python time_points = [1, 2, 3, 4, 5] # 时间刻度 expected_angular_velocity = [2, 4, 6, 8, 10] # 期望角速度指令信号 actual_angular_velocity = [1.9, 3.7, 5.8, 7.6, 9.5] # 实际角速度信号 heading_angle = [-10, -5, 0, 5, 10] # 实际航向角信号 special_time_marks = [2, 3, 4] # 特殊事件的时间标记 ``` #### 创建图形调整布局比例 通过指定宽度与高度参数控制最终输出图片的比例尺。 ```python fig, ax1 = plt.subplots(figsize=(10, 5)) plt.tight_layout() ``` #### 添加多条曲线到同一张图表上 对于每种类型的信号采用不同样式进行区分,且合理安排它们之间的层次关系。 ```python ax1.scatter(time_points, actual_angular_velocity, color='blue', label="Actual Angular Velocity", zorder=1) # 小圆圈表示实际角速度 ax1.plot(time_points, expected_angular_velocity, 'r-', lw=2, label="Expected Angular Velocity", zorder=2) # 红色实线表示预期角速度 ax2 = ax1.twinx() # 新建第二个y轴共享相同的x轴 ax2.plot(time_points, heading_angle, 'g-', lw=2, label="Heading Angle", zorder=3) # 绿色实线表示航向角度 ``` #### 自定义坐标轴标签及范围 设定两个独立的 Y 轴名称以及 X 轴上的文字说明;同时也可以限定各轴数值区间以确保视觉效果更佳。 ```python ax1.set_xlabel('Time') ax1.set_ylabel('Angular Velocity (rad/s)', color='black') ax2.set_ylabel('Heading Angle (degree)', color='green') # 设定合理的显示界限 ax1.set_ylim([min(actual_angular_velocity)-1, max(expected_angular_velocity)+1]) ax2.set_ylim([-max(abs(heading_angle))-5, max(abs(heading_angle))+5]) for tick in ax1.get_xticklabels(): tick.set_rotation(45) ``` #### 插入特殊时刻指示线 针对给定的关键时间节,在相应位置添加垂直分割线帮助观察者理解重要转折的位置。 ```python for tm in special_time_marks: ax1.axvline(x=tm, linestyle="--", alpha=.5, c="gray") # 加入灰色虚线标注特定瞬间 ``` #### 完善其他细节部分 最后一步就是加入图例解释各个线条含义,保存或呈现整个图像文件。 ```python lines, labels = ax1.get_legend_handles_labels() lines2, labels2 = ax2.get_legend_handles_labels() ax2.legend(lines + lines2, labels + labels2, loc='upper left') plt.title("Comparison of Expected and Actual Signals Over Time") plt.savefig('./customized_line_chart.png', dpi=300, bbox_inches='tight') # 可选:保存高质量PNG格式的结果图为本地磁盘文件 plt.show() ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值