我正在尝试使用ggplot在Rpy2的日志范围内格式化我的轴。在普通的R中,可以这样做:
qplot(data=data, x=x, y=y) + geom_point() + scale_y_log2()
获取log2轴。当我尝试在Rpy2中使用ggplot2.scale_y_log2
时,它会抱怨它找不到,虽然ggplot2.scale_x_log10
(log * 10 *)工作正常。如何在Rpy2中获取log2轴?
相关问题:如果我的数据已被记录(例如,它是在我将log2应用于行的Pandas数据框中),我怎样才能在Rpy2中获取ggplot以将轴格式化为日志轴(即刻度为2 ^ 1,2 ^ 2,2 ^ 4,...)没有再次记录数据?只需重新格式化标签,因为数据已经是日志值。感谢。
答案 0 :(得分:3)
由于这是一个Python / rpy2问题,Python中的代码:
from rpy2.robjects.lib import ggplot2
from rpy2.robjects import r
from rpy2.robjects.packages import importr
scales = importr('scales')
iris = r('iris')
p = ggplot2.ggplot(iris) + \
ggplot2.geom_point(ggplot2.aes_string(x="Sepal.Length", y="Sepal.Width")) + \
ggplot2.scale_x_continuous(trans = scales.log2_trans())
p.plot()
答案 1 :(得分:2)
要回答问题的第一部分,您不能在R中执行此操作:
qplot(data=data, x=x, y=y) + geom_point() + scale_y_log2()
你收到这个错误:
Error: could not find function "scale_y_log2"
所以,你必须在之前定义它:
library(scales)
scale_y_log2 <- function (...)
{
scale_y_continuous(..., trans = log2_trans())
}
dat <- data.frame(x=1:10,y=1:10)
qplot(data=dat, x=x, y=y) + geom_point() + scale_y_log2()