簡體   English   中英

R圖中的圖例顯示所有線條

[英]legend in R plot display all lines

我有以下問題。 我想在我的圖表中加入一個圖例。 我的代碼:


plot(Lc(`BEL_2016_final.csv`$value),col="red",lwd=2, 
     xaxt="n", yaxt="n", cex.lab = 1.5)
axis(side=1, at=axTicks(1), cex.axis = 1.5)
axis(side=2, at=axTicks(2), cex.axis = 1.5)

par(new=TRUE)

plot(Lc(`CRO_2016_final.csv`$value),col="blue",lwd=2,
     xaxt="n", yaxt="n", cex.lab = 1.5)
axis(side=1, at=axTicks(1), cex.axis = 1.5)
axis(side=2, at=axTicks(2), cex.axis = 1.5)

legend(x = "topleft", legend=paste0(c("Belgium, Gini "),
                            round(Gini(`BEL_2016_final.csv`$value), digits = 2),
                            c("Croatia, Gini "), 
                            round(Gini(`CRO_2016_final.csv`$value), digits = 2)),
       col=c("red", "blue"), lty=1:2, cex=1, lwd=1.5)

然而,傳說看起來是這樣的:

在此處輸入圖片說明

當我嘗試:

legend=paste0(c("Belgium, Gini ", "Croatia, Gini "),
                                    round(c(Gini(`BEL_2016_final.csv`$value)),
                                    Gini(`CRO_2016_final.csv`$value)),
                                   digits = 2)

我得到了這個結果: 在此處輸入圖片說明

這是錯誤的,因為克羅地亞的基尼指數是 0.73。

如何修改我的代碼以在圖例中顯示兩行(紅色和藍色),都在新行上? 非常感謝。

您的括號不匹配。 無論您使用什么 IDE/編輯器,我都鼓勵使用匹配(有時是“彩虹”)括號。 例如,在 RStudio 中,如果光標是_符號(並接受 RStudio 對其縮進首選項的堅持):

在此處輸入圖片說明

請注意(旁邊的paste0被突出顯示,表明digits=2paste0的最后一個參數。這是不正確的。另一個提示是使用 RStudio 的縮進首選項(突出顯示塊並按Ctrl-I ,“重新縮進的默認按鍵” Lines"):第二個Ginic( ,而不是第一個Gini ,這意味着c(和第二個Gini在同一級別......我希望第二個Gini嵌套在c( .

為了驗證發生了什么,我將用您的0.520.73值逐字替換Gini(.)調用(但請在代碼中將它們保留為Gini(.)

paste0(c("Belgium, Gini ", "Croatia, Gini "),
                                    round(c(0.52),
                                    0.73),
                                   digits = 2)
# [1] "Belgium, Gini 0.52" "Croatia, Gini 0.52"

從這個角度來看,似乎0.52之后的第一個右括號可能是在0.73 ,因為將 0.52 和 0.73 分組是有意義的。

這是更正的代碼,我所做的就是從第一個Gini之后刪除一個右括號,並在此表達式的最后添加一個右括號:

legend=paste0(c("Belgium, Gini ", "Croatia, Gini "),
              round(c(Gini(`BEL_2016_final.csv`$value),
                      Gini(`CRO_2016_final.csv`$value)),
              digits = 2) )

以及相關的匹配括號突出顯示(同樣, _是當前光標):

帶有相應父級匹配的 rstudio

<soapbox>

PS:我並不是說必須使用 RStudio IDE 來進行 R 工作。 其實我不會,我用的是emacs/ess。 還有其他編輯器可以使用。 然而,盡管縮進和類似可以被視為風格,因此對編程並不重要,但我認為縮進和一些編輯器功能(如匹配括號)可以幫助提高可讀性以及在您出現錯誤之前對代碼進行故障排除; 例如,這里一致的縮進樣式暗示了不正確的括號閉合,而匹配括號突出顯示則證實了這一點。 使用您喜歡的方式,但某些編程風格實際上在功能上是有益的(因此也是實用的)。

</soapbox>

正確的解決辦法是:

legend(x = "topleft", legend=paste0(c("Belgium, Gini ", "Croatia, Gini "),
                                    c(round(Gini(`BEL_2016_final.csv`$value), digits = 2),
                                    round(Gini(`CRO_2016_final.csv`$value), digits = 2)
                                    )),
       col=c("red", "blue"), lty=1:2, cex=1, lwd=1.5)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM