2015-01-13 6 views
0

У меня есть сценарий R, который использует CSV-файл, поскольку это исходные данные, чтобы создать шестнадцать отдельных ящиков. Каждый из шестнадцати ящиков имеет различные шкалы оси Y, что затрудняет применение к сценарию общего илимского статута. Я попытался использовать функцию coor_cartesian с оператором ylim, а также функцию scale_y_continuous, но опять же, это было слишком общее для применения на шестнадцати ящиках с различными шкалами оси Y (я не хочу нормализовать шкалы на шестнадцати ящиках, только участки с «экстремальными» выбросами).Как удалить экстремальные выбросы в R?

Ниже приведена информация о снуте данных, которую я использовал для создания шестнадцати ячеек. 'SE_Data' - это исходный файл csv, о котором я говорил выше. Я должен также упомянуть, что шестнадцать коробок экспортируются как один файл PDF (я не знаю, нужен ли этот уровень детализации или нет).

# Enter csv input file: 
SE_Data<-read.csv("SE_DATA.csv",header=T) 

# Enter output file name: 
pdf(file="SE_Box_Plots.pdf", onefile=TRUE) 

x=c("A","B","C","D","E","F","G","H") 

SE_Data$ACO_Desc <- factor(SE_Data$ACO_Desc , x) #Ensures x-axis is ordered from A through H 

#Creates sixteen individual boxplots 
for (i in 5:ncol(SE_Data)) { 

    p<-ggplot(SE_Data, aes(x=Group_Desc, y=SE_Data[,i])) + geom_boxplot() + 
    ylab(gsub("\\_", " ", colnames(SE_Data)[i])) + 
    xlab("") + 
    theme(axis.text.x=element_text(angle = 0)) 
    print(p) 

} 

dev.off() 

dev.list() 

Я не был уверен, что я должен был бы создать ELSE IF Постулаты, чтобы решить эту проблему, однако, как кто-то, кто все еще достаточно новое для R, это, кажется, намного выше моего уровня квалификации. Ниже я включил два из шестнадцати ящиков, чтобы проиллюстрировать, как их шкалы оси Y отличаются друг от друга.

Box Участок 1: Box Plot 1

Box Участок 2: Box Plot 2

Как вы можете видеть из двух присуща рефлективных, вербальных, они оба имеют очень разные масштабы по оси Y. По-моему, «boxplot 2» выглядит отлично, однако «boxplot 1» содержит экстремальные выбросы. Я бы разработал фрагмент кода, который мог бы удалить эти экстремальные значения, чтобы уменьшить количество «мертвого пространства» на коробке; таким образом, уменьшая масштаб оси y и делая его более привлекательным для глаза.

Важно подчеркнуть, что я все еще хочу, чтобы выбросы были включены в мои ящики, однако я хочу удалить только крайние выбросы. Если вам нужна дополнительная информация с моего конца, пожалуйста, сообщите мне об этом.

Заранее благодарю вас за помощь, благодарю вас.

Chris

ответ

0

Я не могу воспроизвести свой график без данных, но в том числе

geom_boxplot(outlier.shape=NA) 

должны скрыть выбросы. Вы можете вручную отрегулировать yscale с помощью

scale_y_continuous(limits=c(-5, 1)) # or whatever values you want to use. 
+0

это полезно, однако масштаб от функции scale_y_continuous применяется ко всем ящикам. Есть ли способ, которым я могу настроить шкалу на основе сюжета? В очередной раз благодарим за помощь. – YimYames

+0

Хм, я не уверен. Вы можете попробовать огранку Group_Desc и использовать шкалы = 'free_y' –

Смежные вопросы