[英]R: In ggplot, how to add multiple text labels on the y-axis for each of multiple dates on the x-axis
我正在制作一個非常寬的圖表,當輸出為PNG文件時,在x軸上占用幾千個像素; 有大約20年的每日數據。 (這可能會或可能不會被視為良好做法,但它僅供我自己使用,而不是用於發布。)因為圖表太寬,所以當您滾動圖表時,y軸會從視圖中消失。 因此,我想以2年的間隔向圖中添加標簽,以顯示y軸上的值。 得到的圖表看起來像下面的圖表,除了為了保持緊湊,我只使用了30天的假數據並且大約每隔10天放置標簽:
這可以根據需要或多或少地工作,但我想知道是否有更好的方法來接近它,如在此圖表中(參見下面的代碼)我有一個列,分別為120,140和160的3個y軸值。真實數據有更多級別,所以我最終會調用15次geom_text來將所有內容放在繪圖區域。
問:是否有更簡單的方法將所有20多個日期(每個日期有15個標簽)一次性打印到圖表上?
require(ggplot2)
set.seed(12345)
mydf <- data.frame(mydate = seq(as.Date('2012-01-01'), as.Date('2012-01-31'), by = 'day'),
price = runif(31, min = 100, max = 200))
mytext <- data.frame(mydate = as.Date(c('2012-01-10', '2012-01-20')),
col1 = c(120, 120), col2 = c(140,140), col3 = c(160,160))
p <- ggplot(data = mydf) +
geom_line(aes(x = mydf$mydate, y = mydf$price), colour = 'red', size = 0.8) +
geom_text(data = mytext, aes(x = mydate, y = col1, label = col1), size = 4) +
geom_text(data = mytext, aes(x = mydate, y = col2, label = col2), size = 4) +
geom_text(data = mytext, aes(x = mydate, y = col3, label = col3), size = 4)
print(p)
GGPLOT2喜歡的數據是在長格式,所以melt()
荷蘭國際集團的文本長格式讓你做一個調用geom_text()
require(reshape2)
mytext.m <- melt(mytext, id.vars = "mydate")
然后你的繪圖命令變成:
ggplot(data = mydf) +
geom_line(aes(x = mydf$mydate, y = mydf$price), colour = 'red', size = 0.8) +
geom_text(data = mytext.m, aes(x = mydate, y = value, label = value), size = 4)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.