首页 > 解决方案 > 如何将外部图例添加到matplot?

问题描述

我有以下数据集:

data = structure(list(Currency = c("\"AUD:Australian dollar\"", "\"BRL:Brazilian real\"", 
"\"CAD:Canadian dollar\"", "\"CHF:Swiss franc\"", "\"CNY:Renminbi\"", 
"\"EUR:Euro\"", "\"GBP:Pound (sterling)\"", "\"HKD:Hong Kong dollar\"", 
"\"JPY:Yen\"", "\"TO1:Total (all currencies)\"", "\"USD:US dollar\""
), `1989` = c(NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_), `1992` = c(NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_), 
    `1995` = c("0.000001", "0.000001", "0.000001", "0.000001", 
    "0.000001", "0.000001", "0.000001", "0.000001", "0.000001", 
    NA, "0.000001"), `1998` = c("0.000001", "0.000001", "0.110001", 
    "1.765001", "0.000001", "0.000001", "2.075001", "0.000001", 
    "22.840001", "2243.970000", "2213.750000"), `2001` = c("0.000001", 
    "0.000001", "0.000001", "0.000001", "0.000001", "0.000001", 
    "0.000001", "0.000001", "0.000001", NA, "0.000001"), `2004` = c("0.000001", 
    "0.186183", "0.443694", "0.609938", "0.000001", "27.276067", 
    "0.977421", "0.000001", "1.807893", "695.878647", "676.367397"
    ), `2007` = c("0.027266", "0.247595", "0.688194", "1.008869", 
    "0.001477", "54.358328", "1.422906", "0.000170", "2.331012", 
    "1112.790520", "1078.012129"), `2010` = c("0.033014", "5.524377", 
    "0.899413", "1.362316", "0.003005", "331.224201", "1.042361", 
    "0.000935", "0.924893", "1612.849637", "1514.642008"), `2013` = c("0.057595", 
    "7.414087", "2.952866", "1.073223", "0.002421", "143.830218", 
    "0.957503", "0.000001", "1.842628", "1359.622210", "1283.970684"
    ), `2016` = c("0.009128", "2.535657", "0.767746", "0.644798", 
    "0.260262", "80.957156", "0.884905", "0.000001", "2.203361", 
    "1364.032088", "1324.969359"), `2019` = c("0.016027", "0.525830", 
    "0.525916", "0.556938", "0.921182", "44.797585", "1.325594", 
    "0.000001", "0.365471", "1874.424737", "1842.505958")), row.names = c(2L, 
1L, 9L, 11L, 3L, 10L, 8L, 7L, 4L, 5L, 6L), class = "data.frame")

当我绘制线条时,我无法获得与所显示颜色相同的外部图例。

curr = data[,1]
years = colnames(data)[2:ncol(data)]


matplot(years,t(data[,2:ncol(data)]), type = "l")
legend(1,1,legend = curr, col = 1:length(years),text.width = 1)

如何添加图例?谢谢

标签: rplot

解决方案


默认的基本 R 绘图颜色为:

palette()
[1] "black"   "red"     "green3"  "blue"    "cyan"    "magenta" "yellow" 
[8] "gray" 

当您有 11 个因子时,调色板会自行回收:

plot(1:11,rep(1,11),pch=20,col=factor(1:11))

在此处输入图像描述

所以在你的情节中,我会指定一个有 11 种颜色的调色板,并绘制:

PAL = RColorBrewer::brewer.pal(11,"Set3")

matplot(years,t(data[,2:ncol(data)]), col=PAL, type = "l")
legend("topleft",legend = curr, col = PAL,cex=0.7,lty=1)

在此处输入图像描述


推荐阅读