我试图制作一个显示许多线条的情节,但很难区分它们。它们有不同的颜色,但我想让它很容易显示哪条线是哪条。一个普通的传说并没有真正起作用,因为我有超过10行。
线条遵循逻辑顺序。我想(1)从颜色图中自动选择颜色(最好是具有平滑排序的颜色图,例如绿色或彩虹)。然后我希望(2)在颜色条旁边有刻度线,以对应每行的索引i
(或者更好的是字符串数组textlabels[i]
中的文本标签)。
这是一段最小的代码(有一些差距,我不知道该使用什么)。我希望这能说明我在努力。
import numpy as np
import matplotlib.pyplot as plt
# Genereate some values to plot on the x-axis
x = np.linspace(0,1,1000)
# Some code to select a (discrete version of) a rainbow/viridis color map
...
# Loop over lines that should appear in the plot
for i in range(0,9):
# Plot something (using straight lines with different slope as example)
plt.plot(i*x)
# Some code to plot a discrete color bar next
# to the plot with ticks showing the value of i
...
我目前有这个。我希望颜色条的刻度值为i
,即0,1,2,......旁边的刻度线。
Example figure of what I have now. It is hard to tell the lines apart now.
答案 0 :(得分:2)
通过plt.get_cmap("name of cmap", number_of_colors)
获取彩色地图。
此颜色表可用于计算绘图的颜色。它也可以用于生成颜色条。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors
n = 10 # how many lines to draw or number of discrete color levels
x = np.linspace(0,1,17)
cmap = plt.get_cmap("viridis", n)
for i in range(0,n):
plt.plot(i*x, color=cmap(i))
norm= matplotlib.colors.BoundaryNorm(np.arange(0,n+1)-0.5, n)
sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
sm.set_array([])
plt.colorbar(sm, ticks=np.arange(0,n))
plt.show()