如何在不使用PlotLegends包的情況下爲函數繪製圖例?在Mathematica中繪製圖例
回答
我也會對這個問題的答案很感興趣。
告訴你PlotLegends出了什麼問題:它非常不穩定,在許多情況下根本不起作用。
以下是PlotLegends完全擰緊的示例。輸出來自Mathematica 7.0:
假設我們測量了一些與許多函數相對應的數據點,並且我們想要顯示它們與理想函數的比較程度,或者它們與計算擬合的匹配程度。沒問題!我們將顯示[]平滑圖與數據點的ListPlot一起,對吧?
它可能是這個樣子:
Show[
Plot[{Sin[x], Sinh[x]}, {x, -Pi, Pi}],
ListPlot[Join[{#, Sin[#]} & /@ Range[-Pi, Pi, .5],
{#, Sinh[#]} & /@ Range[-Pi, Pi, .5]]]
]
現在,我們希望把一個傳奇的情節,讓讀者都知道,他們正在尋找在地球上的東西。說起來容易做起來難,先生!讓我們的PlotLegend添加到情節[]:
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]]]
]
這看起來太棒了!馬上發佈!
對於這樣一個基本的和無處不在的需要的功能,它確實有很多工作來找到一個替代PlotLegend的工作。到目前爲止,我發現的最好的選擇是精心構造一個plotstyles列表,然後用手構建這個圖例,最後用ShowLegend []將它與劇情一起顯示出來。 (例如參見here)這是可能的,但很多工作。
因此,如果有人知道使PlotLegend工作的解決方法,一個更好的替代包,或者只是一個簡單的方法來獲得可以輕鬆自動化的傳說,我將非常感激!這肯定會讓生活變得更輕鬆。
我也對讓PlotLegend正常工作的困難感到失望。我寫了自己的簡短功能來製作我自己的定製人物傳奇:
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]}
];
它很靈活,但不太容易使用。 「名稱」是要在圖例中呈現的字符串列表; 「標記」是與表示要繪製的繪圖標記或圖形的Graphics對象的「名稱」具有相同長度的列表; 「原點」是一個兩元素列表,其中圖例左上角的絕對水平和垂直位置; 「markerSize」是將標記縮放到的點的數量; 「fontSize」是字體大小; 「font」是要使用的字體的名稱。這裏有一個例子:
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優雅的解決方案,謝謝你放鬆我的生活 – pygabriel 2012-06-02 18:51:23
如果您遇到了當您嘗試使用「顯示」兩個圖像結合由詹姆斯描述的怪異行爲,那麼你應該嘗試一下使用「覆蓋'功能而不是'顯示'。
或者,我發現只要兩個圖形都有圖例,那麼'顯示'將正確渲染合成圖像。
如果它看起來有點傻有兩種傳說,那麼你可以通過使用類似的選項中刪除從第二圖形的一個:
PlotLegend -> {},
LegendPosition -> {0.1, 0.1},
LegendSize -> 0.001,
LegendShadow -> None,
LegendBorder -> None
創建一個空的和無形的傳說,但仍然允許兩個圖形是'Show'正確組成。
- 1. 如何在Mathematica中繪製圖表?
- 2. 在Mathematica中繪製插值
- 3. Mathematica繪圖錯誤
- 4. 在Mathematica中繪製階梯函數
- 5. 在mathematica中繪製sigmoid函數
- 6. 在Mathematica中繪製線性不等式
- 7. 在Mathematica中繪製最佳曲線
- 8. 如何在MatheMatica中繪製Arrow箭頭?
- 9. 在mathematica中的繪圖中的磁盤
- 10. 在mathematica中誤導性繪圖問題
- 11. 在Mathematica中繪製圖表上的形狀
- 12. 如何在條形圖上繪製Mathematica中的誤差線?
- 13. 在Mathematica中用對數座標繪製直方圖8
- 14. 在MATLAB和圖例中繪製
- 15. Mathematica中繪圖工具的CMYK顏色
- 16. Mathematica - 「三角測量」 - 在圖上繪製三角形網格
- 17. 在Mathematica中改善RegionPlot中的角落繪製
- 18. Mathematica動態繪製矩陣數據
- 19. Mathematica:繪製分段函數的導數
- 20. 用Mathematica繪製方程的解答
- 21. 如何使用mathematica繪製斜坡場?
- 22. 使用Mathematica繪製複雜曲線
- 23. 繪製自己的函數wolfram mathematica
- 24. Mathematica:用FindRoot繪製一個模塊
- 25. 如何在matplotlib上繪製圖例?
- 26. 如何在ggvis上繪製圖例
- 27. 在Winforms中繪製圖形繪製
- 28. gnuplot,只繪製圖例而不繪製圖
- 29. 如何在mathematica中使用PolarPlot繪製線'y = x'?
- 30. 如何在mathematica中繪製區間值函數?
PlotLegends有什麼特別的問題?我的意思是,你可以在沒有它的情況下做傳奇(參見我的答案),但它最多隻有一個。 – Timo 2010-08-12 07:19:24
@Timo我很遺憾地說,但傳說有點醜。一個巨大的盒子,內容間隔很大。默認情況下沒有人使用的投影。衆多的文物,如下圖所示(但還有更多)。 – 2011-04-23 07:45:23
@Sjoerd:不要對不起,我同意他們是醜陋的。但這可能不是OP爲什麼要發佈這個問題的原因,因此我要問他有什麼特別的問題。 – Timo 2011-04-24 13:51:17