Tôi có tệp chứa các sự kiện đã ghi nhật ký. Mỗi mục có một thời gian và độ trễ. Tôi quan tâm đến âm mưu phân phối tích lũy chức năng của các độ trễ. Tôi quan tâm nhất đến độ trễ đuôi nên tôi muốn âm mưu có trục y lôgarit. Tôi quan tâm đến độ trễ ở các phần trăm sau: thứ 90, 99, 99,9, 99,99 và 99,999. Đây là mã của tôi cho đến nay mà tạo ra một âm mưu CDF thường xuyên:Lôgarit lôgarit của hàm phân phối lũy tích trong matplotlib
# retrieve event times and latencies from the file
times, latencies = read_in_data_from_file('myfile.csv')
# compute the CDF
cdfx = numpy.sort(latencies)
cdfy = numpy.linspace(1/len(latencies), 1.0, len(latencies))
# plot the CDF
plt.plot(cdfx, cdfy)
plt.show()
Tôi biết những gì tôi muốn âm mưu như thế nào, nhưng tôi đã phải vật lộn để có được nó. Tôi muốn nó trông như thế này (tôi không tạo ra âm mưu này):
Làm cho logarit trục x là đơn giản. Trục y là trục cho tôi vấn đề. Sử dụng set_yscale('log')
không hoạt động vì nó muốn sử dụng quyền hạn của 10. Tôi thực sự muốn trục y có cùng một dấu ticklabels như cốt truyện này.
Làm cách nào để lấy dữ liệu của mình vào ô lôgarit như thế này?
EDIT:
Nếu tôi đặt yscale để 'đăng nhập', và ylim tới [0,1, 1], tôi nhận được cốt truyện sau:
Vấn đề là một điển hình lô tỷ lệ log trên một tập dữ liệu từ 0 đến 1 sẽ tập trung vào các giá trị gần bằng không. Thay vào đó, tôi muốn tập trung vào các giá trị gần với 1.
Bạn đang gặp vấn đề gì với 'set_yscale ('symlog')'? – mziccard
Đặt vị trí nhãn cũng là một câu chuyện hoàn toàn khác. Tôi cho rằng bạn có thể làm cho loga bậc thang trên trục y (nó hoạt động, nếu bạn có số 0 hoặc số liệu là sai) và sau đó điều chỉnh các nhãn. –
Ý của bạn là gì khi bạn nói rằng trục y * * không hoạt động "*? Bạn có thể cho chúng tôi xem không? Nó không phải là toán học có thể đại diện cho 0 trên một quy mô đăng nhập, vì vậy giá trị đầu tiên sẽ phải được che giấu hoặc cắt bớt thành một số dương rất nhỏ. Bạn có thể điều khiển hành vi này bằng cách chuyển '' mask'' hoặc ''clip'' thành tham số' nonposy = 'thành' ax.set_yscale() '. –