【问题标题】:How to iteratively plot lines with colors from a sequential color function [duplicate]如何用顺序颜色函数中的颜色迭代地绘制线条[重复]
【发布时间】:2019-04-04 20:23:13
【问题描述】:

我想在 python 中绘制 3 个数字。我手动绘制的。
代码是:

import matplotlib.pyplot as plt
import numpy as np    
fig, ax = plt.subplots(1, 1)    
Semesters=np.arange(1,7,1)
y1=np.arange(10,16,1)
y2=np.arange(20,26,1)
y3=np.arange(51,57,1)
plt.plot(Semesters, y1,label="To Reach 120",linewidth=2)
plt.plot(Semesters, y2,label="To Reach 100",linewidth=2)
plt.plot(Semesters, y3,label="To Reach 80",linewidth=2)
ax.set_xticks(Semesters)
plt.legend(bbox_to_anchor=(0.85, .3), loc=2, borderaxespad=0.)

考虑到图例,我想使用 for 循环和彩虹函数(或任何其他顺序颜色函数)作为其颜色。任何帮助表示赞赏。

【问题讨论】:

    标签: python matplotlib plot legend colormap


    【解决方案1】:

    这里有一个解决方案。

    说明:在列表中创建您的 y 数据(此处为y_list)并存储您的标签(此处为labels)。然后按照您的要求,使用for 循环遍历列表,一次绘制一个。

    要使用颜色图定义颜色,例如rainbow,请使用您拥有的线(图)数(在下面的示例中为 3)创建一个颜色列表。然后只需在 for 循环中分配这些颜色,就可以得到所需的绘图。

    import matplotlib.pyplot as plt
    import numpy as np    
    from matplotlib import cm
    
    fig, ax = plt.subplots(1, 1)    
    Semesters=np.arange(1,7,1)
    y_list = [np.arange(10,16,1), np.arange(20,26,1), np.arange(51,57,1)]
    labels = ["To Reach 120", "To Reach 100", "To Reach 80"]
    
    # Define the colors to be used using rainbow map (or any other sequential map)
    colors = cm.rainbow(np.linspace(0, 1, len(y_list)))
    
    # Plot the lines using a for loop
    for i in range(len(y_list)):
        plt.plot(Semesters, y_list[i], label=labels[i], linewidth=2., color=colors[i])
    
    ax.set_xticks(Semesters)
    plt.legend(bbox_to_anchor=(0.85, .3), loc=2, borderaxespad=0.)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-09
      • 2012-01-23
      • 1970-01-01
      • 2019-05-17
      • 2013-09-07
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多