Использование шкалы логарифмических осей в ggplot из Rpy2
Я пытаюсь отформатировать свои оси в масштабе журнала от Rpy2, используя ggplot. В обычном R это можно сделать:
qplot(data=data, x=x, y=y) + geom_point() + scale_y_log2()
Чтобы получить ось log2. Когда я пытаюсь использовать ggplot2.scale_y_log2
в Rpy2 жалуется, что не нашел, хотя ggplot2.scale_x_log10
(лог *10*) работает отлично. Как я могу получить оси log2 в Rpy2?
Смежный вопрос: если мои данные уже зарегистрированы (например, они находятся в кадре данных Pandas, где я применил log2 к строкам), как я могу получить ggplot в Rpy2, чтобы просто отформатировать ось как ось журнала (т. Е. Отметки типа 2^1, 2^2, 2^4, ...) без регистрации снова данных? Просто переформатирование меток, поскольку данные уже находятся в лог-значениях. Благодарю.
2 ответа
Поскольку это вопрос 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()
Чтобы ответить на вашу первую часть вопроса, вы не можете сделать это в 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()