Matplotlib: Jak dopasować szerokość linii w pasku kolorów do wykresu konturowego?
Oto minimalny przykład generowania wykresu, który ilustruje moje pytanie:
import matplotlib.pylab as plt
import matplotlib.mpl as mpl
import numpy as np
import random
data = [[random.random() for i in range(10)] for j in range(10)]
[XT, YT] = np.meshgrid(np.arange(1,10+1,1), np.arange(1,10+1,1))
cmap = mpl.cm.gray
fig, ax = plt.subplots()
CS = ax.contour(XT, YT, data,levels=np.arange(0,1+0.1,0.1),\
cmap=cmap,linewidths=0.75)
CB = plt.colorbar(CS, ticks=np.arange(0,1+0.1,0.1))
plt.show()
Wynikowa postać wygląda tak:
Chciałbym zachowaćlinewidths
linii konturowych na rysunku w0.75
ale zwiększ je wcolorbar
(dla lepszej czytelności).
Jak zmienićlinewidths
wcolorbar
bez zmiany ich na rysunku?
Początkowo próbowałemCB.collections
, alecolorbar
nie macollections
. Także dzwoniąccolorbar
z argumentemlinewidths=4.0
nie działa (jest to nieznany parametr).
Komentarz
Podczas pisania tego pytania miałem ten pomysł (debugowanie gumowej kaczki):
CS = ax.contour(XT, YT, data,levels=np.arange(0,1+0.1,0.1),\
cmap=cmap,linewidths=4.0)
CB = plt.colorbar(CS, ticks=np.arange(0,1+0.1,0.1))
plt.setp(CS.collections , linewidth=0.75)
Zasadniczo ustawienie początkowelinewidths
do pożądanego poziomu dlacolorbar
, a następnie generowaniecolorbar
a następnie za pomocącollections
na oryginalnych liniach konturu, aby zmniejszyć ich szerokość.
To działa.
Ale: Czy istnieje sposób bezpośredniego sterowanialinewidths
wcolorbar
?