回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试使用来自:<a href="https://stackoverflow.com/questions/11950375/apply-color-map-to-mpl-toolkits-mplot3d-axes3d-bar3d">this stackoverflow post</a>的想法创建一个三维彩色条形图。</p>
<p>首先,我使用以下代码创建一个三维条形图:</p>
<pre><code>import numpy as np
import matplotlib.colors as colors
import matplotlib.cm as cm
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
samples = np.random.randint(91,size=(5000,2))
F = np.zeros([91,91])
for s in samples:
F[s[0],s[1]] += 1
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x_data, y_data = np.meshgrid( np.arange(F.shape[1]),
np.arange(F.shape[0]) )
x_data = x_data.flatten()
y_data = y_data.flatten()
z_data = F.flatten()
ax.bar3d(x_data,y_data,np.zeros(len(z_data)),1,1,z_data )
plt.show()
</code></pre>
<p>以下是输出:</p>
<p><a href="https://i.stack.imgur.com/rDzm9.png" rel="noreferrer"><img src="https://i.stack.imgur.com/rDzm9.png" alt="enter image description here"/></a></p>
<p>现在,我尝试使用代码<em>逐字</em>从:<a href="https://stackoverflow.com/questions/11950375/apply-color-map-to-mpl-toolkits-mplot3d-axes3d-bar3d">this stackoverflow post</a>给条上色。代码如下:</p>
<pre><code>import numpy as np
import matplotlib.colors as colors
import matplotlib.cm as cm
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
samples = np.random.randint(91,size=(5000,2))
F = np.zeros([91,91])
for s in samples:
F[s[0],s[1]] += 1
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x_data, y_data = np.meshgrid( np.arange(F.shape[1]),
np.arange(F.shape[0]) )
x_data = x_data.flatten()
y_data = y_data.flatten()
z_data = F.flatten()
dz = F
offset = dz + np.abs(dz.min())
fracs = offset.astype(float)/offset.max()
norm = colors.Normalize(fracs.min(), fracs.max())
colors = cm.jet(norm(fracs))
# colors = np.random.rand(91,91,4)
ax.bar3d(x_data,y_data,np.zeros(len(z_data)),1,1,z_data,color=colors )
plt.show()
</code></pre>
<p>但是我得到了:<code>ValueError: Invalid RGBA argument:</code></p>
<p>现在我无法调试<code>Invalid RGBA argument</code>,因为我不明白是什么导致了错误。我甚至尝试使用随机颜色来代替<code>colors = np.random.rand(91,91,4)</code>,但错误仍然存在。</p>
<p>我已经检查过关于<code>Invalid RGBA argument</code>(例如<a href="https://stackoverflow.com/questions/53521656/valueerror-invalid-rgba-argument">this</a>,<a href="https://stackoverflow.com/questions/50802475/valueerror-invalid-rgba-argument-rgbkymc">this</a>,<a href="https://stackoverflow.com/questions/45739673/valueerror-invalid-rgba-argument-o">this</a>和<a href="https://stackoverflow.com/questions/52155213/matplotlib-pyplot-show-invalid-rgba">this</a>)的stackoverflow帖子,但这些似乎都不能回答我的问题。</p>
<p>我想知道是什么导致了这个错误。我使用的是标准的<code>Anaconda</code>分布。</p>
<p>可能是由于python最近的更新,像<a href="https://stackoverflow.com/questions/11950375/apply-color-map-to-mpl-toolkits-mplot3d-axes3d-bar3d">the original stackoverflow post</a>中的解决方案变得过时了吗?</p>