У меня есть пара графиков ящиков и усов в R. В обоих случаях ось x соответствует одной категориальной переменной, а цвета группировки соответствуют другой.R ggplot - Преобразование координат (квадратный корень) с boxplot
Если я рисую обе графики с нетрансформированной осью Y, они оба хороши. Однако, если я попытаюсь преобразовать квадратный корень оси y (используя: coord_trans (y = "sqrt")), один из этих графиков по-прежнему прекрасен, в то время как другой упаковывает линии, соответствующие медианной в большинстве ящиков (кроме тех, для которых есть только две группы, и поэтому коробки немного шире, см. «Числа» 1 и 2 на первом графике). Кроме того, для графика, который не рисуется должным образом, если я уменьшу количество категорий на моей оси x (следовательно, снова получив прямоугольники), снова появятся срединные линии.
Является ли это ошибкой с coord_trans (если да, как я могу обойти это) или проблемой с моим кодом?
Большое спасибо за любое предложение.
library(car)
library(gplots)
library(plyr)
library(ggplot2)
library(gridExtra)
library(gdata)
Category=factor(c(rep(1, times =3240), rep(2, times =2160)),
labels=c("A","B"), levels=c(1,2))
ID=factor(rep(seq(from = 1, to = 45),each = 120))
Months=factor(rep(seq(from = 1, to = 3), each = 40, times = 45),
labels=c("Jan","Feb","Mar"),levels=c(1:3))
Obs=rnorm(5400, mean=25, sd=15)
Data=data.frame(Category,ID,Months,Obs)
Data=subset(Data, (Data$Category=="B") | !(Data$ID%in%c(1,2)) |
(Data$Months%in%c("Jan","Feb")))
for (j in 1:2)
{
sel=which(Data$Category==unique(levels(Data$Category))[j])
Observ=Data$Obs[sel]
Month=Data$Months[sel]
Number=droplevels(Data$ID[sel])
Number=droplevels(Number)
Data_used=data.frame(Number,Month,Observ)
plot1 = ggplot(Data_used, aes(Number, Observ)) +
geom_boxplot(aes(fill=Month, drop=FALSE), na.rm=TRUE) +
scale_y_continuous(breaks = c(0,20,40,60,80,100), limits=c(0,115)) +
coord_trans(y = "sqrt")
plot(plot1)
}
очень сложно помочь вам без данных или, по крайней мере, изображения, на котором вы обнаружите проблему. – agstudy
Извините. Добавленные данные –
Замените 'scale_y_continuous()' на 'scale_y_sqrt()' и потеряйте строку 'coord_trans()'. Это работает для меня (R-2.15.3, Win7 64-бит, ggplot2-0.9.3.1). – Dennis