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

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.dtcms.com/a/300064.html

相关文章:

  • C++11语法
  • 计算机中的数据表示
  • C++ TAP(基于任务的异步编程模式)
  • 停止所有docker容器的命令
  • 【SSM】第二章 网上蛋糕项目商城-首页
  • 进程线程协程深度对比分析
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 71(题目+回答)
  • HarmonyOS应用上架流程详解
  • element-plus安装以及使用
  • STM32概况
  • Matlab自学笔记六十五:解方程的数值解法(代码速成)
  • 如何查看电脑后门IP和流量?
  • ECSPI控制器
  • 【Spring AI】SiliconFlow-硅基流动
  • 如何使用Anaconda(miniconda)和Pycharm
  • 宝塔面板如何升级OpenSSL
  • LED滚动字幕投射器:免费好用的字幕工具
  • [硬件电路-91]:模拟器件 - 半导体与常规导体不一样,其电阻式动态变化的,浅谈静态电阻与动态电阻
  • 倍思鹿数值仿真-实现设备型号库的可编辑、便捷导入项目
  • python I 本地 html 文件读取方法及编码报错问题详解
  • 【坐车n次最少钱】2022-8-31
  • Python项目结构与打包工具实践
  • java测试题(下)
  • 创意竖状滚动轮播图
  • 嵌入式硬件篇---zigbee无线串口通信问题
  • 【科普】ESP8266 连接 OneNet 平台传输数据与 4G 模块传输数据在多个维度存在显著区别,主要体现在以下几个方面:
  • 802.11系列无线局域网标准详细对比
  • buuctf_一叶障目_just a rar_snack
  • golang实现一个规则引擎,功能包括实时增加、修改、删除规则
  • 基于springboot的图书借阅系统