Python 导入Excel三维坐标数据 生成三维曲面地形图(面) 4-4、线条平滑曲面(修改颜色)去除无效点

环境和包:

环境
python:python-3.12.0-amd64
包:
matplotlib 3.8.2
pandas     2.1.4
openpyxl   3.1.2
scipy      1.12.0

代码: 

import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from scipy.interpolate import griddata
from matplotlib.colors import ListedColormap
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import font_manager#解决中文乱码问题
plt.rcParams['font.sans-serif']=['kaiti']
plt.rcParams["axes.unicode_minus"]=False #解决图像中的"-"负号的乱码问题# 创建自定义颜色调色板
def create_custom_colormap(name, colors):colors = np.array(colors)cmap = plt.get_cmap(name)cmap.set_over(colors[-1])cmap.set_under(colors[0])cmap.set_bad(colors[0])return cmap# 定义一些颜色
#colors = ['red', 'blue', 'green', 'yellow', 'purple']
colors = ['red', 'orange', 'yellow', 'green', 'blue']
# 创建自定义颜色映射对象
my_colormap = create_custom_colormap('turbo', colors)
# 读取Excel文件
df = pd.read_excel('煤仓模拟参数41.xlsx')
#df = pd.read_excel('煤仓模拟参数222.xlsx')
#去除无效点
# 根据A列和B列分组,并将每组中C列的值更改为该组中C列的最小值
df['Z轴'] = df.groupby(['X轴', 'Y轴'])['Z轴'].transform('min')
#print('数量:',df)
# 提取x、y、z数据
x = df['X轴'].values
y = df['Y轴'].values
z = df['Z轴'].values# 创建三维坐标轴对象
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')# 使用平滑曲面插值方法创建地形图(假设使用样条插值方法)
#smoothed_terrain = ax.scatter(x, y, z, cmap='viridis')# 使用griddata函数进行插值,这里使用最近邻插值法,你也可以选择其他的插值方法
# 插值后的数据用于绘制平滑曲面地形图
grid_x, grid_y = np.mgrid[min(x):max(x):100j, min(y):max(y):100j]
grid_z = griddata((x, y), z, (grid_x, grid_y), method='cubic')
# 使用平滑曲面插值后的数据绘制地形图
# 绘制地形图(camp:coolwarm,viridis,plasma,inferno,magma,cividis,rainbow)
cmap = ListedColormap(['blue', 'green', 'yellow', 'orange','Red'])
ax.contourf(grid_x, grid_y, grid_z, levels=300, cmap=my_colormap)
#ax.contourf(grid_x, grid_y, grid_z, levels=60, cmap='viridis')
ax.grid(True)
# 设置x轴的刻度间隔
ax.set_xticks(np.arange(-7500, 7500, 2500))  # 从-7500到7500,步长为2500# 设置y轴的刻度间隔
ax.set_yticks(np.arange(-7500, 7500, 2500))  # 从-7500到7500,步长为2500# 设置z轴的刻度间隔
ax.set_zticks(np.arange(10000, 31000, 2500))   # 从10000到31000,步长为2500#计算面积,容积,最高料位等
# 查找同一列'Column A'中相同的值对应的'Column B'中的最小值并求平均值
#h = df.groupby('Y轴')['Z轴'].min().mean()-16452
h = df['Z轴'].mean()-16452#print(h)# 计算圆柱体的体积
#pi = np.pi
#V = np.pi * r**2 * h  # 圆柱体体积公式:πr²h  r 9000  h-16452  983.6  3000上下就是对的
#print(V)# 计算圆柱体的体积
r=9000
pi = np.pi
V = np.pi * r**2 * h  # 圆柱体体积公式:πr²h  r 9000  h-16452  983.6  3000上下就是对的
#print('V=',V)def mm3_to_m3(mm3):m3 = mm3 / (1000**3)return m3# 测试代码
mm3_value = V  # 1立方米等于1000000立方毫米
m3_value = mm3_to_m3(mm3_value)
print(m3_value)m3_value_1=m3_value+983.6
print('体积=',m3_value_1)zl=1.5*m3_value_1
print('质量=',zl)VP=m3_value_1/6022.72#6022.72为总桶的总体积
print('容积=',VP)# 找到该列的最大值和最小值
max_value = df['Z轴'].max()
min_value = df['Z轴'].min()
h=h+16342
# 打印结果
print("最高料位=",max_value)
print("最低料位=",min_value)
print("平均料位=",h)
# 添加标题和坐标轴标签
ax.set_title('三维平滑曲面地形图--去除无效点(颜色修改)')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
# 在图形上添加文本
str = "体积="+np.array2string(m3_value_1)+"\n质量="+np.array2string(zl)+"\n容积=容积="+"{:.2%}".format(VP)+"\n最高料位="+np.array2string(max_value)+"\n最低料位="+np.array2string(min_value)+"\n平均料位="+np.array2string(h)
ax.text(-5000,-5000,10000,str)
#ax.set_axis_off()  # 关闭坐标轴
plt.show()

效果图: 

资源下载(分享-->资源分享):

链接:https://pan.baidu.com/s/1UlP0lsma8OWchfV5kstEFQ 
提取码:kdgr

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/740089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

I2C驱动AT24C02

文章目录 一、硬件电路设备地址 二、使用步骤字节写:页写入:任意写:任意读: 一、硬件电路 设备地址 设备需要一个8位的设备地址字,后面跟着一个启动条件,以使芯片能够进行读或写操作 设备地址字由一个强制的1,0序列的前四个最有效的位,如所示…

(二)运行自己的stable-diffusion

前面的步骤如https://datawhaler.feishu.cn/docx/BwjzdQPJRonFh8xeiSOcRUI3n8b所示 拷贝、解压文件后,进入到stable-diffusion-webui的文件夹中,文件如下: 启动: 运行效果: 由于生成了好几个图,所以…

springboot的Converter和HttpMessageConveter

Converter和HttpMessageConveter是springboot和springmvc在处理请求的时候需要用到的。但是这两者的完全是不一样的,作用的地方也不一样。 1,springboot和springmvc处理请求的流程 先来回顾一下处理请求的流程: 用户向服务器发送请求&#…

Webbench,一个简单好用的web压力测试工具

Webbench 是一个简单且轻量级的Web服务器压力测试工具,它通过创建多个子进程来模拟多个客户端同时向服务器发送请求。运行平台是linux 安装Webbench: 1 下载Webbench源代码: wget http://www.ha97.com/code/webbench-1.5.tar.gz 2 解压源代码包&#…

焦点调制网络

摘要 https://arxiv.org/pdf/2203.11926.pdf 我们提出了焦点调制网络(简称FocalNets),其中自注意力(SA)被焦点调制模块完全取代,用于在视觉中建模令牌交互。焦点调制包含三个组件:(…

AIGC——ComfyUI 安装与基础使用

简介 ComfyUI是一个基于节点流程的稳定扩散操作界面,通过流程实现了更加精准的工作流定制和完善的可复现性。每个模块都有特定的功能,我们可以通过调整模块连接来实现不同的出图效果。然而,节点式的工作流也提高了一定的使用门槛。同时&…

一条 sql 语句可能导致的表锁和行锁以及死锁检测

锁 MDL 当对一个表做增删改查操作的时候,加 MDL 读锁;当要对表做结构变更操作的时候,加 MDL 写锁 ALTER TABLE tbl_name NOWAIT add column ... ALTER TABLE tbl_name WAIT N add column ... …

Deep Q-Networks(DQN)

Deep Q-Networks(DQN)是一种将深度学习技术与Q学习算法相结合的强化学习方法。通过使用深度神经网络来近似Q函数,DQN能够有效地处理具有高维状态空间的复杂问题,这在传统的Q学习方法中是难以实现的。DQN的提出标志着强化学习在处理…

jeecg 启动 微服务 更改配置本地host地址

1. windows系统下,在开始—运行里面输入(找不到运行菜单可直接按WinR键): C:\WINDOWS\system32\drivers\etc ,如图所示: 2. 用记事本 打开这个文件 在最下面输入这个即可

根据索引策略对elasticsearch中的索引进行管理(附带图文教程)

前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 一. 索引生命周期简介 想要了解更多可以看 : 索引生命周期 1.1 索引生命周期五种阶段 (1)Hot…

初学者必会的Python3文件操作

文件操作的步骤: 打开文件 -> 操作文件 -> 关闭文件 切记:最后要关闭文件。 打开文件 文件句柄 open(文件路径, 模式) 指定文件编码 文件句柄 open(文件路径,模式,encodingutf-8) 为了防止忘记关闭文件,可以使用上下文管理器来…

不知道显卡型号 用什么方法可以知道具体型号要下载驱动

环境: Win10 专业版 问题描述: 不知道显卡型号 用什么方法可以知道具体型号要下载驱动 解决方案: 通过以下几种方法来获取: 1.使用操作系统自带的设备管理器:在Windows操作系统中,你可以打开设备管理…

深入解析Java内存模型

一、背景 并发编程本质问题是:CPU、内存以及IO三者之间的速度差异。CPU速度快于内存、内存访问速度又远远快于IO,根据木桶理论,程序性能取决于最慢的操作,即IO操作。这样会出现CPU和内存交互时,CPU性能无法被充分利用…

GIS学习笔记(四):GIS数据可视化综合(矢量数据)

矢量数据 arcgis的主要可视化工具:属性 符号系统 符号系统 按类别 这里不会涉及到数字的大小因素,只是按照字符的分类去做可视化 “唯一值”的含义 “建筑年代”字段共有10个年份,一个年份也许有多个数据( eg.1990年的建筑有20个)&…

DayDreamInGIS 之 ArcGIS Pro二次开发 锐角检查

功能:检查图斑中所有的夹角,如果为锐角,在单独的标记图层中标记。生成的结果放在默认gdb中,以 图层名_锐角检查 的方式命名 大体实现方式:遍历图层中的所有要素(多部件要素分别处理)&#xff0…

C语言字符函数和字符串函数

前言 今天这篇博客咱们一起来认识一些特殊的函数,在编程的过程中,我们经常要处理字符和字符串,为了方便字符和字符串,C语言提供了一些库函数,让我们一起看看这些函数都有什么功能吧!!&#xff0…

基础刷题50之八(数组元素积的符号)

文章目录 前言一、题目二、力扣官方解释文心一言解释总结 前言 刚上研一,有人劝我好好学C,当时用的不多就没学,现在毕业上班了。在此亡羊补牢了 在此感谢力扣和文心一言 一、题目 数组元素积的符号 已知函数 signFunc(x) 将会根据 x 的正负…

python读取execl里的图片

正常的读取图片 from openpyxl import load_workbook from PIL import Imagefrom openpyxl import load_workbook wb load_workbook(rC:\Users\Administrator\Downloads\output1111.xlsx) ws wb[wb.sheetnames[0]] for image in ws._images:data image.anchor._fromif image…

深耕大屏营销领域的酷开科技,为品牌方带来更多的收益

互联网作为一种新的发展趋势,更是为我们提供了无数的机会和无限可能性,从电子商务时代到社交网络时代,价值文化也成为了品牌与消费者之间紧密联系的关键纽带。而在此背景下,OTT大屏拥有着独特的优势,作为OTT行业内的独…

数据库三大范式设计原则

数据库三大范式 第一范式(确保每列保持原子性) 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。 第二范式(确保表中的每列都和主键相关) 第二范式在第一范式的基础之上更进一层。第二范式需要确保数据…