Saya ingin mengubah warna sumbu, serta tanda centang dan label nilai untuk plot yang saya lakukan menggunakan matplotlib dan PyQt.
Ada ide?
Saya ingin mengubah warna sumbu, serta tanda centang dan label nilai untuk plot yang saya lakukan menggunakan matplotlib dan PyQt.
Ada ide?
Jawaban:
Sebagai contoh cepat (menggunakan metode yang sedikit lebih bersih daripada pertanyaan yang berpotensi duplikat):
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()
[t.set_color('red') for t in ax.xaxis.get_ticklines()]
dan [t.set_color('red') for t in ax.xaxis.get_ticklabels()]
.
Jika Anda memiliki beberapa gambar atau subplot yang ingin diubah, sebaiknya gunakan pengelola konteks matplotlib untuk mengubah warna, daripada mengubahnya satu per satu. Dengan manajer konteks, Anda dapat mengubah sementara parameter rc hanya untuk kode indentasi berikut ini, tetapi tidak memengaruhi parameter rc global.
Cuplikan ini menghasilkan dua gambar, yang pertama dengan warna yang dimodifikasi untuk sumbu, tanda centang dan label, dan yang kedua dengan parameter rc default.
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))
Anda dapat mengetik plt.rcParams
untuk melihat semua parameter rc yang tersedia, dan menggunakan pemahaman daftar untuk mencari kata kunci:
# Search for all parameters containing the word 'color'
[(param, value) for param, value in plt.rcParams.items() if 'color' in param]
dimotivasi oleh kontributor sebelumnya, ini adalah contoh tiga sumbu.
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()