Получение R сюжета типа "б" - PullRequest
       20

Получение R сюжета типа "б"

5 голосов
/ 28 сентября 2010

есть ли способ в ggplot2 получить тип графика "b"?См. Пример:

x <- c(1:5)
y <- x 
plot(x,y,type="b")

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

alt text

РЕДАКТИРОВАТЬ: Здесьнекоторые примеры данных (я хочу построить каждую «кошку» в фасете с типом графика «b»):

df <- data.frame(x=rep(1:5,9),y=c(0.02,0.04,0.07,0.09,0.11,0.13,0.16,0.18,0.2,0.22,0.24,0.27,0.29,0.31,0.33,0.36,0.38,0.4,0.42,0.44,0.47,0.49,0.51,0.53,0.56,0.58,0.6,0.62,0.64,0.67,0.69,0.71,0.73,0.76,0.78,0.8,0.82,0.84,0.87,0.89,0.91,0.93,0.96,0.98,1),cat=rep(paste("a",1:9,sep=""),each=5))

С уважением, Муса

Ответы [ 2 ]

5 голосов
/ 28 сентября 2010

Настройте оси, рисуя график без какого-либо содержимого.

plot(x, y, type = "n")

Затем используйте text, чтобы получить данные.

text(x, y, labels = y)

Вы можете добавить отрезки с помощью lines.

lines(x, y, col = "grey80")

РЕДАКТИРОВАТЬ: Совершенно не удалось отследить упоминание ggplot в вопросе. Попробуйте это.

dfr <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(dfr, aes(x, y)) + 
  geom_text(aes(x, y, label = y)) + 
  geom_line(col = "grey80")
p

ДРУГОЕ РЕДАКТИРОВАНИЕ: Учитывая ваш новый набор данных и запрос, это то, что вам нужно.

ggplot(df, aes(x, y)) + geom_point() + geom_line() + facet_wrap(~cat)

ДАЙТЕ ДРУГОЕ РЕДАКТИРОВАНИЕ: Мы начинаем подходить к реальному вопросу. Как в «как вы делаете линии не совсем достигают точек».

Краткий ответ: это не стандартный способ сделать это в ggplot2. Правильный способ сделать это - использовать geom_segment и интерполировать между вашими точками данных. Однако это довольно много усилий, поэтому я предлагаю более легкую помадку: нарисуйте большие белые круги вокруг ваших точек. Недостатком этого является то, что линии сетки выглядят глупо, поэтому вам придется избавиться от них.

ggplot(df, aes(x, y)) + 
   facet_wrap(~cat) +
   geom_line() + 
   geom_point(size = 5, colour = "white") + 
   geom_point() + 
   opts(panel.background = theme_blank())
3 голосов
/ 09 февраля 2011

В gridExtra есть экспериментальный гроб для реализации этого в Grid-графике,

 library(gridExtra)
 grid.newpage() ; grid.barbed(pch=5)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...