我有一个包含以下数据的文件
0018.00 -083.00 45
0018.00 -082.00 55
0018.00 -081.00 15
0019.00 -100.00 25
0019.00 -099.00 45
0019.00 -098.00 05
0019.00 -086.00 25
0019.00 -085.00 25
0019.00 -084.00 35
0019.00 -083.00 45
第一列包含y值。
第二列包含x值。
第三列包含z值
我想为每个z值指定一种颜色并绘制该数据集的网格框。
例如
05=Brown
15=Red
25=Green
35=Blue
45=Purple
55=Orange
它看起来类似于下图 ![在此输入图像说明] [1]
我尝试过查看mathplotlib缩略图,但它们似乎只适用于随机数据集。
我应该用什么代码来绘制我的圆柱数据?
到目前为止,我已经尝试过以下代码
import numpy
import matplotlib.pyplot as plt
cm = plt.cm.get_cmap('RdYlBu')
var = numpy.loadtxt('map.csv')
y = var[:, 0:1]
x = var[:, 1:2]
colors = var[:, 2:3]
plt.scatter(x, y, colors, cmap=cm)
plt.show()
答案 0 :(得分:1)
您可以使用imshow
import numpy
import matplotlib.pyplot as plt
content = numpy.loadtxt('map.csv', delimiter=',')
# here you would have to create a "grid"
# where each value in content would be "binned" to the correct position,
# creating the array named "bins"
plt.imshow(bins,
interpolation='nearest',
cmap=plt.cm.RdYlBu,
extent=[xmin, xmax, ymin, ymax]) ## you should be able to figure these out
答案 1 :(得分:0)
虽然您使用scatter
显示的方法确实有效,但需要进行一些调整才能让事情看起来正确。这是对它的抨击:
import numpy as np
import matplotlib.pyplot as plt
# unpack columns from map.csv into x y and z variables.
y, x, z = np.loadtxt('map.csv').T
ax = plt.subplot(111, aspect='equal')
ax.scatter(x, y, c=z, marker='s', s=160, lw=0, cmap='RdYlBu')
plt.show()
请注意,我使用了标记形状(marker='s'
)和尺寸(s=160
),并指定将z
值用作颜色( c=z
)。
然而,正如您所注意到的,scatter
并非旨在显示您正在寻找的常规网格。你最好选择imshow
或其他pcolor
变种,比如@heltonbiker建议。