首页 > 编程语言 >python画图|3D直方图基础教程

python画图|3D直方图基础教程

时间:2024-09-11 16:53:46浏览次数:12  
标签:python xx arange yy 直方图 基础教程 np 3D

前述已经完成了直方图和3D图的基本学习,链接如下:

直方图:python画图|水平直方图绘制-CSDN博客

3D图:python画图|水平直方图绘制-CSDN博客

现在我们尝试把二者结合,画3D直方图。

【1】官网教程

首先,依然是来到官网,链接如下;

Demo of 3D bar charts — Matplotlib 3.9.2 documentation

官网输出了好看的3D直方图,为此,尝试解读代码。

【2】代码解读

 首先是引入numpy和matplotlib模块:

import matplotlib.pyplot as plt  #引入matplotlib模块画图
import numpy as np #引入numpy模块做数学计算

然后声明了要画3D图:

# set up the figure and Axes
fig = plt.figure(figsize=(8, 3)) #定义要画图
ax1 = fig.add_subplot(121, projection='3d') #声明要画3D图,位于左侧
ax2 = fig.add_subplot(122, projection='3d') #声明要画3D图,位于右侧

再之后定义了一组数据备用:

# fake data
_x = np.arange(4) #_x取值[0 1 2 3]
_y = np.arange(5) #_x取值[0 1 2 3 4]
_xx, _yy = np.meshgrid(_x, _y) #生成一个_x和_y组成的矩阵
x, y = _xx.ravel(), _yy.ravel() #使用ravel()把_xx和_yy拉成一维数组

这里稍微复杂一些,因此我们先把数据输出。

前半部分,_x = np.arange(4)=[0 1 2 3],_y = np.arange(5)=[0 1 2 3 4],这家可以直接看出来的数据,然后出现了_xx和_yy,再之后它们又被拉平成一位数据赋值给x和y。

在编辑器输入以下代码:

import matplotlib.pyplot as plt  #引入matplotlib模块画图
import numpy as np #引入numpy模块做数学计算

# set up the figure and Axes
fig = plt.figure(figsize=(8, 3)) #定义要画图
ax1 = fig.add_subplot(121, projection='3d') #声明要画3D图,位于左侧
ax2 = fig.add_subplot(122, projection='3d') #声明要画3D图,位于右侧

# fake data
_x = np.arange(4) #_x取值[0 1 2 3]
_y = np.arange(5) #_x取值[0 1 2 3 4]
_xx, _yy = np.meshgrid(_x, _y) #生成一个_x和_y组成的矩阵
x, y = _xx.ravel(), _yy.ravel() #使用ravel()把_xx和_yy拉成一维数组
print('_x=',_x)
print('_y=',_y)
print('_xx=',_xx)
print('_yy=',_yy)
print('x=',x)
print('y=',y)

输出结果为:

_x= [0 1 2 3]
_y= [0 1 2 3 4]
_xx= [[0 1 2 3]
 [0 1 2 3]
 [0 1 2 3]
 [0 1 2 3]
 [0 1 2 3]]
_yy= [[0 0 0 0]
 [1 1 1 1]
 [2 2 2 2]
 [3 3 3 3]
 [4 4 4 4]]
x= [0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3]
y= [0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4]

可见meshgrid把_xx和_yy都定义成5X4矩阵,然后又被ravel都拉成一维矩阵。

换一个说法,_x = np.arange(4)=[0 1 2 3],_y = np.arange(5)=[0 1 2 3 4],在_x和_y中任取一个数,按照上下两列的形式排列,出来的结果就是x和y。

继续解读:定义直方图的基本属性

top = x + y #定义top=x+y
bottom = np.zeros_like(top) #返回一个一维top列的0矩阵
width = depth = 1 #定义width = depth = 1

定义画图和输出图形:

ax1.bar3d(x, y, bottom, width, depth, top, shade=True) #定义画3D图,有阴影
ax1.set_title('Shaded') #设置3D图名字Shaded

ax2.bar3d(x, y, bottom, width, depth, top, shade=False) #定义画3D图,无阴影
ax2.set_title('Not Shaded') #设置3D图名字Not Shaded

plt.show() #输出图形

需要注意的是, bottom其实是方块的底部,bottom = np.zeros_like(top)就是要求下一个方块叠放在上一个方块上。

输出结果为;

图1

由图1可见,3D直方图左侧有阴影,右侧没有。

【3】总结

 本文学习了3D直方图基本画法。

标签:python,xx,arange,yy,直方图,基础教程,np,3D
From: https://blog.csdn.net/weixin_44855046/article/details/142144001

相关文章

  • 【Python机器学习】循环神经网络(RNN)——循环网络的记忆功能
    文档中的词很少是完全独立的,它们的出现会影响文档中的其他词或者收到文档中其他词的影响:Thestolencarspedintothearena.Theclowncarspedintothearena.这两句话可能会产生两种完全不同的情感感受。这两个句子的形容词、名词、动词、介词短语结构式完全相同的,但......
  • python身份证二要素、三要素实名认证接口调用示例
    身份证二要素、三要素实名认证接口,实时快速核实身份信息是否真实有效,根据姓名、身份证号码核对身份信息是否一致,核验结果实时返回,不限性别、不限年龄,各类网站程序和APP均可接入。接口介绍:实时快速核实身份信息是否真实有效,不限性别、不限年龄。更新时间:实时文件......
  • 使用python进行PostgreSQL 数据库连接
    使用python进行PostgreSQL数据库连接PostgreSQL数据库是最常用的关系型数据库之一,最吸引人的一点是它作为开源数据库且具有可拓展性,能够提供丰富的应用。运用python可以很简单的建立PostgreSQL数据库连接,其中最受欢迎的就是psycopg。1.安装psycopg2Psycopy是针对python的Po......
  • python基本数据类型
    python基本数据类型标准数据类型Python3中常见的数据类型有:Number(数字)String(字符串)bool(布尔类型)List(列表)Tuple(元组)Set(集合)Dictionary(字典)Python3的六个标准数据类型中:不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组);可变数据(3个):List(列表)、Dictionary(字典)、S......
  • 【Python脚本】自定义Payload的ICMP报文发送
    原创Evan运维小站OpsStationICMP(InternetControlMessageProtocol)是一种网络层协议,主要用于在IP主机、网关之间传递控制消息。通常,ICMP报文具有固定的格式,并用于发送错误报告或与网络诊断相关的消息。标准ICMP报文不包含用户定义的payload内容。但是,你可以通过发送一个"......
  • Python 全局变量使用指南
    Python中优雅使用全局变量的指南在Python编程中,全局变量的使用和管理是非常重要的,尤其是在需要共享配置信息、常量或需要在多个模块之间共享数据时。相比其他语言,Python通过模块级别变量、数据类、环境变量等方式为我们提供了多种实现全局变量的途径。以下将详细介绍几......
  • Python系列(11)- 使用 Pipenv 搭建 Django + Rest Framework 开发环境
    Django是一个开放源代码的Web应用框架,用Python语言编写的。采用了MTV的框架模式,即模型Model,模版Template和视图View。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。Django:http://www.djangoproject.comGitHub:htt......
  • DuckDB简单使用及Python操作
    DuckDB简介DockUB官网DuckDB是一款开源免费类似Sqlite的嵌入式数据库,支持直接使用内存或单个文件作为数据库。DuckDB着重于数据处理和分析,是一个款OLAP(联机分析处理)类型的数据库,主要特点如下:开源免费,MIT协议功能完善,支持标准SQL、事务、二级索引等高性能,低消耗(内存/文件......
  • 基于Python的黑龙江旅游景点数据分析系统 基于Flask的旅游景点爬虫可视化平台(程序+LW+
    ......
  • CTF - Python 沙箱绕过与任意命令执行技巧
    这些是一些绕过Python沙箱保护并执行任意命令的技巧。命令执行库首先,您需要知道是否可以直接使用已导入的某些库执行代码,或者是否可以导入以下这些库:os.system("ls")os.popen("ls").read()commands.getstatusoutput("ls")commands.getoutput("ls")commands.getsta......