Thay vì từ hoặc số là nhãn đánh dấu của trục x, tôi muốn vẽ một bản vẽ đơn giản (làm bằng đường kẻ và hình tròn) làm nhãn cho mỗi dấu x. Điều này có thể không? Nếu vậy, cách tốt nhất để đi về nó trong matplotlib là gì?Làm thế nào tôi có thể làm cho các nhãn xtick của một âm mưu là bản vẽ đơn giản bằng cách sử dụng matplotlib?
Trả lời
Tôi sẽ xóa nhãn đánh dấu và thay thế văn bản bằng patches. Dưới đây là một ví dụ ngắn gọn về thực hiện nhiệm vụ này:
import matplotlib.pyplot as plt
import matplotlib.patches as patches
# define where to put symbols vertically
TICKYPOS = -.6
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(range(10))
# set ticks where your images will be
ax.get_xaxis().set_ticks([2,4,6,8])
# remove tick labels
ax.get_xaxis().set_ticklabels([])
# add a series of patches to serve as tick labels
ax.add_patch(patches.Circle((2,TICKYPOS),radius=.2,
fill=True,clip_on=False))
ax.add_patch(patches.Circle((4,TICKYPOS),radius=.2,
fill=False,clip_on=False))
ax.add_patch(patches.Rectangle((6-.1,TICKYPOS-.05),.2,.2,
fill=True,clip_on=False))
ax.add_patch(patches.Rectangle((8-.1,TICKYPOS-.05),.2,.2,
fill=False,clip_on=False))
Điều này dẫn đến hình sau:
Nó là chìa khóa để thiết lập clip_on
-False
, nếu không patches
bên ngoài các trục sẽ không được được hiển thị. Các tọa độ và kích thước (bán kính, chiều rộng, chiều cao, vv) của các bản vá sẽ phụ thuộc vào vị trí các trục của bạn trong hình. Ví dụ, nếu bạn đang cân nhắc thực hiện điều này với các subplots, bạn sẽ cần phải nhạy cảm với các vị trí đắp vá để không chồng lên bất kỳ trục nào khác. Nó có thể là giá trị thời gian của bạn điều tra Transformations, và xác định vị trí và kích cỡ trong một đơn vị khác (Trục, Hình hoặc hiển thị).
Nếu bạn có tệp hình ảnh cụ thể mà bạn muốn sử dụng cho biểu tượng, bạn có thể sử dụng lớp BboxImage
để tạo nghệ sĩ được thêm vào trục thay vì bản vá. Ví dụ tôi đã thực hiện một biểu tượng đơn giản với các kịch bản sau đây:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(1,1),dpi=400)
ax = fig.add_axes([0,0,1,1],frameon=False)
ax.set_axis_off()
ax.plot(range(10),linewidth=32)
ax.plot(range(9,-1,-1),linewidth=32)
fig.savefig('thumb.png')
sản xuất hình ảnh này:
Sau đó, tôi đã tạo ra một BboxImage tại vị trí tôi muốn nhãn đánh dấu và kích thước tôi muốn:
lowerCorner = ax.transData.transform((.8,TICKYPOS-.2))
upperCorner = ax.transData.transform((1.2,TICKYPOS+.2))
bbox_image = BboxImage(Bbox([lowerCorner[0],
lowerCorner[1],
upperCorner[0],
upperCorner[1],
]),
norm = None,
origin=None,
clip_on=False,
)
Được chú ý cách chuyển đổi từ đơn vị dữ liệu sang đơn vị hiển thị, whic h được yêu cầu trong định nghĩa của Bbox
.
Bây giờ tôi đọc trong hình ảnh bằng cách sử dụng thường xuyên imread
, và thiết lập kết quả của nó (một mảng NumPy) số liệu của bbox_image
và thêm các nghệ sĩ với các trục:
bbox_image.set_data(imread('thumb.png'))
ax.add_artist(bbox_image)
Điều này dẫn đến một con số được cập nhật :
Nếu bạn trực tiếp sử dụng hình ảnh, hãy chắc chắn để nhập khẩu các lớp học và phương pháp cần thiết:
from matplotlib.image import BboxImage,imread
from matplotlib.transforms import Bbox
- 1. Làm thế nào tôi có thể đặt một bảng trên một âm mưu trong Matplotlib?
- 2. Làm cách nào để cho âm mưu matplotlib của tôi vượt ra ngoài các trục?
- 3. Làm thế nào để tôi nói với matplotlib rằng tôi đã hoàn thành một âm mưu?
- 4. đánh dấu vị trí nhãn cho âm mưu 3D matplotlib
- 5. Tạo bản đồ màu riêng bằng cách sử dụng matplotlib và thang màu âm mưu
- 6. Làm thế nào để tôi chỉ vẽ các ngày trong tuần bằng cách sử dụng nến matplotlib của Python?
- 7. Tôi muốn sử dụng matplotlib để tạo ra một âm mưu 3d cho một hàm z
- 8. âm mưu hoạt hình matplotlib sẽ không cập nhật nhãn trên trục bằng cách sử dụng blit
- 9. Vẽ khoảng dán nhãn matplotlib/gnuplot
- 10. Làm thế nào để viết một công thức cao su trong truyền thuyết của một âm mưu bằng cách sử dụng Matplotlib bên trong một tập tin .py?
- 11. Làm thế nào để cập nhật một âm mưu trong matplotlib?
- 12. chú thích một âm mưu sử dụng matplotlib
- 13. làm cách nào để tạo một chú giải đơn lẻ cho nhiều trang con bằng matplotlib?
- 14. Làm thế nào để loại bỏ các đường trong một âm mưu Matplotlib
- 15. Trong một âm mưu matplotlib, tôi có thể làm nổi bật phạm vi giá trị x cụ thể không?
- 16. làm thế nào để có được phạm vi (ylim) của một âm mưu?
- 17. Matplotlib: imshow trong âm mưu 3d
- 18. Làm cách nào để vẽ một hàm bước với Matplotlib bằng Python?
- 19. Làm thế nào tôi có thể định dạng một phao bằng cách sử dụng định dạng LaTeX của matplotlib?
- 20. Làm thế nào để thay đổi màu sắc khuôn mặt của một âm mưu sử dụng Matplotlib
- 21. làm thế nào để đơn giản hóa mã của tôi bằng cách sử dụng jquery?
- 22. Lỗi Ipython/pylab/matplotlib âm mưu
- 23. Matplotlib: Vẽ một mũi tên thẳng đứng trong một âm mưu log-log
- 24. ghi nhãn một âm mưu trong từng bước của pi
- 25. Làm thế nào để vẽ cdf trong matplotlib bằng Python?
- 26. làm thế nào để vẽ hình dạng tùy chỉnh bằng cách sử dụng một kết cấu đơn giản trong libgdx?
- 27. Âm mưu đường viền cực trong Matplotlib
- 28. Lập bản đồ Python: Làm thế nào tôi có thể làm cho dừng matplotlib.pyplot buộc kiểu đánh dấu của tôi?
- 29. Vẽ các ô trên màn hình bằng cách sử dụng matplotlib API
- 30. Tuyên bố xung âm mưu Matplotlib trong 3d