繁体   English   中英

用Python可视化4D向量

[英]Visualization of 4D vectors in Python

过去在此站点中曾提出过类似的问题-例如使用颜色图在mplot 3D中表示4D数据如何使用带有matplotlib的Python进行4d绘制 -但据我所知,它们都无法回答我的特定问题。

我可以使用以下数据:

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变量: 对于x1x2x3每个元素的组合,我在y都有一个对应的值。

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

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

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

多种颜色图

如何做到这一点?

粗略地说,您可以执行以下操作:

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()

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM