繁体   English   中英

有没有办法在 Python 中绘制 3D 数据的 2D 散点图?

[英]Is there a way to plot a 2D scatter plot of 3D data in Python?

plt.figure(figsize = (10,8))
plt.scatter(x_range, y_range, s=1, c=Avgs, cmap = 'hot')
plt.colorbar().set_label('Avgs', fontsize=14)
plt.xlabel('x', fontsize=14)
plt.ylabel('y', fontsize=14)
plt.title('ToA heatmap', fontsize=17)
plt.show()

我试图简单地绘制一个 8x8 网格,对于网格中的每个正方形,我希望根据相应的 z-list 绘制颜色。 对于 Avgs 列表,我收到此错误: ValueError: Invalid RGBA argument: 978641729006.499

x 和 y 只是 8x8: x_range = [*range(1,9)] y_range = [*range(1,9)]并且 z 是长度 64。

我实际上是在尝试摆脱最后一个情节: https : //towardsdatascience.com/two-dimensional-histograms-and-three-variable-scatterplots-making-map-like-visualisations-in-7f413955747

我尝试使用的 z-val 有什么问题吗?

Avgs = [978641729006.499, 978641729400.8718, 978641729104.939, 978641729955.9729, 978987521304.7899, 978641730148.7137, 978641729455.2655, 978641729920.0767, 978641729629.279, 978641730085.0204, 978641729865.4275, 977317126354.3619, 978623695074.3928, 976261941754.0288, 978219139240.5585, 977297545709.2174, 978641729701.3525, 978641730366.5692, 978641730164.7329, 978320088204.468, 980484773299.2648, 979024582561.7308, 978583203617.9937, 979500695052.7529, 978641729194.0791, 978641729650.9701, 978641729445.3525, 978641729906.5613, 978641729793.7373, 978971834612.6752, 978641729959.2432, 978641730895.917, 978641729877.5889, 978958815999.003, 978641730412.9406, 978641730936.1565, 978641731045.608, 981320625644.9747, 978641731431.1409, 979100728947.8063, 978252805749.7512, 978692284847.6948, 978839590344.0538, 977759736772.8792, 978278403900.65, 977963671775.7217, 978020959030.8743, 975589489530.2675, 978641729128.0607, 978641729732.8032, 978641729472.7153, 978641730005.691, 978641730299.7589, 979914042136.2838, 978641729454.6012, 978641729870.9205, 978641728254.5948, 978641729076.9629, 978641728896.7665, 978641729508.8926, 978641729493.4355, 978654395498.1919, 978641728998.9877, 978641729249.6735]

为了传递值数组,在您的情况下Avgs ,作为cAvgs必须具有与xy相同的形状。 在这种情况下, Avgs不满足。

另一方面,您的数据不需要从01才能使imshow工作,这些值会自动缩放:

Avgs = np.arange(256).reshape(16,-1) * 1000.001
plt.imshow(Avgs)
plt.colorbar().set_label('Avgs', fontsize=14)
plt.xlabel('x', fontsize=14)
plt.ylabel('y', fontsize=14)
plt.title('ToA heatmap', fontsize=17)
plt.show()

输出:

在此处输入图片说明


更新:对于您的数据:

# reshape and plot data
fig, ax = plt.subplots()
cb = ax.imshow(np.array(Avgs).reshape(8,8), cmap='hot')
ax.invert_yaxis()

plt.colorbar(cb).set_label('Avgs', fontsize=14)
plt.xlabel('x', fontsize=14)
plt.ylabel('y', fontsize=14)
plt.title('ToA heatmap', fontsize=17)

给出:

在此处输入图片说明

暂无
暂无

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

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