如何使用颜色图在一张图表上绘制多个图并迭代多个不同的颜色图

问题描述 投票:0回答:1

我需要对一系列不同的传感器使用不同的颜色图。我计划将这些不同的颜色图放在一个列表中,以便在循环中调用。传感器的单独颜色图显示了传感器测量的温度范围。

到目前为止,我正在努力实现这一点,我可以在循环中指定一个通用的颜色图,这里是“蓝色”,但不知道如何循环不同的颜色图

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 是我的数据

我从代码中简化并删除了很多部分来显示问题,因此代码在某些地方可能看起来有点不必要。

等高线图对此会更好吗?不同的轮廓代表不同的温度

loops matplotlib colormap
1个回答
0
投票

将颜色图作为对象传递/用作参数的示例。

我对数据实践有强烈的感受,特别是对于实验/传感器数据:它应该始终与所有标识符、元数据一起存储和传递,无论你想如何考虑它。重建它的来源所需的一切。在任何可以构建的地方——将传感器数据写入文件的数据结构、图像的文件名、可以裁剪以供发布但始终“真实”存在的小文本标题……任何东西。很容易被打乱,而且设置自己一次并不难,这样你就可以自动标记所有内容。让计算机来完成那些枯燥的重复部分!

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()

© www.soinside.com 2019 - 2024. All rights reserved.