1
以下のプロットでは、点線が と並ぶように、色付きの形状をかわしたいのですが、 の形状は避けたいと思い1
ます。色付きの形状は、同じ時点にあるために互いに重ならないように回避する必要があります。ダミー データとプロットを生成するコードを次に示します。同じポイントを選択的にかわす方法はありgeom_point
ますか?
df <- data.frame(id = factor(sort(rep(seq(1,5),2))),
time = rep(c(3,6), 5),
cat1 = c(sample(c('good', 'ok', 'bad'), 2),
sample(c('good', 'ok', 'bad'), 2),
sample(c('good', 'ok', 'bad'), 2),
sample(c('good', 'ok', 'bad'), 2),
sample(c('good', 'ok', 'bad'), 2)),
cat2 = c(sample(c('a', 'b', 'c', 'd'), 2),
sample(c('a', 'b', 'c', 'd'), 2),
sample(c('a', 'b', 'c', 'd'), 2),
sample(c('a', 'b', 'c', 'd'), 2),
sample(c('a', 'b', 'c', 'd'), 2))) %>%
pivot_longer(cols = c('cat1', 'cat2'), names_to='type', names_prefix = 'value', values_to = 'value') %>%
plyr::rbind.fill(data.frame(id = factor(seq(1,5)),
time = 9,
time2 = 9,
type = 'off',
value = c(1, NA, NA, 1, 1))) %>%
dplyr::arrange(id, time)
ggplot(df, aes(x = id, y = time)) +
geom_point(aes(id, time, colour = value, shape = value), size = 2, position = position_dodge(width = 0.7)) +
geom_segment(data = df[df$type == 'off',], aes(x = id, xend = id, y = 6,
yend = time2), colour = 'black', linetype = 'dotted') +
coord_flip() +
scale_shape_manual(values = c(13, 17, 17, 17, 17, 16, 16, 16, 15, 15, 15, 15)) +
scale_colour_manual(values = c('black', 'purple', 'green', '#ffff66', 'red',
'green', '#ffff66', 'red',
'green', '#ffff66', 'pink')) +
guides(fill = guide_legend(order = 2), shape = guide_legend(override.aes = list(size = 3)))