python matplotlib figure-->限制elev旋转角度

news2024/9/27 21:29:08
环境
python:python-3.12.0-amd64
包:
matplotlib 3.8.2
当前限制的旋转范围是0°-60°
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

# 读取Excel文件中的空间坐标数据
df = pd.read_excel('煤仓模拟参数.xlsx')

# 假设您的数据在'X'和'Y'列中,高度数据在'Z'列中
x = df['X轴']
y = df['Y轴']
z = df['Z轴']  # 根据您的数据调整此列名

# 创建3D图形对象
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 绘制地形图
ax.plot_trisurf(x, y, z, cmap='viridis', linewidth=0, antialiased=False)

# 设置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

# 设置图形的长宽比例
ax.set_box_aspect([1, 1, 0.5])

# 将投影方式设置为正交投影
ax.set_proj_type('ortho')

# 设置初始视角
ax.view_init(elev=30, azim=0)

# 设置y轴范围
ax.set_ylim3d(-10000, 10000)

# 设置z轴范围
ax.set_zlim3d(0, 40000)

# 初始化鼠标交互
ax.mouse_init()

# 定义鼠标移动事件处理函数
def on_move(event):
    if event.inaxes == ax:
        # 获取当前视角的 elev 角度值
        elev = ax.elev - event.ydata / 10
        # 将 elev 视角限制在 0 到 60 度之间
        elev = max(min(elev, 60), 0)
        # 设置新的视角
        ax.view_init(elev=elev, azim=ax.azim)
        # 限制 elev 的旋转范围在 10 度到 50 度之间
        if elev < 10:
            elev = 10
            ax.view_init(elev=elev, azim=ax.azim)
        elif elev > 50:
            elev = 50
            ax.view_init(elev=elev, azim=ax.azim)

# 绑定鼠标移动事件
fig.canvas.mpl_connect('motion_notify_event', on_move)

# 显示图形
plt.show()

 

图片资源下载(分享-->python Matplotlib  Tkinter图片):

链接:https://pan.baidu.com/s/1vFOU52gG0bgK8RYuj-dzOg 
提取码:2oy0 

 

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

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

相关文章

更改elementui的箭头图片以及位置

//更改箭头位置 .el-tree-node__content > .el-tree-node__expand-icon {position: absolute;right: 12px; }//更改箭头图片 .el-tree-node__expand-icon {transform: rotate(-90deg); } .el-tree-node__expand-icon.expanded {transform: rotate(0deg); } // 有子节点 且已…

C语言-指针(上)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 本篇文章将为大家介绍C语言中的核心内容-指针&#xff0c;指针在C语言的中知识内容比…

Ubuntu23.10禁用Wayland

禁用前 编辑custom.conf文件 sudo vim /etc/gdm3/custom.conf 去掉WaylandEnablefalse前的#号 保存退出 重启系统 生效: 成功转换为X11

软件设计师软考题目解析17 --每日五题

想说的话&#xff1a;要准备软考了。0.0&#xff0c;其实我是不想考的&#xff0c;但是吧&#xff0c;由于本人已经学完所有知识了&#xff0c;只是被学校的课程给锁在那里了&#xff0c;不然早找工作去了。寻思着反正也无聊&#xff0c;就考个证玩玩。 本人github地址&#xf…

吴恩达机器学习-可选实验室-梯度下降-Gradient Descent for Linear Regression

文章目录 目标工具问题陈述计算损失梯度下降总结执行梯度下降梯度下降法成本与梯度下降的迭代预测绘制祝贺 目标 在本实验中&#xff0c;你将:使用梯度下降自动化优化w和b的过程 工具 在本实验中&#xff0c;我们将使用: NumPy&#xff0c;一个流行的科学计算库Matplotlib&…

如何利用pynlpir进行中文分词并保留段落信息

一、引言 nlpir是由张华平博士开发的中文自然处理工具&#xff0c;可以对中文文本进行分词、聚类分析等&#xff0c;它既有在线的中文数据大数据语义智能分析平台&#xff0c;也有相关的python包pynlpir&#xff0c;其github的地址是&#xff1a; Pynlpir在Github上的地址 这…

【分块三维重建】【slam】LocalRF:逐步优化的局部辐射场鲁棒视图合成(CVPR 2023)

项目地址&#xff1a;https://localrf.github.io/ 题目&#xff1a;Progressively Optimized Local Radiance Fields for Robust View Synthesis 来源&#xff1a;KAIST、National Taiwan University、Meta 、University of Maryland, College Park 提示&#xff1a;文章用了s…

Linux设备模型(十一) - platform设备

一&#xff0c;platform device概述 在Linux2.6以后的设备驱动模型中&#xff0c;需关心总线、设备和驱动这3个实体&#xff0c;总线将设备和驱动绑定。在系统每注册一个设备的时候&#xff0c; 会寻找与之匹配的驱动&#xff1b;相反的&#xff0c;在系统每注册一个设备的时…

输出梯形 C语言

解析&#xff1a;这个输出图形的题就是一个找规律加数学计算&#xff0c;我们发现每行比上一行多两个*&#xff0c;最后一行的*表达式为h&#xff08;h-1&#xff09;*2&#xff0c;即3*h-2&#xff0c;那么每一行就是一个先输出最后一行&#xff0d;当前行*个数个空格&#xf…

【Godot4自学手册】第十九节敌人的血量显示及掉血特效

这一节&#xff0c;我主要学习敌人的血量显示、掉血显示和死亡效果。敌人的血量显示和主人公的血量显示有所不同&#xff0c;主要是在敌人头顶有个红色的血条&#xff0c;受到攻击敌人的血条会减少&#xff0c;并且有掉血数量的文字显示&#xff0c;效果如下&#xff1a; 一、…

详解动态规划(算法村第十九关青铜挑战)

不同路径 62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finis…

QT Mingw32/64编译ffmpeg源码生成32/64bit库以及测试

文章目录 前言下载msys2ysamFFmpeg 搭建编译环境安装msys2安装QT Mingw编译器到msys环境中安装ysam测试 编译FFmpeg测试 前言 FFmpeg不像VLC有支持QT的库文件&#xff0c;它仅提供源码&#xff0c;需要使用者自行编译成对应的库&#xff0c;当使用QTFFmpeg实现播放视频以及视频…

【leetcode】用队列实现栈

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家刷题&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 点击查看题目 思路: 在做此题之前&#xff0c;我们先要实现队列&#xff0c;这在上个博客中已经写过&#…

算法43:动态规划专练(最长回文子串 力扣5题)---范围模型

之前写过一篇最长回文子序列的博客算法27&#xff1a;最长回文子序列长度&#xff08;力扣516题&#xff09;——样本模型 范围模型-CSDN博客 在那一篇博客中&#xff0c;回文是可以删除某些字符串组成的。比如&#xff1a; 字符串为&#xff1a;a1b3c4fdcdba&#xff0c; 那…

赵文彬将出席无磷锅炉工艺助剂在锅炉水节水节能应用

演讲嘉宾&#xff1a;赵文彬 集团副总/技术总监 上远未来水务集团有限公司 演讲题目&#xff1a;无磷锅炉工艺助剂在锅炉水节水节能方面的应用 会议简介 “十四五”规划中提出&#xff0c;提高工业、能源领城智能化与信息化融合&#xff0c;明确“低碳经济”新的战略目标&am…

c++之旅——第四弹

大家好啊&#xff0c;这里是c之旅第三弹&#xff0c;跟随我的步伐来开始这一篇的学习吧&#xff01; 如果有知识性错误&#xff0c;欢迎各位指正&#xff01;&#xff01;一起加油&#xff01;&#xff01; 创作不易&#xff0c;希望大家多多支持哦&#xff01; 本篇文章的主…

一些C语言题目

求10个整数中最大值 #include <stdio.h>//求10个整数中最大值 int main() {int arr[10]{2,5,8,6,19,1,7,3,11,3};int i 0;int max 0;/*for(i 0;i < 10;i){scanf("%d",&arr[i]);}*/for(i 0;i < 10;i){if(arr[i] > max)max arr[i];}printf(&q…

tomcat 反向代理 自建博客 修改状态页 等

一 自建博客 随后&#xff0c;拷贝到webapps下面 并且做软连接 随后重定向 并且下载 cat >/etc/yum.repos.d/mysql.repo <<EOF [mysql57-community] nameMySQL 5.7 Community Server baseurlhttp://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/ enabled1 g…

分享一款我自己开发的自动更新小工具

我们公司最近需要开发一款自动上传的工具&#xff0c;这个工具需要安装在用户电脑上&#xff0c;但是这样不利于维护&#xff0c;于是想到了自动更新这个功能&#xff0c;需要在打开工具时顺带打开自动更新的小工具&#xff0c;这样我们在更新代码后&#xff0c;用户那边就能自…

IDEA POM文件配置profile实现不同环境切换

目录 一、背景 二、实现 2.1创建不同的配置文件 2.2配置POM文件 三、效果 3.1本地使用 2.2线上或者测试环境使用 一、背景 在企业级开发中&#xff0c;为了不影响生产环境的项目运行&#xff0c;一般情况下都会划分生产环境、测试环境、开发环境。不同环境可以配置不同的…