2013-06-16 24 views
24

Bất cứ ai có thể giúp tôi đặt ve trên một vị trí cố định bằng cách sử dụng matplotlib? Tôi đã cố gắng sử dụng FixedPosition như hướng dẫn này mô tả:Làm thế nào để thiết lập ve trên vị trí cố định, matplotlib

ax = pl.gca() 
ax.xaxis.set_major_locator(eval(locator)) 

http://scipy-lectures.github.io/intro/matplotlib/matplotlib.html#figures-subplots-axes-and-ticks

Nhưng khi tôi cố gắng chạy, nó nói với tôi rằng phương pháp set_major_locator không tồn tại.

Ví dụ đơn giản sẽ rất hữu ích.

Cảm ơn.

+2

liên kết Đó là một bối rối ra khỏi ngữ cảnh. Việc sử dụng 'eval' có thể rất thông minh để tạo ra các số ví dụ của chúng, không rõ giá trị của' locator' là gì. – tacaswell

Trả lời

47

Chỉ cần sử dụng ax.set_xticks(positions) hoặc ax.set_yticks(positions).

Ví dụ:

import matplotlib.pyplot as plt 

fig, ax = plt.subplots() 
ax.set_xticks([0.15, 0.68, 0.97]) 
ax.set_yticks([0.2, 0.55, 0.76]) 
plt.show() 

enter image description here

+2

phương pháp này sẽ xóa các ve hiện có tôi có trên ô. Điều gì sẽ xảy ra nếu tôi muốn thêm các dấu tích bổ sung này mà không ảnh hưởng đến các dấu hiện có? – dnth

+0

@dnth: Bạn có thể 'twinx()' hoặc 'twiny()' biểu đồ để tạo ra một trục mới với các ve ở phía đối diện. –

+0

@dnth Bạn có thể lấy các vị trí với 'locs = ax.xaxis.get_ticklocs()', sửa đổi danh sách đó để thêm các dấu tích bạn muốn, sau đó làm theo các gợi ý của Joe bằng 'ax.set_xticks (locs)'. – ryanjdillon

1
import numpy as np 
import matplotlib.ticker as ticker 
import matplotlib.pyplot as plt 

name_list = ('Omar', 'Serguey', 'Max', 'Zhou', 'Abidin') 
value_list = np.random.randint(0, 99, size = len(name_list)) 
pos_list = np.arange(len(name_list)) 

ax = plt.axes() 
ax.xaxis.set_major_locator(ticker.FixedLocator((pos_list))) 
ax.xaxis.set_major_formatter(ticker.FixedFormatter((name_list))) 
plt.bar(pos_list, value_list, color = '.75', align = 'center') 

plt.show() 
+0

Chăm sóc để xây dựng? –

+0

Điều đó rất hữu ích. – ConanG

Các vấn đề liên quan