2015-09-09 5 views
0

Я пытаюсь построить данные с значениями оси X по оси X. Я пытаюсь не перекрывать свою точку с помощью geom_point. Я нашел много дискуссий о «scale_x_continuous», «position = jitter или dodge» и т. Д. ... и каждый раз, когда моя проблема остается, потому что мне нужно, чтобы моя точка была выровнена. Более того, «scale_size_area» не делает его хорошим.Расширение интервала оси X ggplot2

EDIT: Сгенерированные данные уже расплавлены в конце сообщения.

Я не могу опубликовать изображение (Link to image), но для того, чтобы дать идею: у меня есть 6 уровней по оси Y и 400 уровней по оси X. Мои точки (форма = 1 = круг) выравниваются по Y-уровням и имеют разные диаметры в зависимости от значения.

Это нормально, но круги накладываются друг на друга.

plot <- ggplot(data, aes(x_variable_400_levels, y_variable_6_levels)) + 

     # value*100 because values are between 0 and 1 to have bigger circles 
     geom_point(shape = 1, size = data$value*100) + 

     # theme description 
     theme(
       plot.title = element_text(lineheight=.8, face="bold", vjust=1), 
       axis.title.x = element_text(vjust=-0.5), 
       axis.title.y = element_text(vjust=0.3) 
     ) 

Итак, мой вопрос: Могу ли я изменить интервал между двумя значениями оси X, чтобы избежать дублирования между кругами? Дрожание здесь неинтересно, потому что шум не позволяет хорошо визуализировать данные, в том числе, когда я пытался иметь только ГОРИЗОНТАЛЬНЫЙ шум.

Любое решение, ссылки или другие учебники для его решения будут оценены.

EDIT: Сгенерированные данные. Импорт с read.table, sep = "," и header = T. Дело в том, что у меня очень мало кругов, и они тоже важны.

data <- read.table(text='"trf","sample","value" 
        36,"S1",0.143882104 
        38,"S1",0.025971979 
        47,"S1",0.016711593 
        56,"S1",0.027896069 
        67,"S1",0.025870577 
        93,"S1",0.07638307 
        100,"S1",0.022905895 
        102,"S1",0.019192547 
        104,"S1",0.018258923 
        107,"S1",0.005032219 
        114,"S1",0.028297368 
        123,"S1",0.007874848 
        131,"S1",0.024184004 
        36,"S2",0.115123666 
        38,"S2",0 
        47,"S2",0.00479275 
        56,"S2",0.029523128 
        67,"S2",0.030133055 
        93,"S2",0.044749246 
        100,"S2",0.032865979 
        102,"S2",0 
        104,"S2",0 
        107,"S2",0.013160255 
        114,"S2",0.052047248 
        123,"S2",0.007632445 
        131,"S2",0 
        36,"S3",0.179332128 
        38,"S3",0.046215267 
        47,"S3",0 
        56,"S3",0.070791832 
        67,"S3",0.050214857 
        93,"S3",0.074108014 
        100,"S3",0 
        102,"S3",0 
        104,"S3",0 
        107,"S3",0 
        114,"S3",0.081441849 
        123,"S3",0 
        131,"S3",0.100090456', header=T,sep=",") 
+0

Вы можете разместить ссылку на изображение, что другие могут включать в себя для вас. – hrbrmstr

+2

Можете ли вы предоставить воспроизводимый пример, включая (сгенерированные или реальные) данные и код, который вы используете? – Heroka

+0

Совершенно верно, извините. Вот ссылка, чтобы увидеть образец изображения: [link] (http://www.hostingpics.net/viewer.php?id=646938Capturedcran20150909161830.png) – glihm

ответ

1

Я не думаю, что изменение интервала является решением, так как ваша ось x является числовой. Было бы сложнее интерпретировать, если пространство между, например, 1 и 2, больше, чем пространство между 9 и 10. И если вы измените все интервалы на самый большой круг, сюжет будет слишком широким. Я также предполагаю, что это будет очень захламленным, если у вас больше данных, что затрудняет просмотр шаблонов. Может быть, решетка (граненый) - это решение? Позволяет сравнивать по горизонтали и вертикали, небольшие значения видны, а значения легко извлекаются и сравниваются. Вот начало:

p2 <- ggplot(data, aes(x=trf, y=value))+ 
    geom_bar(stat="identity") + 
    facet_grid(sample~.) + 
    xlim(c(0,150)) + theme_bw() 

enter image description here

+0

спасибо Heroka, ваша идея замечательная. Я попробую это по реальным данным и предлагаю это.Тем не менее, я буду искать немного больше о круге, который я хочу иметь без наложения. Спасибо за ваше время и этот способ визуализации данных! – glihm

+0

Добро пожаловать. Но подумайте о том, как вы хотите совершать непересекающиеся круги по очень широкой оси x, которую вы имели бы. Если бы вы нарисовали его ручкой и бумагой, как бы вы решили проблему? – Heroka

+0

Худ, вы правы, единственный способ, которым я вижу, - отделить данные. Как и вы, или, например, первая часть оси x в одной графике, а вторая часть в другой ... Но это звучит неплохо. Я постараюсь работать, начиная с вашего заявления, спасибо! – glihm

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