matplotlib中密度矩阵三维图的颜色

fruv7luv  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(116)

我在复制一篇论文的结果,我偶然发现了这个用这些颜色绘制的图。我想重现这个情节,但我不知道怎么做。
x1c 0d1x的数据
以下是我的当前代码:

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.array(range(0, 16), float)
y = x.copy()
xpos, ypos = np.meshgrid(x, y)
z = np.array(m).reshape(-1)
xpos = xpos.flatten()
ypos = ypos.flatten()
zpos = np.zeros_like(xpos)
dx = 0.75 * np.ones_like(zpos)
dy = dx.copy()
dz = z.flatten() # This is the actual data.
fig = plt.figure()
ax = fig.add_subplot(111,projection = '3d')
ax.bar3d(xpos, ypos, zpos, dx, dy, dz,
     shade=True
        )
title = titles[t]
t += 1
ax.title.set_text(r"{w}".format(w=title))
plt.show()

字符串
其输出以下曲线图:



我应该添加/更改哪些参数,使其看起来像论文中的图?

v9tzhpje

v9tzhpje1#

从其他几个答案(如herehere)中得出的结果应该更接近这个数字

import numpy as np
import matplotlib.pyplot as plt

## Test data
m = np.random.rand(16,16)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.array(range(0, 16), float)
y = x.copy()
xpos, ypos = np.meshgrid(x, y)
z = np.array(m).reshape(-1)
xpos = xpos.flatten()
ypos = ypos.flatten()
zpos = np.zeros_like(xpos)
dx = 0.75 * np.ones_like(zpos)
dy = dx.copy()
dz = z.flatten()

## Define a colorbar
cmap = plt.cm.get_cmap('hsv')
max_height = m.max()
min_height = m.min()
color_values = [cmap((i-min_height)/max_height) for i in dz]

## 3D Bar Plot
bar = ax.bar3d(xpos, ypos, zpos, dx, dy, dz,
     shade=True, color=color_values)

## Colorbar
cbar_obj = plt.cm.ScalarMappable(cmap=cmap, norm=plt.Normalize(min_height, max_height))
cbar_obj.set_array([dz])
cbar = plt.colorbar(cbar_obj)

plt.show()

字符串


的数据

相关问题