Làm thế nào để bạn vẽ các chú thích cho các chức năng mà không sử dụng gói PlotLegends?truyền thuyết âm mưu trong Mathematica
Trả lời
Tôi cũng sẽ rất quan tâm đến câu trả lời cho câu hỏi này.
Để cho bạn biết những gì là sai với PlotLegends: Nó là khủng khiếp không ổn định và trong nhiều trường hợp không làm việc cả.
Dưới đây là ví dụ trong đó PlotLegends vít lên hoàn toàn. Đầu ra là từ Mathematica 7.0:
Giả sử rằng chúng tôi đã đo một số điểm dữ liệu tương ứng với một số chức năng, và chúng tôi muốn cho thấy chúng so sánh với hàm lý tưởng như thế nào hoặc có thể phù hợp như thế nào. Không vấn đề gì! Chúng tôi sẽ chỉ hiển thị [] cốt truyện trơn tru cùng với một ListPlot của các điểm dữ liệu, phải không?
Nó có thể giống như thế này:
Show[
Plot[{Sin[x], Sinh[x]}, {x, -Pi, Pi}],
ListPlot[Join[{#, Sin[#]} & /@ Range[-Pi, Pi, .5],
{#, Sinh[#]} & /@ Range[-Pi, Pi, .5]]]
]
Bây giờ chúng tôi muốn đặt một huyền thoại về cốt truyện, vì vậy độc giả sẽ biết những gì trên trái đất chúng tôi đang xem xét. Nói dễ hơn làm, mister! Hãy thêm các PlotLegend đến Lô []:
Show[
Plot[{Sin[x], Sinh[x]}, {x, -Pi, Pi}, PlotLegend -> {Sin[x], Sinh[x]}],
ListPlot[Join[{#, Sin[#]} & /@ Range[-Pi, Pi, .5],
{#, Sinh[#]} & /@ Range[-Pi, Pi, .5]]]
]
này sẽ rất tốt! Xuất bản ngay lập tức!
Đối với một chức năng cơ bản và phổ biến cần thiết, chắc chắn đã có rất nhiều công việc để tìm một giải pháp thay thế cho PlotLegend hoạt động. Cách thay thế tốt nhất mà tôi đã tìm thấy cho đến nay là xây dựng một cách tỉ mỉ một danh sách các cốt truyện, sau đó xây dựng truyền thuyết bằng tay, và cuối cùng để hiển thị nó cùng với cốt truyện sử dụng ShowLegend []. (Xem ví dụ here) Có thể, nhưng rất nhiều công việc. Vì vậy, nếu có ai biết cách giải quyết công việc PlotLegend, một gói thay thế hoạt động tốt hơn, hoặc chỉ là một cách gọn gàng để có được truyền thuyết có thể được tự động dễ dàng, tôi sẽ rất biết ơn! Nó chắc chắn sẽ làm cho cuộc sống dễ dàng hơn một chút.
Tôi cũng đã thất vọng vì khó khăn trong việc PlotLegend hoạt động chính xác. Tôi đã viết chức năng ngắn gọn của riêng mình để thực hiện các truyền thuyết hình tùy chỉnh của riêng mình:
makePlotLegend[names_, markers_, origin_, markerSize_, fontSize_, font_] :=
Join @@ Table[{
Text[
Style[names[[i]], FontSize -> fontSize, font],
Offset[
{1.5*markerSize, -(i - 0.5) * Max[markerSize,fontSize] * 1.25},
Scaled[origin]
],
{-1, 0}
],
Inset[
Show[markers[[i]], ImageSize -> markerSize],
Offset[
{0.5*markerSize, -(i - 0.5) * Max[markerSize,fontSize] * 1.25},
Scaled[origin]
],
{0, 0},
Background -> Directive[Opacity[0], White]
]
},
{i, 1, Length[names]}
];
Thật linh hoạt nhưng không dễ sử dụng. "tên" là danh sách các chuỗi để hiển thị trong chú giải; "các điểm đánh dấu" là một danh sách có cùng độ dài như "tên" của các đối tượng đồ họa đại diện cho các điểm đánh dấu hoặc đồ họa để hiển thị; "origin" là danh sách gồm hai phần tử với vị trí ngang và dọc tuyệt đối của góc trên bên trái của chú giải; "markerSize" là số điểm để chia tỷ lệ các điểm đánh dấu thành; "fontSize" là kích thước phông chữ; "font" là tên của phông chữ để sử dụng. Dưới đây là một ví dụ:
Plot[{x, x^2}, {x, 0, 2}, PlotStyle -> {Blue, Red},
Epilog -> makePlotLegend[
{x, x^2},
(Graphics[{#, Line[{{-1, 0}, {1, 0}}]}]) & /@ {Blue, Red},
{0.9, 0.3},
12,
12,
"Arial"
]
]
+1 Giải pháp thanh lịch, cảm ơn bạn đã giúp tôi giảm bớt cuộc sống – pygabriel
Nếu bạn đang trải qua những hành vi kỳ lạ mô tả bởi James Khi bạn đang cố gắng sử dụng 'Show' để kết hợp hai hình ảnh, sau đó bạn nên chơi xung quanh với việc sử dụng ' Chức năng của lớp phủ thay vì 'Hiển thị'.
Ngoài ra, tôi đã thấy rằng miễn là cả hai đồ họa đều có một huyền thoại thì 'Hiển thị' sẽ hiển thị chính xác hình ảnh tổng hợp.
Nếu nó trông hơi ngớ ngẩn có hai huyền thoại sau đó bạn có thể xóa một từ đồ họa thứ hai bằng cách sử dụng các tùy chọn như:
PlotLegend -> {},
LegendPosition -> {0.1, 0.1},
LegendSize -> 0.001,
LegendShadow -> None,
LegendBorder -> None
này tạo ra một huyền thoại trống rỗng và vô hình nhưng vẫn cho phép hai card đồ họa được được soạn chính xác bằng 'Hiển thị'.
- 1. Giả thuyết Collatz trong Mathematica
- 2. ggplot2 cốt truyện không có trục, truyền thuyết, vv
- 3. Lỗi âm mưu Octave
- 4. 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?
- 5. dòng Label trong một âm mưu
- 6. Nhiều bullseye âm mưu trong R
- 7. Nhiều cuộc gọi âm mưu trong octave
- 8. Âm mưu đường viền cực trong Matplotlib
- 9. Xóa xticks trong âm mưu matplotlib?
- 10. Âm mưu Bland-Altman trong Python
- 11. Matplotlib: imshow trong âm mưu 3d
- 12. Âm mưu thời gian thực trong MATLAB
- 13. Phát hiện đỉnh trong âm mưu Manhattan
- 14. ggplot2 để âm mưu dòng
- 15. Outline âm mưu thuật toán
- 16. đường dài hơn trong truyền thuyết()
- 17. Phân số trong truyền thuyết, nhiều màu
- 18. R: loại truyền thuyết trong ggplot2
- 19. python + igraph "âm mưu không có sẵn"
- 20. Thay đổi kiểu đường trong truyền thuyết ggplot
- 21. Làm thế nào để tạo ra một âm mưu suy mịn 3d trong Matlab
- 22. The Little âm mưu evens chỉ * & co
- 23. vùng trắng trong Mathematica ListPlot
- 24. Lỗi Ipython/pylab/matplotlib âm mưu
- 25. backtransform 'quy mô() `cho âm mưu
- 26. Java đồ thị âm mưu thư viện
- 27. Chức năng âm mưu ASCII cho R
- 28. Thay đổi truyền thuyết vị trí/hướng sử dụng opts() không có tác dụng
- 29. Che khu vực giữa hai điểm trong âm mưu matplotlib
- 30. Nhúng một âm mưu 3D tương tác trong PySide
Điều gì đặc biệt sai với PlotLegends? Ý tôi là, bạn có thể làm truyền thuyết mà không có nó (xem câu trả lời của tôi) nhưng nó là kludgy tốt nhất. – Timo
@Timo Tôi rất tiếc phải nói, nhưng truyền thuyết thì khá xấu xí. Một hộp lớn, với nội dung được đặt cách nhau rộng rãi. Một bóng đổ theo mặc định mà không ai sử dụng. Nhiều đồ tạo tác, như minh họa dưới đây (nhưng có nhiều hơn). –
@Sjoerd: Đừng xin lỗi, tôi đồng ý rằng họ xấu. Nhưng đó có lẽ không phải là lý do tại sao OP đăng câu hỏi này, do đó tôi yêu cầu những gì cụ thể mà anh ta gặp phải. – Timo