我正在设置一个颜色条,我知道攀登可以做到这一点。我无法弄清楚你是如何设置的,以便中间的颜色条值是最小的1,例如,范围是1到52?
我这样做是因为我有周数,但我不想在12月到1月的颜色上显示大跳跃(值52和1)
编辑:我在谈论颜色,以便颜色条的两端颜色相似,但中间是最不同的颜色。我不想更改颜色栏中的值
答案 0 :(得分:2)
您要求的是循环色彩映射。截至目前,matplotlib仅提供一个单一的循环色图,即"hsv"
。但是,您可以轻松定义自己的色彩映射表,并确保它是循环的,例如使用颜色["gold", "red", "black", "navy", "gold"]
,其中第一个和最后一个颜色是相同的。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
plt.rcParams['lines.markersize'] = 12
x = np.arange(200)
y = np.ones(200)
fig, ax = plt.subplots()
ax.scatter(x,y, c=x % 52, marker="|" )
ax.scatter(x,y-1, c=x % 52, cmap="hsv", marker="|" )
colors = ["gold", "red", "black", "navy", "gold"]
cmap = mcolors.LinearSegmentedColormap.from_list("", colors)
ax.scatter(x,y-2, c=x % 52, cmap=cmap, marker="|" )
ax.set_yticks([-1,0,1])
ax.set_yticklabels(["custom", "hsv", "viridis", ])
ax.margins(y=0.4)
plt.show()
答案 1 :(得分:1)