2015-09-01 1 views
1

Как я могу показать цветные точки, используя мозаичный пакет, чтобы сделать точку?dotplot точка не отображается и формат точечного графика

library(mosaic) 
n=500 
r =rnorm(n) 
d = data.frame(x = sample(r ,n= 1,size = n, replace = TRUE), color = c(rep("red",n/2), rep("green",n/2))) 
dotPlot(d$x,breaks = seq(min(d$x)-.1,max(d$x)+.1,.1)) 

сейчас все точки синего цвета, но я хотел бы, чтобы они были окрашены в соответствии с колонкой цвета InThe таблицы данных

ответ

1

Вам нужно добавить stackgroups=TRUE так, что два разных цвета не нанесены на друг над другом.

n=20 
set.seed(15) 
d = data.frame(x = sample(seq(1,10,1), n, replace = TRUE), 
       color = c(rep("red",n/2), rep("green",n/2))) 
table(d$x[order(d$x)]) 
length(d$x[order(d$x)]) 
binwidth= 1 

ggplot(d, aes(x = x)) + 
    geom_dotplot(breaks = seq(0.5,10.5,1), binwidth = binwidth, 
       method="histodot", aes(fill = color), 
       stackgroups=TRUE) + 
    scale_x_continuous(breaks=1:10) 

Кроме того, ggplot использует внутреннюю цветовую палитру для эстетики заполнения. Вы получите одинаковые цвета, независимо от того, что вы назвали значениями столбца «цвет» в ваших данных. Добавьте scale_fill_manual(values=c("green","red")), если вы хотите установить цвета вручную.

enter image description here

+0

Спасибо, что, похоже, решили проблему 1. Можете ли вы помогите с другими 2 проблемами? Если я изменяю n = 200, точки не появляются, а ось y не является счетчиком. Мне нужно динамически менять ограничение на яксис. Думаю – user3022875

+0

Интересно. Я не уверен, почему это происходит, но теперь я вижу, что тики оси y на самом деле не считаются. Я посмотрю, смогу ли я понять, что происходит. – eipi10

+0

y-scale - это [известная проблема] (http://stackoverflow.com/a/16216666/496488) с 'geom_dotplot'. – eipi10

3

Если вы все еще заинтересованы в решении mosaic/lattice, а не ggplot2 решения, здесь вы идете.

dotPlot(~ x, data = d, width = 0.1, groups = color, 
    par.settings=list(superpose.symbol = list(pch = 16, col=c("green", "red")))) 

resulting plot

Обратите внимание также

  • , как с ggplot2, цвета не определяется значениями в вашей переменной color но темой. Вы можете использовать par.settings, чтобы изменить это на уровне графика или trellis.par.set(), чтобы изменить значения по умолчанию.
  • предпочтительно использовать формулу и data = и избегать оператора $.
  • вы можете использовать аргумент width, а не breaks, если вы хотите установить ширину ячейки. (Вы можете использовать аргумент center для управления центрами бункеров, если это имеет для вас значение. По умолчанию 0 будет центром бункера.)
Смежные вопросы