2016-08-11 5 views
-1

Я хотел бы иметь точечный график, который показывает счетчик по оси x. Как вы можете получить dotplot ниже, чтобы показать счет на x-asix?, показывающий подсчет по оси x для точечного графика

спасибо.

date = seq(as.Date("2016/1/5"), as.Date("2016/1/11"), "day") 
    value = c(11,11,12,12,13,14,14) 
    dat =data.frame(date = date, value = value) 
    dat 
    library(ggplot2) 
    library(ggplot2) 
ggplot(dat, aes(x = value)) + geom_dotplot(binwidth = .8) + 
    scale_y_discrete(breaks= seq(1,max(table(dat$value))+2,1), 
        labels = seq(1,max(table(dat$value))+2,1)) #tried using scale_y discrete but it does nothing 
+2

Я может быть что-то отсутствует, но вы имеете в виду счетчик на оси у? – steveb

ответ

0

Вы можете добавить coord_flip() для переключения осей х и у в ggplot. Вот пример со сценарием:

date = seq(as.Date("2016/1/5"), as.Date("2016/1/11"), "day") 
    value = c(11,11,12,12,13,14,14) 
    dat =data.frame(date = date, value = value) 
dat 

Редактировать, рассчитывать на оси х:

Это даст dotplot с упрощенными командами, и отсчеты в качестве меток на оси х. Примечание. Ширина бинов была изменена с 0,8 до 1, чтобы использовать использование ylim, а не масштабов.

library(ggplot2) 
    ggplot(dat, aes(x = value)) + 
    geom_dotplot(binwidth = 1) + 
    coord_flip() + 
    ylim(0,max(table(dat$value))+2) 

Редактировать, рассчитывать на оси у:

library(ggplot2) 
    ggplot(dat, aes(x = value)) + 
    geom_dotplot(binwidth = 1) + 
    ylim(0,max(table(dat$value))+2) 

enter image description here

+0

Когда я запустил это, я не получаю подсчеты по оси x – user3022875

+0

@ user3022875, делает ли это редактирование решение вашей проблемы? – desc

+0

не должно быть на оси y – user3022875

2

ylim(0, A) дает то, что вы хотите, где А число уложенных точек необходимо рассчитывать 1,00 плотности. Мы можем вычислить точное значение A (но немного сложнее, диалогический подход дает приблизительное значение). (я обозначаемого в post1, post2 и post3)

library(ggplot2); library(grid) 

date = seq(as.Date("2016/1/5"), as.Date("2016/1/12"), "day") 
value = c(11,11,12,12,13,14,14,14) 
dat =data.frame(date = date, value = value) 

### base plot 
g <- ggplot(dat, aes(x = value)) + geom_dotplot(binwidth = 0.8) + coord_flip() 
g # output to read parameter 

### calculation of width and height of panel 
grid.ls(view=TRUE,grob=FALSE) 
seekViewport('panel.3-4-3-4') 
real_width <- convertWidth(unit(1,'npc'), 'inch', TRUE) 
real_height <- convertHeight(unit(1,'npc'), 'inch', TRUE) 

### calculation of other values 
height_coordinate_range <- diff(ggplot_build(g)$panel$ranges[[1]]$y.range) 
real_binwidth <- real_height/height_coordinate_range * 0.8 # 0.8 is the argument binwidth 
num_balls <- real_width/1.1/real_binwidth # the number of stacked balls. 1.1 is expanding value. 

g + ylim(0, num_balls) 

# The dirty balls border probably comes from my environment. 

enter image description here

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