Tôi muốn Thay đổi màu của trục, cũng như đánh dấu và nhãn giá trị cho một biểu đồ mà tôi đã sử dụng matplotlib an PyQt.
Bất kỳ ý tưởng?
Tôi muốn Thay đổi màu của trục, cũng như đánh dấu và nhãn giá trị cho một biểu đồ mà tôi đã sử dụng matplotlib an PyQt.
Bất kỳ ý tưởng?
Câu trả lời:
Như một ví dụ nhanh (sử dụng một phương pháp rõ ràng hơn một chút so với câu hỏi có khả năng trùng lặp):
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()]
và [t.set_color('red') for t in ax.xaxis.get_ticklabels()]
.
Nếu bạn có một số hình hoặc ô con muốn sửa đổi, có thể hữu ích khi sử dụng trình quản lý ngữ cảnh matplotlib để thay đổi màu sắc, thay vì thay đổi từng ô riêng lẻ. Trình quản lý ngữ cảnh cho phép bạn tạm thời thay đổi các tham số rc chỉ cho đoạn mã được thụt lề ngay sau đó, nhưng không ảnh hưởng đến các tham số rc chung.
Đoạn mã này tạo ra hai hình, hình đầu tiên có màu được sửa đổi cho trục, dấu tích và nhãn đánh dấu, và hình thứ hai có thông số rc mặc định.
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))
Bạn có thể nhập plt.rcParams
để xem tất cả các tham số rc có sẵn và sử dụng khả năng hiểu danh sách để tìm kiếm các từ khóa:
# Search for all parameters containing the word 'color'
[(param, value) for param, value in plt.rcParams.items() if 'color' in param]
được thúc đẩy bởi những người đóng góp trước đây, đây là một ví dụ về ba trục.
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()