[英]R legend issue, symbols of points are masked by lines
有沒有一種方法可以畫線,使它們從點的一側開始,或者使符號位於前景中?
我的解決方案是使符號更大,更可見。
編輯1:用於R程序的圖{graphics}。
編輯2:每個熱門請求的代碼。
legend(2,.4,bty='n', c('sugar','citrus','none'), pch=c('s','c','u'), pt.bg='white',lty= c(1,2,3), lwd=1.5, title="Condition",pt.cex=c(1.5),cex=1.5)
編輯3:這是為plot(type ='b')解決的,但對於圖例來說不然。
謝謝閱讀!
我唯一能想到的是手動設置虛線長度,直到它們最終看起來像您想要的樣子。 例如,這:
> plot(1,1)
> legend(c("A", "B"), col = 1:2, x = 1, y = .8, lty="99", pch=1:2)
產生下面的圖像。
lty
參數允許您將線條和破折號的長度指定為十六進制字符。 在這種情況下,它說創建線路長度的9
然后創建長度的空間9
然后重復。 看起來9與正常pch符號周圍的空間最合適。
請注意,您可能需要根據圖像,符號等的大小進行調整。我的建議最終是從R導出圖像並修飾圖像以滿足圖形編輯軟件中的需求。
您還可以使用R提供的填充點(pch = 21:25),並使用pc.bg指定填充顏色,該顏色會在創建圖例時傳遞給points
調用。
plot(1,1)
legend(c("A", "B"), col = 1:2, x = 1, y = .8, lty=1, pt.bg=1:2, pch=21:22)
生成以下內容:
遵循@JeffAllen的建議,這是一種獲取我認為您可能想要的方法。 它需要修改legend()
函數以返回點的位置(它們由body(legend)[[46]]
的x1
和y1
給出)。
legend2 <- legend
body(legend2)[[49]] <- quote(
invisible(list(rect = list(w = w, h = h, left = left, top = top),
text = list(x = xt, y = yt), points = list(x = x1, y = y1)))
)
作圖:
plot(-100:100, -100:100, type = "b")
繪制圖例時,在線條上繪制白色圓圈( pch = 21
, pt.bg = 'white'
),然后將legend2()
隱式返回的值分配給對象。 還要注意對pt.lwd
和pt.cex
的更改。
myLegend <- legend2(1, .8, bty = 'n', c('sugar','citrus','none'), pch = 21,
pt.bg = 'white', pt.lwd = 0, lty = c(1, 2, 3), lwd = 1.5, title = "Condition",
pt.cex = c(1.8), cex = 1.5)
最后,使用points()
繪制要在圖例中使用的字符,並從對象myLegend
提供x和y值。
points(myLegend$points$x, myLegend$points$y, pch = c('s','c','u'), cex = 1.5)
這應該為您提供以下信息:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.