2015-09-12 2 views
0

Я пытаюсь повторить следующую таблицу, используя ggplot2диаграммы рассеяния в пакете R ggplot2: перемещение осей и изменение этикетки размеров шрифта

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

library(ggplot2) 
library(directlabels) 
Z <- c("Label1", "Label2", "Label3", "Label4", "Label5", "Label6", "Label7",   
"Label8", "Label9", "Label10", "Label11", "Label12", "Label13", "Label14", 
"Label15", "Label16", "Label17", "Label18", "Label19", "Label20", "Label21", 
"Label22", "Label23", "Label24") 

X <- c(10.32582421, 9.772686421, -13.99202201, 3.803952545, 7.775395482, 
-11.82234956, -24.27906403, -6.864457678, -24.62853773, 15.3562638, 
-6.476057462, 9.576414602, -5.504090215, 29.74512913, 9.046116821, 
15.79954557, -39.61679645, -0.90307239, 21.12503086, 15.30221473, 
13.40781808, -6.803226537, -4.045907666, -0.134057007) 

Y <- c(0.037608141, 0.010581738, 0.117730985, 0.022347258, 0.069347278, 
0.026699666, 0.028739498, 0.040611306, 0.036626248, 0.034854158, 
0.039310836, 0.03122964, 0.009422296, 0.021935924, 0.050006846, 
0.036285691, 0.016796701, 0.057764277, 0.028421772, 0.042726693, 
0.037513217, 0.058422072, 0.066859355, 0.078158403) 

mychart <- data.frame(Z, X, Y) 

q <- ggplot(mychart, aes(X, Y)) + geom_point(aes(colour = Z)) + theme_bw() 
direct.label(q) 

И я получаю следующий результат:

Есть три вещи, которые у меня возникают проблемы Выяснить:

  1. Я хотел бы удалить серые квадрантные строки.
  2. Я хотел бы переместить оси так, чтобы они были центрированы на графике, с графиками, распределенными по 4 квадрантам.
  3. Я хотел бы уменьшить размеры шрифта ярлыка - я подозреваю, поэтому некоторые из них не заканчиваются близко к их точкам.
+2

(1) 'help (" theme ")'. (2) либо взглянуть на 'geom_vline()' либо на грань графика без полей; (3) 'help (" apply.method ")' или использовать 'geom_text()' с ручным позиционированием vs 'directlabel'; (4) ваш ответ не воспроизводится. – hrbrmstr

+1

см. Также онлайн [помощь для темы] (http://docs.ggplot2.org/0.9.2.1/theme.html) – jeremycg

ответ

0
  1. theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank(), axis.line = element_line(colour = "black"))

  2. Использование +xlim(min,max) и +ylim(min,max) установить пределы оси для вашего участка. Затем вы можете использовать +geom_hline(y=yvalue) и +geom_vline(x=xvalue), чтобы добавить горизонтальные и вертикальные линии к вашему графику, чтобы обозначить четыре квадранта.

  3. Вместо использования +direct.label(q) используйте +geom_text(aes(label=q,size=sizevalue), где «sizevalue» - это числовое значение, определяющее размер меток (чтобы вы могли поэкспериментировать с этим).

EDIT: попробуйте этот код, который должен исправить ваши метки точек. (Я не знаю способ перемещения метки осей до линии вы нарисовали в, ни собственный способ просто переместить исходную ось в центр вашего участка Извините.!):

ggplot(mychart, aes(X, Y)) + 
    geom_point(aes(colour = Z)) + 
    theme(panel.grid.major = element_blank(), 
      panel.grid.minor = element_blank(), 
      panel.background = element_blank(), 
      axis.line = element_line(colour = "black")) + 
    xlim(-40,40) + 
    ylim(0,0.12) + 
    geom_hline(y=0.04) + 
    geom_vline(y=0) + 
    geom_text(aes(x=X,y=Y+0.003,label=Z,color=Z)) + 
    theme(legend.position="none") 

EDIT 2: джиттер в geom_text

ggplot(mychart, aes(X, Y, colour=Z)) + 
    geom_point() + 
    theme(panel.grid.major = element_blank(), 
      panel.grid.minor = element_blank(), 
      panel.background = element_blank(), 
      axis.line = element_line(colour = "black")) + 
    geom_text(aes(label=Z), 
       position = position_jitter(width=2, height=0.005)) + 
    xlim(-40,40) + 
    ylim(0,0.12) + 
    geom_hline(y=0.04) + 
    geom_vline(y=0) + 
    theme(legend.position="none") 
+1

Спасибо. Вот результат, основанный на вашем ответе: http://i.imgur.com/0xMgYra.jpg У меня есть пара вопросов. Как перенести метки оси на эти строки? Что касается пункта 3, я получаю следующее сообщение об ошибке: «Недопустимый аргумент для унарного оператора» – Phil

+1

Добавлен исправление к моему отзыву в зависимости от сюжета, который вы показали. Дайте мне знать, работает ли это редактирование. – rhozzy

+1

Спасибо за исправление. Это немного помогает. Причина, по которой я использовал команду directlabels directlabels direct.label, - это исправить перекрывающиеся метки. Есть ли другой способ минимизировать это? Изображение текущего выхода: http://i.imgur.com/6xEMcwu.jpg – Phil

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