我需要对一系列不同的传感器使用不同的颜色图。我计划将这些不同的颜色图放在一个列表中,以便在循环中调用。传感器的单独颜色图显示了传感器测量的温度范围。
到目前为止,我正在努力实现这一点,我可以在循环中指定一个通用的颜色图,这里是“蓝色”,但不知道如何循环不同的颜色图
cmap = ['Blues', 'Purples', 'Blues', 'Greens', 'Oranges', 'Reds']
for j, n in enumerate(sensor_number):
fig = plt.figure(str(n), figsize=[10,6])
for k, T in enumerate(Temp):
xs = np.linspace(t[0], t[-1], 1000)
ys = model_funct(xs, *param[k][j])
plt.plot(xs, ys, label="Standard Linear Model", color='k', linestyle='dashed
cm = plt.cm.Blues(np.linspace(0.5, 0.8, len(Temp)))
for i in range(len(Temp)):
plt.scatter(t, R, s=0.5, label="Experimental Data", color=cm[i])
#plt.savefig(dir + '\\Graphs\\' + str(n) + 'hj.png')
plt.show()
其中 t 和 R 是我的数据
我从代码中简化并删除了很多部分来显示问题,因此代码在某些地方可能看起来有点不必要。
等高线图对此会更好吗?不同的轮廓代表不同的温度
将颜色图作为对象传递/用作参数的示例。
我对数据实践有强烈的感受,特别是对于实验/传感器数据:它应该始终与所有标识符、元数据一起存储和传递,无论你想如何考虑它。重建它的来源所需的一切。在任何可以构建的地方——将传感器数据写入文件的数据结构、图像的文件名、可以裁剪以供发布但始终“真实”存在的小文本标题……任何东西。很容易被打乱,而且设置自己一次并不难,这样你就可以自动标记所有内容。让计算机来完成那些枯燥的重复部分!
import matplotlib.pyplot as plt
import numpy.random as rand
import matplotlib.cm as cmap
# Made-up sensors
sensor_numbers = (213, 902, 34)
cmaps = [cmap.summer, cmap.winter, cmap.inferno]
sensor_colors = zip(sensor_numbers, cmaps)
#dummy data for each sensor
sensor_data = dict()
rand.seed(20240304)
for n, cmap in sensor_colors:
#I like keeping data "tied" to its ID in one structure; dictionaries are flexible builtins
N = 12
# making up (x, y, c) array data -- in a pandas.DataFrame you could use
# meaningful column names for more readable code
sensor_data[n] = [rand.rand(N), rand.rand(N), n * rand.rand(N), cmap] # different color ranges
for i in sensor_data:
fig, ax = plt.subplots( figsize=[10,6])
scatter = ax.scatter(sensor_data[i][0], sensor_data[i][1], s=20, c = sensor_data[i][2],
label="Experimental Data", cmap=sensor_data[i][3])
fig.colorbar(scatter, ax=ax)
fig.suptitle("Data from sensor " + str(i))
plt.show()