我的数据集在四列中包含大约数千个值X、Y、Z、Z 的错误 -
1.2351e+00 -6.3115e-02 0.0000e+00 0.0000e+00
1.2417e+00 -6.3115e-02 0.0000e+00 0.0000e+00
1.2483e+00 -6.3115e-02 0.0000e+00 0.0000e+00
1.2549e+00 -6.3115e-02 0.0000e+00 0.0000e+00
1.2615e+00 -6.3115e-02 0.0000e+00 0.0000e+00
1.2681e+00 -6.3115e-02 0.0000e+00 0.0000e+00
1.2746e+00 -6.3115e-02 0.0000e+00 0.0000e+00
1.2812e+00 -6.3115e-02 0.0000e+00 0.0000e+00
1.2878e+00 -6.3115e-02 1.8186e+01 1.8186e+01
1.2944e+00 -6.3115e-02 0.0000e+00 0.0000e+00
1.3010e+00 -6.3115e-02 0.0000e+00 0.0000e+00
1.3075e+00 -6.3115e-02 0.0000e+00 0.0000e+00
1.3141e+00 -6.3115e-02 0.0000e+00 0.0000e+00
1.3207e+00 -6.3115e-02 0.0000e+00 0.0000e+00
... ....
我正在使用以下代码-
import numpy as np
import matplotlib.pyplot as plt
x, y, z, err = np.genfromtxt(r'dataset_gid.txt', unpack=True)
x1, y1 = np.meshgrid(x, y)
cont1 = plt.tricontourf(x, y, z, cmap='seismic')
plt.colorbar(cont1)
plt.show()
我得到以下情节-
如何生成类似于上图的颜色条?我已经为我正在使用的数据集创建了一个要点here。
更新
使用
scat=plt.scatter(x, y, c=z, s=3);plt.colorbar(scat)
给我带来奇怪的线条 -
使用
plt.tricontourf(x, y, z, levels=50)
看起来更好,但斑点不够亮。
有没有办法让斑点像参考图像一样更亮?
一些预备知识
import matplotlib.pyplot as plt
import numpy as np
fig = lambda: plt.figure(layout='constrained')
d2 = lambda arr: arr.reshape(77, 843)
a_n_d = np.logical_and
读取数据,找到极值
x, y, z, e = np.array([
[float(x) for x in line.split()]
for line in open('gist.txt').readlines()]).T
xlim = (x.min(), x.max())
ylim = (y.min(), y.max())
绘制所有数据的散点图,“奇怪的线”,(OP评论)只是数据点,它们都放置在规则的网格上,在x方向松散,在方向紧y方向。
fig()
scat = plt.scatter(x, y, c=z, s=40, cmap='Blues')
plt.colorbar(scat)
现在,让我们绘制一个等高线图,有 3 个级别
fig()
cont = plt.contour(d2(x), d2(y), d2(z), levels=[10, 40, 160], cmap='Blues', lw=0.2)
plt.colorbar(cont)
在我看来,等高线图的信息量比散点图少。
最后,让我们尝试一组选择性散点图,其中我们仅绘制每个子图的z值包含在不同范围内的点
f, axs = plt.subplots(2,2, layout='constrained')
for ax, ix in zip(axs.flat,
(z<100, a_n_d(z>=100, z<250), a_n_d(z>=250, z<500), z>500)):
ax.set_xlim(xlim) ; ax.set_ylim(ylim)
scat = ax.scatter(x[ix], y[ix], s=10, c=z[ix], cmap='Blues')
plt.colorbar(scat, ax=ax)
我认为这样的安排是最有信息性的。
不同子图中的色标不同,您可以使用
vmin=
、vmax=
进行相同的缩放,但是,在我看来,使用不同的标度会更好。
阵列形状澄清
首先我看了一下64911的因素
$ factor 64911
64911: 3 7 11 281
$
接下来我查看了数据,第 1-77 行具有相同的 y 值和不同的 x 值,第 78-154 行有另一个共同的 y 值和 相同 77 x 第 1–77 行的值。
我的结论是数据是通过 (7·11)×(3·281) = 77×843 x–y 网格给出的。
对于您的数据,很多误差值等于上一栏中报告的z值,这是您对测量/模拟的期望吗?