簡體   English   中英

R:在ggplot中,如何在y軸上為x軸上的每個多個日期添加多個文本標簽

[英]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天放置標簽:

在gggplot2中用y軸值標記圖

這可以根據需要或多或少地工作,但我想知道是否有更好的方法來接近它,如在此圖表中(參見下面的代碼)我有一個列,分別為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.

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