首页 文章

ggplot轴标签中的下标字母

提问于
浏览
48

另一个发布的图表,另一天在ggplot2中调整了一些东西......我在唠叨?我不确定...

dat <- data.frame(x = rnorm(100), y = rnorm(100))
ggplot(dat, aes(x=x,y=y)) +
    geom_point() +
    labs(y=expression(Blah[1]))

dat <- data.frame(x = rnorm(100), y = rnorm(100))
ggplot(dat, aes(x=x,y=y)) +
    geom_point() +
    labs(y=expression(Blah[1d]))

我正在尝试研究如何在轴标签中加下标字母 . 第一个例子只是一个数字,只要你在方括号中有一个字符就会失败 . Blah [下标(1d)]基本上就是我需要的,但我无法弄清楚如何让它让我在下标中写字母 . 尝试了各种变体,包括paste()等 .

当然,要增加挫折......

labs(y=expression(Blah[12])) - 这很有效

labs(y=expression(Blah[d])) - 这很有效

labs(y=expression(Blah[d1])) - 这很有效

labs(y=expression(Blah[1d])) - 这失败了 .

思考?

2 回答

  • 5

    我可以想到比使用 paste 更好的两种方法:

    ggplot(dat, aes(x=x,y=y)) +
         geom_point() +
         labs(y=expression(Blah[1*d]))
     ggplot(dat, aes(x=x,y=y)) +
         geom_point() +
         labs(y=expression(Blah["1d"]))
    

    R中的标记(或"names"或"symbols")不应以数字开头 . 因此,您可以通过引用或通过非空格分隔符 * 运算符分隔 1d 来绕过该限制 . "joins"或"ligates"是具有合法R符号或标记的纯数字文字 .

    要获得取消订阅的百分号,只需:

    ggplot(dat, aes(x=x,y=y)) +
        geom_point() +
        labs(y=expression(Blah[1*d]*"%"))
    

    将parens放在pct-sign周围:

    expression(Blah[1*d]*"(%)")
    

    % 字符在R解析中具有特殊含义,因为它表示用户定义的中缀运算符的开头 . 因此,将其用作文字需要引用它 .

  • 50

    好的 . 虽然我有多快得到它(当你问一个问题的时候总是这样!我在这里说:

    ggplot(dat, aes(x=x,y=y)) +
        geom_point() +
        labs(y=expression(Blah[1][d]))
    

    最好发布答案而不是删除问题,因为它可能有助于其他人 .

    'Blahs'除了我真正想要的是 expression(paste("Hb", A[1][c]," (%)",sep=""))

    为什么 paste0() 在这里不起作用超出了我的范围 .

相关问题