2009-02-13 22 views
10

Tôi đang cố gắng vẽ một loạt các điểm dữ liệu (nhiều nghìn) trong Python bằng cách sử dụng matplotlib vì vậy tôi cần mỗi điểm đánh dấu rất nhỏ và chính xác. Làm cách nào để nhận được điểm đánh dấu đơn giản nhất có thể? Tôi sử dụng lệnh này để vẽ dữ liệu của mình: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?

matplotlib.pyplot(x , y ,'.',markersize=0.1,linewidth=None,markerfacecolor='black') 

Sau đó, tôi có thể xem nó bằng pl.show() và sau đó lưu. Hoặc trực tiếp sử dụng plt.savefig('filename.ps') trong mã để lưu. Vấn đề là: khi tôi sử dụng pl.show() để xem tệp trong GUI có vẻ tuyệt vời với các dấu nhỏ màu đen nhỏ, tuy nhiên khi tôi lưu từ giao diện show() sang tệp hoặc sử dụng trực tiếp savefig và sau đó xem ps ! Mỗi điểm đánh dấu đã thu được một vầng hào quang nhỏ màu xanh xung quanh nó (như thể nó bắt đầu ở mỗi điểm để kết nối chúng với các đường màu xanh mặc định, nhưng không) và phong cách là tất cả sai. Tại sao nó thay đổi phong cách khi được lưu? Làm thế nào để ngăn chặn python từ buộc phong cách của các dấu hiệu? Và có tôi đã xem xét một số gói thay thế như CairoPlot, nhưng tôi muốn tiếp tục sử dụng matplotlib cho bây giờ.

Cập nhật: Nó chỉ ra rằng các lưu vào PNG đầu tiên làm cho màu sắc biến ra sao, nhưng nó buộc một sự chuyển đổi của hình ảnh khi tôi muốn lưu nó lại như một .ps sau (để đưa vào một PDF) và sau đó tôi mất chất lượng. Làm cách nào để giữ nguyên bản chất vectơ của tệp và nhận định dạng đúng?

+0

Vâng, đối với điểm xếp hạng, phiên bản thân của CairoPlot có lớp ScatterPlot. Bằng cách sử dụng đó bạn có thể xác định bán kính của điểm đánh dấu, vì vậy bạn có thể chỉ cần đặt nó là 1 vì nó sẽ là tùy chọn nhỏ nhất. Có lý do đặc biệt nào để bạn không sử dụng CairoPlot không? – Rodrigo

Trả lời

11

Để có đầu ra vectơ đẹp, không sử dụng kiểu đánh dấu '.'. Sử dụng ví dụ: 'o' (khoanh tròn) hoặc 's' (hình vuông) (xem help(plot) cho các tùy chọn) và thiết lập các tham số markersize từ khóa để một cái gì đó phù hợp nhỏ, ví dụ:

plot(x, y, 'ko', markersize=2) 
savefig('foo.ps') 

Đó '.' (điểm) tạo ra kết quả ít thoải mái có thể được hiểu như một lỗi trong matplotlib, nhưng sau đó, những gì nên "điểm" có nghĩa là trong một định dạng đồ họa vector?

2

Nếu chưa, bạn nên thử lưu trong công cụ rasterizing - lưu nó vào tệp PNG và xem có khắc phục được không. Nếu bạn cần một lô vectơ, hãy thử lưu vào PDF và chuyển đổi bằng một tiện ích bên ngoài. Tôi cũng đã có vấn đề trước với động cơ PS đã được giải quyết bằng cách tiết kiệm với các công cụ Agg hoặc PDF và chuyển đổi bên ngoài.

+0

Vâng, công việc này xung quanh công trình. BTW chúng tôi làm cùng một loại công việc. – Alex

6

Bạn đã thử hình dạng điểm ',' chưa? Nó tạo ra "pixels" (dấu chấm nhỏ, thay vì hình dạng).

Bạn cũng có thể chơi với tùy chọn markersize, với hình dạng này?

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