Tôi có thể đề nghị các Ticks
Hack sau:
pl = Plot[Sin[x], {x, 0, 10}];
Reap[Rasterize[Show[pl, Ticks -> {Sow[{##}] &, Sow[{##}] &}],
ImageResolution -> 1]][[2, 1]]
=> {{-0.208333, 10.2083}, {-1.04167, 1.04167}}
Bí quyết là thực PlotRange
được xác định bởi FrontEnd , không phải bởi hạt nhân. Vì vậy, chúng ta phải buộc FrontEnd hiển thị đồ họa để đánh giá các chức năng đánh dấu. Bản hack này cung cấp đầy đủ PlotRange
với giá trị rõ ràng là PlotRangePadding
được thêm vào.
Nhiều giải pháp chung có tính đến một khả năng rằng pl
có giá trị phi tiêu chuẩn của DisplayFinction
tùy chọn và rằng nó có thể đã Axes
tùy chọn thiết lập để False
:
completePlotRange[plot_] :=
[email protected]@
Reap[Rasterize[
Show[plot, Ticks -> (Sow[{##}] &), Axes -> True,
DisplayFunction -> Identity], ImageResolution -> 1]]
Trên trang Tài liệu cho PlotRange
dưới "Thông tin thêm" có thể đọc một lưu ý quan trọng về AbsoluteOptions
: "AbsoluteOptions
cung cấp hình thức rõ ràng của PlotRange
thông số kỹ thuật khi Automatic
se ttings được đưa ra "(làm nổi bật là của tôi). Vì vậy, có vẻ như Tài liệu không đảm bảo rằng AbsoluteOptions
sẽ cung cấp các giá trị chính xác cho PlotRange
khi nó không phải là Automatic
cho tất cả các tọa độ.
Nguồn
2012-01-21 13:40:33
Bingo! Đó là một câu trả lời hoàn chỉnh hơn tôi đã đưa ra ở trên. – kkm
Đó chính xác là những gì tôi đang tìm kiếm. Cảm ơn! – Cassini
Ý kiến của bạn về việc ghép mẫu đơn giản là 'PlotRange' trong' FullForm' của 'p' là gì? Tôi đã gặp rắc rối với 'AbsoluteOptions' trong quá khứ (có lẽ do không hiểu nó hoạt động như thế nào), vì vậy bây giờ tôi có xu hướng tránh sử dụng nó để ủng hộ sự phù hợp với mô hình bạo lực như trong câu trả lời của tôi. – acl