使用 matplotlib 迭代 imshow 并绘制具有公共颜色条的多个 2D 地图
Iterating over imshow and plotting multiple 2D maps with common colorbar using matplotlib
我有 4 个输入数据文件。我正在尝试通过使用 common 颜色条从这些输入文件中读取数据来绘制 2D 等高线图。我从以下答案中获得灵感:
1) How can I create a standard colorbar for a series of plots in python
2)Matplotlib 2 Subplots, 1 Colorbar
代码:
import numpy as np
import matplotlib.pyplot as plt
#Reading data from input files
dat1 = np.genfromtxt('curmapdown.dat', delimiter=' ')
dat2 = np.genfromtxt('curmapup.dat', delimiter=' ')
dat3 = np.genfromtxt('../../../zika/zika1/CalculateCurvature/curmapdown.dat', delimiter=' ')
dat4 = np.genfromtxt('../../../zika/zika1/CalculateCurvature/curmapup.dat', delimiter=' ')
data=[]
for i in range(1,5):
data.append('dat%d'%i)
fig, axes = plt.subplots(nrows=2, ncols=2)
# Error comes from this part
for ax,dat in zip(axes.flat,data):
im = ax.imshow(dat, vmin=0, vmax=1)
fig.colorbar(im, ax=axes.ravel().tolist())
plt.show()
错误:
Traceback (most recent call last):
File "2dmap.py", line 15, in <module>
im = ax.imshow(dat, vmin=0, vmax=1)
File "/usr/lib/python2.7/dist-packages/matplotlib/__init__.py", line 1814, in inner
return func(ax, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/matplotlib/axes/_axes.py", line 4947, in imshow
im.set_data(X)
File "/usr/lib/python2.7/dist-packages/matplotlib/image.py", line 449, in set_data
raise TypeError("Image data can not convert to float")
类型错误:图像数据无法转换为浮点数
您正在将 字符串 "dat1"
附加到名为 data
的列表中。绘制此图时,您试图将此字符串转换为浮点数,这显然失败了
plt.imshow("hello")
将重现您看到的错误。
您想要将数据本身加载到名为 dat1
等的变量中。因此您可能想要删除第一个 for 循环并执行类似
的操作
data = [dat1, dat2, dat3, dat4]
我有 4 个输入数据文件。我正在尝试通过使用 common 颜色条从这些输入文件中读取数据来绘制 2D 等高线图。我从以下答案中获得灵感:
1) How can I create a standard colorbar for a series of plots in python
2)Matplotlib 2 Subplots, 1 Colorbar
代码:
import numpy as np
import matplotlib.pyplot as plt
#Reading data from input files
dat1 = np.genfromtxt('curmapdown.dat', delimiter=' ')
dat2 = np.genfromtxt('curmapup.dat', delimiter=' ')
dat3 = np.genfromtxt('../../../zika/zika1/CalculateCurvature/curmapdown.dat', delimiter=' ')
dat4 = np.genfromtxt('../../../zika/zika1/CalculateCurvature/curmapup.dat', delimiter=' ')
data=[]
for i in range(1,5):
data.append('dat%d'%i)
fig, axes = plt.subplots(nrows=2, ncols=2)
# Error comes from this part
for ax,dat in zip(axes.flat,data):
im = ax.imshow(dat, vmin=0, vmax=1)
fig.colorbar(im, ax=axes.ravel().tolist())
plt.show()
错误:
Traceback (most recent call last):
File "2dmap.py", line 15, in <module>
im = ax.imshow(dat, vmin=0, vmax=1)
File "/usr/lib/python2.7/dist-packages/matplotlib/__init__.py", line 1814, in inner
return func(ax, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/matplotlib/axes/_axes.py", line 4947, in imshow
im.set_data(X)
File "/usr/lib/python2.7/dist-packages/matplotlib/image.py", line 449, in set_data
raise TypeError("Image data can not convert to float")
类型错误:图像数据无法转换为浮点数
您正在将 字符串 "dat1"
附加到名为 data
的列表中。绘制此图时,您试图将此字符串转换为浮点数,这显然失败了
plt.imshow("hello")
将重现您看到的错误。
您想要将数据本身加载到名为 dat1
等的变量中。因此您可能想要删除第一个 for 循环并执行类似
data = [dat1, dat2, dat3, dat4]