Chciałbym zmienić kolor osi, a także znaczniki i etykiety wartości dla wykresu, który wykonałem przy użyciu matplotlib i PyQt.
Jakieś pomysły?
python
colors
pyqt
matplotlib
Richard Durr
źródło
źródło
Odpowiedzi:
Jako szybki przykład (używając nieco czystszej metody niż potencjalnie zduplikowane pytanie):
import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) ax.plot(range(10)) ax.set_xlabel('X-axis') ax.set_ylabel('Y-axis') ax.spines['bottom'].set_color('red') ax.spines['top'].set_color('red') ax.xaxis.label.set_color('red') ax.tick_params(axis='x', colors='red') plt.show()
źródło
[t.set_color('red') for t in ax.xaxis.get_ticklines()]
i[t.set_color('red') for t in ax.xaxis.get_ticklabels()]
.Jeśli masz kilka rysunków lub wykresów pomocniczych, które chcesz zmodyfikować, pomocne może być użycie menedżera kontekstu matplotlib do zmiany koloru, zamiast zmieniać każdy z nich osobno. Menedżer kontekstu umożliwia tymczasową zmianę parametrów rc tylko dla następującego bezpośrednio po nim kodu z wcięciem, ale nie wpływa na globalne parametry rc.
Ten fragment kodu daje dwie cyfry, pierwsza ze zmodyfikowanymi kolorami osi, znaczników i znaczników, a druga z domyślnymi parametrami rc.
import matplotlib.pyplot as plt with plt.rc_context({'axes.edgecolor':'orange', 'xtick.color':'red', 'ytick.color':'green', 'figure.facecolor':'white'}): # Temporary rc parameters in effect fig, (ax1, ax2) = plt.subplots(1,2) ax1.plot(range(10)) ax2.plot(range(10)) # Back to default rc parameters fig, ax = plt.subplots() ax.plot(range(10))
Możesz wpisać
plt.rcParams
tekst, aby wyświetlić wszystkie dostępne parametry rc, i użyć funkcji list do wyszukiwania słów kluczowych:# Search for all parameters containing the word 'color' [(param, value) for param, value in plt.rcParams.items() if 'color' in param]
źródło
motywowany przez poprzednich autorów, jest to przykład trzech osi.
import matplotlib.pyplot as plt x_values1=[1,2,3,4,5] y_values1=[1,2,2,4,1] x_values2=[-1000,-800,-600,-400,-200] y_values2=[10,20,39,40,50] x_values3=[150,200,250,300,350] y_values3=[-10,-20,-30,-40,-50] fig=plt.figure() ax=fig.add_subplot(111, label="1") ax2=fig.add_subplot(111, label="2", frame_on=False) ax3=fig.add_subplot(111, label="3", frame_on=False) ax.plot(x_values1, y_values1, color="C0") ax.set_xlabel("x label 1", color="C0") ax.set_ylabel("y label 1", color="C0") ax.tick_params(axis='x', colors="C0") ax.tick_params(axis='y', colors="C0") ax2.scatter(x_values2, y_values2, color="C1") ax2.set_xlabel('x label 2', color="C1") ax2.xaxis.set_label_position('bottom') # set the position of the second x-axis to bottom ax2.spines['bottom'].set_position(('outward', 36)) ax2.tick_params(axis='x', colors="C1") ax2.set_ylabel('y label 2', color="C1") ax2.yaxis.tick_right() ax2.yaxis.set_label_position('right') ax2.tick_params(axis='y', colors="C1") ax3.plot(x_values3, y_values3, color="C2") ax3.set_xlabel('x label 3', color='C2') ax3.xaxis.set_label_position('bottom') ax3.spines['bottom'].set_position(('outward', 72)) ax3.tick_params(axis='x', colors='C2') ax3.set_ylabel('y label 3', color='C2') ax3.yaxis.tick_right() ax3.yaxis.set_label_position('right') ax3.spines['right'].set_position(('outward', 36)) ax3.tick_params(axis='y', colors='C2') plt.show()
źródło