python - Python 中 4D 向量的可视化

标签 python matplotlib visualization 4d

该网站过去曾提出过类似的问题 - 例如 Representing 4D data in mplot 3D using colormapsHow to make a 4d plot using Python with matplotlib - 但据我发现,它们都没有回答我的具体问题。

我有以下数据可供使用:

x1 = numpy.logspace(-100, 20, num=13, base=2) 
x2 = numpy.logspace(-100, 20, num=13, base=2)
x3 = numpy.logspace(-5, 5, num=11, base=10)

y = [...]

这样就形成了 2 个包含 13 个元素的向量和一个包含 11 个元素的向量。那么 y 是一个 13*13*11 变量:对于 x1x2x2 中的元素的每个组合x3 我在 y 中有一个相应的值。

我想知道Python中是否有任何优雅的方式来可视化这些数据;我曾想过将 3D 绘图与颜色映射结合起来,如我发布的链接中所示,但是在这些帖子中给出的示例中,第三个变量 - x3 - 是其他 2 个变量的函数,而在我的情况是 yx1x2x3 的函数。

是否有任何方法/技巧可以在单个图表或尽可能少的图表中实现此目的?

编辑:一个想法可能是绘制例如 11 个颜色图,其中每个颜色图对应于 x3 的值。一个虚拟示例:

Multiple color maps

如何实现这一目标?

最佳答案

粗略地说,你可以这样做:

import matplotlib.pyplot as plt
import numpy as np

x1 = np.logspace(-100, 20, num=13, base=2) 
x2 = np.logspace(-100, 20, num=13, base=2)
x3 = np.logspace(-5, 5, num=11, base=10)
y = np.random.rand(len(x3), len(x2), len(x1))

fig, axes = plt.subplots(ncols=4, nrows=3)
fig.subplots_adjust(right=0.8, wspace=0.25, hspace=0.05)
for i, ax in enumerate(axes.flatten()):
    if i < len(x3):
        ax.set_xticks([0,6,12] )
        ax.set_yticks([0,6,12] )
        ax.set_yticklabels([]); ax.set_xticklabels([])
        im = ax.imshow(y[i, :,:], vmin=0, vmax=1, aspect="equal")
        if i % 4 == 0:
            ax.set_yticklabels([r"$2^{-100}$",r"$2^{-40}$",r"$2^{20}$"])
        if i >=8:
            ax.set_xticklabels([r"$2^{-100}$",r"$2^{-40}$",r"$2^{20}$"])       
    else:
        ax.axis("off")

nax = fig.add_subplot(111, frame_on=False)
nax.set_xticks([])
nax.set_yticks([])
nax.set_xlabel('xlabel', labelpad=20)
nax.set_ylabel('ylabel', labelpad=40)

cbar_ax = fig.add_axes([0.85, 0.15, 0.02, 0.7])
fig.colorbar(im, cax=cbar_ax)

plt.show()

enter image description here

关于python - Python 中 4D 向量的可视化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44006595/

相关文章:

python - Python sort() 时间复杂度如何随非 O(1) 复杂度的 lambda 函数变化?

python - 如何创建局部动态变量

python - 是否可以在 Python 中更改父进程的环境?

python - 两个相同比例的y轴

带工具栏的 matplotlib 动画

python - 在python中创建3D矩阵的2D投影

python - 如何将悬停突出显示添加到 Bokeh 步骤图

Python/Pandas - 多维数据透视

python - Plotly Express 散点图不会绘制 x 变量的完整范围

python - 如何在Win11下显示WSL2中的matplotlib窗口?