Как я могу построить 1-D сюжет в R? - PullRequest
2 голосов
/ 26 сентября 2010

У меня есть вектор целых чисел, например: 2,8,11,19.

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

-+-----+--+-------+-

Ответы [ 6 ]

6 голосов
/ 26 сентября 2010
library(lattice)


x <- c(2, 8, 11, 19)
stripplot(x)

Вы можете настроить весы по своему вкусу.см ?stripplot

4 голосов
/ 26 сентября 2010

С базовой графикой:

x <- c(2,8,11,19)
x <- data.frame(x,1) ## 1 is your "height"
plot(x, type="b")
3 голосов
/ 26 сентября 2010

Брэндон Бертельсен действительно близок ...

x <- c(2,8,11,19)
x <- data.frame(x,1) ## 1 is your "height"
plot(x, type = 'o', pch = '|', ylab = '')

Но я написал это, в основном, чтобы упомянуть, что в базовой графике вы также можете посмотреть на stripchart () и rug (), чтобы посмотреть на 1-данные d.

1 голос
/ 11 января 2019

Это можно сделать, используя ggplot2, удалив все оси и нанеся на график постоянное значение y. Затем вы можете использовать обычные функции ggplot2 для изменения цвета точек, а также комментировать текст, дополнительные строки и т. Д.

enter image description here

x=c(2,8,11,19)

ggplot(data.frame(x), aes(x=x, y=0)) +
  geom_point(size = 10)  +
  annotate("segment",x=1,xend=20, y=0, yend=0, size=2) +
  annotate("segment",x=1,xend=1, y=-0.1,yend=0.1, size=2) +
  annotate("segment",x=20,xend=20, y=-0.1,yend=0.1, size=2) +
  geom_text(aes(label = x), col="white") +
  scale_x_continuous(limits = c(1,20)) +
  scale_y_continuous(limits = c(-1,1)) +
  scale_color_manual(values = unname(colours)) + 
  theme(panel.background = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank(),
        axis.title = element_blank())

Этот график, по сути, представляет собой прямую линию с центром в районе 0 с еще двумя отрезками линии, добавленными на концах в качестве пробок. annotate("segment",...) льготное к опорной линии, вы можете контролировать, как долго рисуется линия.

1 голос
/ 08 августа 2017

Это может быть полезно для построения одномерных порядковых данных.

x<-c(-1.5,2,2.5,-2,.05)
## Make y-value=0
x<-cbind(x,0)
## Plotting without box or axis with dot, representing data points                  
plot(x,bty='n',xaxt='n',yaxt='n',ylab='',xlab='',pch=21,cex=2)

## Placing axis at y-value in order to pass through points with sequence wider than range
axis(side=1,seq(-4,4,1),pos=0)  ## Using y-value as position 

## Placing x-values & x-axis label onto plot
text(x,labels=x[,1],pos=3,offset=1,font=2)
text(y=0,x=0,labels='One-Dimensional Plot',pos=1,offset=3,font=2)
0 голосов
/ 28 октября 2018

Интересно, что никто не упомянул stripchart

stripchart(x, pch = "+")

. Вы можете использовать add = TRUE, чтобы добавить стрип-диаграмму к существующему графику, и параметр at, чтобы определить значение y, на котором будет построен график.ваши данные.

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