【问题标题】:Plotting greek letters and plain text in ggplot2 graphs via Rpy2通过 Rpy2 在 ggplot2 图中绘制希腊字母和纯文本
【发布时间】:2013-04-19 22:17:07
【问题描述】:

如何在 Rpy2 中的 ggplot2 图中制作像 "$\alpha$ + $\beta$ is my label" 这样的 x 或 y 标签?我尝试使用r.expression 在情节上获取任何希腊字母:

p = ggplot2.ggplot(mydata) + r.xlab(r.expression("alpha")) 

但这不起作用。希腊字母如何与常规文本一起绘制?

【问题讨论】:

    标签: python ggplot2 rpy2


    【解决方案1】:

    R 的expression() 接受对象、调用或表达式并返回一个表达式(这是一种操作未计算代码的方法)。 expression("alpha") 返回字符串 "alpha"(就像写在 R 中的 expression("alpha") 一样。

    获取表达式的一种方法是解析字符串。在问题中使用您的示例:

    from rpy2.rinterface import parse
    p = ggplot2.ggplot(mydata) + scale_x_continuous(parse("alpha")) 
    

    如果您想将表达式(即语法上有效的 R 代码)与一般文本(无法解析为代码的内容,例如使用空格和标点符号)混合使用,您必须 使用 R 的 paste() in 来解析代码(这可能看起来很深奥,但就是这样 也必须在 R 中执行):

    p = ggplot2.ggplot(mydata) + \
        ggplot2.scale_x_continuous(parse('paste(alpha, " and ", beta)'))
    

    【讨论】:

    • 谢谢 - 但是你如何将它与非解析文本结合起来呢?如果我尝试scale_x_continuous(parse("alpha") + " and " + parse("beta")),我会收到混合类型的错误:TypeError: unsupported operand type(s) for +: 'rpy2.rinterface.SexpVector' and 'str'
    • @user248237dfsf - 我编辑了答案以涵盖这种情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    相关资源
    最近更新 更多