【问题标题】:ggplot aes eval(parse(text))ggplot aes eval(解析(文本))
【发布时间】:2014-04-18 01:29:38
【问题描述】:

我的数据DT具有以下结构:

structure(list(Ticker = c("MSDLWI Index", "MSDLWI Index", "MSDLWI Index", "MSDLWI Index","MSDLWI Index", "MSDLWI Index", "NDLEACWF Index", "NDLEACWF Index", "NDLEACWF Index","NDLEACWF Index", "NDLEACWF Index", "NDLEACWF Index"), Date = structure(c(-1L, 89L, 180L, 272L, 364L, 454L, 15705L, 15793L, 15884L, 15978L, 16070L, 16136L), class = c("IDate", "Date")), Value = c(NA, -0.02925, -0.180118465104301, 0.124488001005151, 0.0497217814923236,0.0966385660152425, 0.0323951658690891, 0.0842289682913797, 0.00992717655157427, 0.0631103139013451, 0.0782204344979787, 0.00855027196875335)), .Names =c("Ticker", "Date", "Value"), row.names = c(NA, -12L),class=c("data.table","data.frame"))

头部(DT,3)

         Ticker       Date      Value
1: MSDLWI Index 1969-12-31         NA
2: MSDLWI Index 1970-03-31 -0.0292500
3: MSDLWI Index 1970-06-30 -0.1801185

但是,列名可能是不稳定的,所以我尝试在 ggplot 调用中对它们进行参数化:

var.col="Ticker"
ggplot(DT, aes(x=Date, y=Value, colour=eval(parse(text=var.col)))) + geom_line()

http://i.stack.imgur.com/H3tbN.png

在情节图例中,如何显示Ticker而不是eval(parse(text=var.col))

【问题讨论】:

标签: r ggplot2 eval


【解决方案1】:

没有理由时髦的eval(parse())业务:

ggplot(DT, aes_string(x="Date", y="Value", colour=var.col)) + 
    geom_line()

【讨论】:

    【解决方案2】:

    您可以简单地为您的色标添加一个名称:

    ggplot(DT, aes(x=Date, y=Value, colour=eval(parse(text=var.col)))) + geom_line() +
      scale_color_discrete(name=var.col)
    

    【讨论】:

      猜你喜欢
      • 2016-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多