2016-01-04 2 views
1

Мои данные исчезают, когда я усекаю ось y, чтобы показывать только диапазон 50 - 90. Я помещаю илим в неправильное место?Усечение оси y, данные исчезают

Электронная таблица выглядит следующим образом:

xval yval_LWTW linenames SNP 
1 61.4835166 MT9513  NN 
2 61.93341478 RITA  GG 
3 63.31277751 JUDITH  CC 
4 63.60466558 CO04W320 GG 
5 64.84700514 DECADE  NN 

library(ggplot2) 
library(xlsx) 
data <- read.xlsx("RdataForGraphsofBestHits.xlsx", sheetIndex=4) 
ggplot(data, aes(x=xval, y=yval_LWTW, fill=SNP, 
        scale_fill_manual(values=c(GG="blue",CC="red",NN="green")))) + 
        geom_bar(stat="identity", width=1) + 
        theme(axis.title.x=element_blank()) 

Это дает мне высокий сюжет, потому что данные идут от 61 до 81. Я хочу, чтобы у-оси начинаются в 50, так график будет короче, поэтому я добавлю + ylim (50.0, 90.0) в код.

library(ggplot2) 
library(xlsx) 
data <- read.xlsx("RdataForGraphsofBestHits.xlsx", sheetIndex=4) 
ggplot(data, aes(x=xval, y=yval_LWTW, fill=SNP, 
     scale_fill_manual(values=c(GG="blue", CC="red", NN="green")))) + 
     geom_bar(stat="identity", width=1) + 
     theme(axis.title.x=element_blank()) + 
     ylim(50.0, 90.0) 

Теперь я получаю серый фон сюжета с осью у хорошо ограничен до 50 до 90 диапазона, но никаких данных не нанесен на него. Только серый фон и метки осей и легенда. enter image description here

Я думаю, у меня есть код для создания горизонтального участка.

ggplot(data, aes(x=xval, y=yval_LWTW, fill=SNP, 
      scale_fill_manual(values=c(GG="blue", CC="red", NN="green")))) + 
      geom_bar(stat="identity", width=1) + 
      theme(axis.title.x=element_blank()) + 
      coord_fixed(ratio=1/2) 

Таким образом, я могу исправить проблему горизонтали, если я могу исправить проблему исчезновения данных.

+0

Попробуйте фильтровать данные, чтобы соответствовать выходной вы после. –

+1

возможно http://stackoverflow.com/questions/25685185/limit-ggplot2-axes-without-removing-data-outside-limits-zoom. т.е. используйте 'coord_cartesian (ylim = c (50,90))' – user20650

+0

Спасибо, Пьер Лафортун. Такое простое, но умное решение. Не уверен, могу ли я использовать Coord_cartesian и coord_fixed (когда я указываю соотношение 1/2) в том же наборе инструкций, поэтому я могу вычесть 50 из каждой точки данных. Спасибо за идею. – tortoiseshell

ответ

1

Было любопытно, так что я закодированы его:

n <- 250 
xval <- 1:n 
yval <- 61 + 4*sin(2*pi*(1:n)/n) + 18*(1:n)/n 
snp <- sample(c("CC",rep("GG",40),rep("NN",40)),n,replace=T) 
data <- data.frame(xval=xval,yval_LWTW=yval,SNP=snp) 

ggplot(data, aes(x=xval, y=yval_LWTW, fill=SNP)) + 
      scale_fill_manual(values=c(GG="blue",CC="red",NN="green")) + 
      geom_bar(stat="identity", width=1) + 
      theme(axis.title.x=element_blank()) 

Урожайность:

enter image description here

И это:

ggplot(data, aes(x=xval, y=yval_LWTW, fill=SNP)) + 
      scale_fill_manual(values=c(GG="blue",CC="red",NN="green")) + 
      geom_bar(stat="identity", width=1) + 
      theme(axis.title.x=element_blank()) + 
      ylim(50,90) 

Урожайность:

enter image description here

И user20650 в coord_cartesian предложение:

ggplot(data, aes(x=xval, y=yval_LWTW, fill=SNP)) + 
      scale_fill_manual(values=c(GG="blue",CC="red",NN="green")) + 
      geom_bar(stat="identity", width=1) + 
      theme(axis.title.x=element_blank()) + 
      coord_cartesian(ylim=c(50,90)) 

дает следующее:

enter image description here

+0

Майк Уайз, спасибо, благодарю вас, спасибо. Любите свои графики. – tortoiseshell

+0

К сожалению, теперь я получаю: Ошибка: ggplot2 не знает, как обращаться с данными функции класса. – tortoiseshell

+0

Из-за имени 'data'. Если ваш фрейм данных не определен (и использует имя 'data'), ggplot будет использовать функцию' data() 'из пакета' utils'. R не имеет проверки типа. Множество непонятных сообщений об ошибках в R происходит от коллизий с функциями с тем же именем. –

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