簡體   English   中英

如何通過定性cmap使matplotlib循環?

[英]How to make matplotlib cycle through qualitative cmap?

恐怕這不是一個可重復的例子,但我會盡量清楚地解釋我的問題。

我有一些地理數據有一個“社區”label 這是一個數字,盡管它只是一個分類的東西。 大約有 100 個社區,標簽序列似乎是空間的; IE。 連續的標簽彼此靠近。 我想使用一種定性顏色圖來可視化數據,例如。 'Paired' (cf. https://matplotlib.org/stable/tutorials/colors/colormaps.html ), which only has 12 colors, but as there are never (or at least rarely) more than twelve communities in a small area ,如果 matplotlib 循環通過 colors,那將不是問題,因此“01”獲得第一種顏色,“02”獲得第二種顏色,...; 並且只在'13'重復。

除了默認似乎是將附近的標簽用相同的顏色擠壓在一起而不是循環,因此'01','02','03,...,具有相同的顏色; 就像'13','14','15'......等等。

這似乎應該是一件很容易改變的事情,但我似乎缺乏對 matplotlib 內部工作原理的正確了解,無法准確地確定要做什么。

這里有類似的問題表明我只需要使用set_prop_cycle做一些事情,但我仍然沒有得到我想要的......

@Peter Prescott,如果您還沒有找到解決問題的方法,我認為只需通過添加您需要的 X 組 colors 來創建自定義顏色圖就可以了。

X = math.ceil(N / M),M 是基本顏色圖中 colors 的數量。

在您的示例中,N = 100,M = 12,X = 9。

簡單應用:

cmap = plt.cm.tab20                           # get a specific colormap
cmaplist = cmap.colors                        # extract all colors
cmaplistext = cmaplist + cmaplist             # repeat X times, here X = 2
customMap = matplotlib.colors.LinearSegmentedColormap.from_list(
                                'Custom cmap', cmaplistext, N)
plt.imshow(data, customMap)
    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM