当前位置: 首页 > java >正文

matplotlib库 点线图,直方图,多子图与三维空间的可视化

目录

一.基础绘图

1.绘制点线图:

2.直方图:

3.多子图绘制

二. 三维空间可视化

1.数据准备

2.绘图实现

3.完整代码呈现


一.基础绘图

1.绘制点线图:

通过plt.plot(x, y)传入X/Y轴数据,设置颜色(color)和标记形状(marker),添加标题(title)和轴标签(xlabel/ylabel)。

import matplotlib.pyplot as plt
import numpy as np
x=np.array([1,2,3,4,5])
y=np.array([10,20,30,40,50])
plt.plot(x,y,color='red',marker='o')#点线图
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.show()

2.直方图:

使用plt.hist()绘制单值条形图

data = [1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 5, 5, 5]
plt.hist(data,color='red')
plt.show()

3.多子图绘制

通过plt.subplot()在同一画布上分区域绘制多个图形(如正弦、余弦函数),结合np.linspace()生成等间隔数据点。

使用 plt.subplot 创建两行两列的子图(共4个),图像大小为10x8(单位未明确)。

  • 子图通过矩阵(ndarray)管理,通过索引(如 ax[0,0])在指定位置添加数据:
    • 第0行第0列:绘制 X 和 y1(红色),标题为 X sinex
    • 第0行第1列:绘制 X 和 y2(绿色),标题为 cosinex
    • 第1行第0列:绘制 X 和 y3(蓝色)。
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,100)
y1=np.sin(x)
y2=np.cos(x)
y3=np.tan(x)
y4=np.sin(x**2)
fig,axs=plt.subplots(2,2,figsize=(10,8))
axs[0,0].plot(x,y1,'r')
axs[0,0].set_title('sin(x)')
axs[0,1].plot(x,y2,'g')
axs[0,1].set_title('cos(x)')
axs[1,0].plot(x,y3,'b')
axs[1,0].set_title('tan(x)')
axs[1,1].plot(x,y4,'m')
axs[1,1].set_title('sin(x^2)')
plt.show()

二. 三维空间可视化

1.数据准备

  • 数据datingTestSet2.txt包含三列特征(旅行路程、游戏时间百分比、零食重量百分比)和一列分类结果(1/2/3类),数据展示部分如下。
  • 需按分类结果筛选数据:类别1,爱学习(红色)、类别2,一般(蓝色)、类别3,爱玩(黄色)。
  • 利用numpy库读取txt文件数据
    import numpy as np
    import matplotlib.pyplot as plt
    data = np.loadtxt('datingTestSet2.txt')
    
  • 将各类别的数据用代码分别划分出来
    data_1=data[data[:,-1]==1]
    data_2=data[data[:,-1]==2]
    data_3=data[data[:,-1]==3]
    

2.绘图实现

  • 工具选择:使用 matplotlib 的 scatter 函数绘制三维散点图。
  • 步骤
    • 创建三维画布:plt.figure().add_subplot(projection='3d')
      fig=plt.figure()
      ax=plt.axes(projection='3d')
    • 分三次添加数据点:分别筛选类别1、2、3的数据,传入对应特征列(X/Y/Z轴),并指定颜色和标记形状(圆形、三角形等)。
      ax.scatter(data_1[:,0],data_1[:,1],data_1[:,2],c='red',marker='o',label='1')
      ax.scatter(data_2[:,0],data_2[:,1],data_2[:,2],c='blue',marker='^',lable='2')
      ax.scatter(data_3[:,0],data_3[:,1],data_3[:,2],c='yellow',marker='+',label='3')
    • 设置坐标轴标签
      ax.set(xlabel='Xaxes',ylabel='Yaxes',zlabel='Zaxes')
      plt.show()

3.完整代码呈现

import numpy as np
import matplotlib.pyplot as plt
data = np.loadtxt('datingTestSet2.txt')data_1=data[data[:,-1]==1]
data_2=data[data[:,-1]==2]
data_3=data[data[:,-1]==3]fig=plt.figure()
ax=plt.axes(projection='3d')
ax.scatter(data_1[:,0],data_1[:,1],data_1[:,2],c='red',marker='o',label='1')
ax.scatter(data_2[:,0],data_2[:,1],data_2[:,2],c='blue',marker='^',label='2')
ax.scatter(data_3[:,0],data_3[:,1],data_3[:,2],c='yellow',marker='+',label='3')
ax.set(xlabel='Xaxes',ylabel='Yaxes',zlabel='Zaxes')
plt.show()

http://www.xdnf.cn/news/16402.html

相关文章:

  • 从0到1学Pandas(六):Pandas 与数据库交互
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-33,(知识点:二极管结温,热阻,二极管功耗计算)
  • golang实现一个规则引擎,功能包括实时增加、修改、删除规则
  • Jenkins持续集成工具
  • ACO-OFDM 的**频带利用率**(单位:bit/s/Hz)计算公式
  • Unity GenericMenu 类详解
  • 酒店智能门锁SDK新V门锁系统接口函数[2025版]Delphi 7.0——东方仙盟硬件接口库
  • 学习游戏制作记录(剑投掷技能)7.26
  • 中文语音识别与偏误检测系统开发
  • Java基础-文件操作
  • Spring boot Grafana优秀的监控模板
  • 生猪产业新生态:结构调整与种养结合,筑牢农业强国根基
  • HashMap(JDK1.7、JDK1.8)原理与结构分析与synchronizedMap()
  • 【LeetCode刷题指南】--队列实现栈,栈实现队列
  • C 语言详解:特性、应用与发展
  • GRE和MGRE综合实验
  • DMDSC安装部署教程
  • 基于cooragent的旅游多智能体的MCP组件安装与其开发
  • Android Jetpack 组件库 ->Jetpack Navigation (下)
  • 从治理到共情——平台伦理的乡村共建之路
  • 在 C# 中,问号 ? 的一些作用
  • HTML初学者第五天
  • 启动式service
  • 强化学习(第三课第三周)
  • 在 Scintilla 中为 Squirrel 语言设置语法解析器的方法
  • Kubernetes 配置管理
  • odoo代码分析(一)
  • 认识泛型、泛型类和泛型接口
  • 大语言模型 LLM 通过 Excel 知识库 增强日志分析,根因分析能力的技术方案(2):LangChain + LlamaIndex 实现
  • Java学习第七十七部分——JVM运行时数据区