使用颜色图作为第四维(x、y、z 的函数)绘制 3D 表面

2023-11-24

我正在尝试绘制一个 3d 表面,其中三个维度中的每一个都位于单独的值数组中,并且每个坐标处的表面颜色是 x、y、z 的函数。一种 numpy.pcolormesh,但是 4D,而不是 3D。 3D 图由下式给出:

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
fig = plt.figure()
ax = fig.gca(projection='3d')
x = np.logspace(-1.,np.log10(5),50)
y = np.linspace(6,9,50)
z = np.linspace(-1,1,50)
colors = LikeBeta(y,range(50),range(50))
ax.plot_trisurf(x,y,z,cmap=colors,linewidth=0.2)

where

def LikeBeta(rho0,r0,beta):
    M0 = 10**rho0*r0_array[r0]**3
    I = cst*M0*sigma_los_beta[beta,:,r0]
    S = dv**2+I
    res = (np.log(S) + (v-u)**2/S).sum()
    return res/2.

大概是cmap=colors是错误的,但问题出在其他地方。我收到以下错误:

----> 8 colors = LikeBeta(y,range(50),range(50))
----> 4     I = cst*M0*sigma_los_beta[beta,:,r0]
    ValueError: operands could not be broadcast together with shapes (50,) (50,353)

Indeed sigma_los_beta是一个我单独评估并且具有形状的数组(50,353,50)那353个是我必须有的数据。

我怎样才能把这个函数转换成与其他条目兼容的形式plot_trisurf?

抱歉,但我无法提供最小的工作代码,因为 dv、v 和 u 是数据。 非常感谢您的帮助。干杯


This答案解决了 4d 曲面图问题。它使用 matplotlib 的plot_surface函数而不是plot_trisurf.

基本上,您希望将 x、y 和 z 变量重塑为相同维度的二维数组。要将第四个维度添加为颜色图,您必须提供另一个与轴变量维度相同的二维数组。

下面是 3D 绘图的示例代码,其中颜色图对应于 x 值。这facecolors参数用于根据您的喜好更改颜色图。请注意,它的值是从to_rgba()函数在matplotlib.cm.ScalarMappable class.

import matplotlib
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

# domains
x = np.logspace(-1.,np.log10(5),50) # [0.1, 5]
y = np.linspace(6,9,50)             # [6, 9]
z = np.linspace(-1,1,50)            # [-1, 1]

# convert to 2d matrices
Z = np.outer(z.T, z)        # 50x50
X, Y = np.meshgrid(x, y)    # 50x50

# fourth dimention - colormap
# create colormap according to x-value (can use any 50x50 array)
color_dimension = X # change to desired fourth dimension
minn, maxx = color_dimension.min(), color_dimension.max()
norm = matplotlib.colors.Normalize(minn, maxx)
m = plt.cm.ScalarMappable(norm=norm, cmap='jet')
m.set_array([])
fcolors = m.to_rgba(color_dimension)

# plot
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(X,Y,Z, rstride=1, cstride=1, facecolors=fcolors, vmin=minn, vmax=maxx, shade=False)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
fig.canvas.show()

我引用的答案(和其他人)提到你应该规范你的第四维数据。似乎可以通过像我在代码示例中所做的那样显式设置颜色图的限制来避免这种情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用颜色图作为第四维(x、y、z 的函数)绘制 3D 表面 的相关文章

随机推荐

  • Android 中的 Button 类膨胀错误

    我有一个最小 sdk 16 到 23 的应用程序 我想尽可能多地使用 Material design 它还必须是全屏应用程序 包含 AppCompat 支持库 现在我有一些按钮的登录活动
  • 如何自动更新 Windows Mobile 应用程序

    我有一个 net cf 3 5 Windows Mobile 应用程序 我的客户希望它具有自动更新功能 这是我到目前为止所拥有的 使用智能设备 CAB 项目创建 CAB 这是否足够好 或者我应该在这里做其他事情 2 获取应用程序版本号 As
  • iOS - 关闭作为 inputView 呈现的 UIDatePicker

    我的 UI 中有一个文本字段 当选择它时会显示 UIDatePicker 而不是默认键盘 我如何设置一个按钮以便在用户完成后关闭选择器 我所做的是将我的 inputView 作为自定义视图 其中包含UIDatePicker其上方有一个工具栏
  • $this->load->model() 在 CodeIgniter 中不起作用

    我正在使用 CodeIgniter 2 1 2 这是我现在的情况 我有一个名为 math php 的模型C wamp www cr8v application models 我正在尝试将其加载到我的控制器中C wamp www cr8v a
  • Ajax文件下载问题

    我正在我的应用程序中下载动态文件 使用 iframe 模拟 ajax 我正在做的是 当发出下载请求时 我将创建一个动态的不可见 iframe 并将 iframe 的 src 设置为下载网址 我能够成功下载文件 但要求是显示下载一旦下载开始
  • jQuery 1.10.1 在选择上设置不存在的值

    有人可以解释一下这种行为
  • Java内存模型中的Happens-Before关系

    关于 JLS ch17线程和锁 它表示 如果一个操作发生在另一个操作之前 则第一个操作对第二个操作可见并且在第二个操作之前排序 我想知道 1 之前订购 到底是什么意思 因为即使action a发生在action b之前 在某些实现中acti
  • Bootstrap 3+Rails 4 - 某些 Glyphicons 不工作

    我正在尝试在我的 Rails 4 应用程序中使用 Bootstrap 3 已关注this使用 bootstrap saas 设置 bootstrap 3 的教程thisgithub 页面 Bootstrap 工作正常 但字形图标未按预期工作
  • C# 如何正确地对遵循装饰器模式的类进行单元测试?

    我对单元测试相当陌生 我们说话时我实际上正在研究它 我的目标当然是能够在下面的类中测试该方法 该类只是检查输入是否已经在缓存中 如果输入不在缓存中 它将返回输入的反转形式 虽然实现不在这里 但假设它存在 因为目的只是为了测试 基本上 目标是
  • 获取与 int 值关联的枚举

    以前 我将 LegNo 枚举简单定义为 NO LEG LEG ONE LEG TWO 并通过调用return LegNo values i 我能够获得与每个枚举相关的值 但现在我决定我想要LegNo enum NO LEG为 int 1 而
  • 如何传递列表元素作为引用?

    我将列表的单个元素传递给函数 我想修改该元素 从而修改列表本身 def ModList element element TWO l list l append one l append two l append three print l
  • 在 iOS/Swift 中创建并导出为 Base64 的 RSA 公钥在 Java 中无法识别

    TL DR 在 iOS 中生成并存储在钥匙串中 导出为 base64 并发送到 java 后端的 RSA 公钥无法识别 我正在 iOS 应用程序中实现聊天加密功能 并使用对称 非对称密钥来处理它 无需过多讨论细节 在后端 我使用用户的公钥来
  • 将.net core 5.0发布到单个exe文件中

    有谁能够帮助我 我正在尝试将我的 net core 控制台应用程序发布到单个文件中 我正在使用这个命令 dotnet publish r win x64 c Release p PublishSingleFile true p Publis
  • 如何在不登录 Xcode 8 的情况下构建 IPA

    我已经在SO和其他地方进行了搜索 我只发现这个答案的旧版本似乎不再起作用 还有大量其他内容甚至与最新版本不相关 长话短说 我们有一位开发人员向我们提供了 IPA 但他不想加入我们的开发人员小组 我告诉他给我们发送一个未签名的 IPA 但我们
  • 如何访问 Windows 中的特殊目录?

    在 Windows 上检索用户桌面 文档文件夹和其他系统文件夹的 C 语法是什么 您可以使用环境 GetFolderPath与环境 特殊文件夹枚举 例如 string desktopPath Environment GetFolderPat
  • WPF MVVM KeyBinding 无法立即识别并且并不总是有效

    无论出于何种原因 当我的 WPF 应用程序加载时 我的 UserControl 的 KeyBindings 就无法工作 它们在我按下表单上的按钮后起作用 但当我通过单击或 alt tab 键或移动或类似方式将焦点设置到表单时则不起作用 当它
  • Angular7 - 无法绑定到“dataSource”,因为它不是“mat-table”的已知属性

    我正在使用 Angular 7 0 2 在尝试使用以下命令创建表时遇到此错误角材料 无法绑定到 dataSource 因为它不是 mat table 的已知属性 应用程序路由 module ts import NgModule from a
  • 全新安装 Rails 并收到 OpenSSL 错误:“已经初始化常量 OpenSSL”

    我在尝试使用 RoR 时遇到了困难 我参加了 Ruby Installfest 但遇到了一个问题 我认为是 openssl bundle 我正在使用 RVM 并运行 Rails 5 0 1 和 Ruby 2 4 0 我尝试使用完全删除 重新
  • 如何在 Ruby on Rails 上制作“数据透视表”?

    首先 我想提一下 我对 Ruby 和 Rails 完全陌生 我才刚开始学习 所以如果我的问题看起来有点不清楚或太宽泛 我深表歉意 我正在尝试做一些简单的事情 我认为 即旋转表格 我有一个看起来像这样的表 Name Product ID Am
  • 使用颜色图作为第四维(x、y、z 的函数)绘制 3D 表面

    我正在尝试绘制一个 3d 表面 其中三个维度中的每一个都位于单独的值数组中 并且每个坐标处的表面颜色是 x y z 的函数 一种 numpy pcolormesh 但是 4D 而不是 3D 3D 图由下式给出 from mpl toolki