我正在尝试对各组颜色及其补充进行可视化。我想用geom_tile将它们并排放置。我的问题是一些目标颜色有多个补色,所以我需要能够在颜色之间均匀地分割补色块。
我的测试数据集是:
test_pair = data.frame(pair_number = c(1, 1, 2, 2, 3, 3, 3),
color = c('#5f75e6', '#e6d05f', '#5f75e6', '#5fb9e6', '#5f75e6', '#b9e65f', '#e68d5f'),
group = c('target', 'comp', 'target', 'comp', 'target', 'comp', 'comp'),
bin_width = c(1, 1, 1, 1, 1, 0.5, 0.5))
我的情节代码:
ggplot(test_pair, aes(x = factor(group), y = factor(pair_number), width = bin_width)) +
geom_tile(aes(fill = color)) +
scale_fill_identity() +
scale_x_discrete('', expand = c(0, 0)) +
scale_y_discrete('', expand = c(0, 0)) +
theme_bw() +
theme(line = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
plot.background = element_rect(fill = '#c4a879'),
axis.ticks = element_blank(),
axis.text.y = element_text(size = 14),
axis.text.x = element_text(size = 14),
axis.title.y = element_text(color = hex))
该图确实将其中一种补色分成两半,但是中心是平铺的,不会绘制第二种补色。我希望绘图能够并排打印两个补码,而不必在geom_tile documentation中指定沿x的断点。有谁知道怎么做?
答案 0 :(得分:5)
有两种颜色。只是x和y坐标以及两个瓷砖(颜色)的宽度是相同的;因此,两个图块(颜色)完全重叠。要查看是这种情况,请调整基础颜色的宽度;例如,将bin_width
数据框中的test_pair
行更改为:bin_width = c(1, 1, 1, 1, 1, 0.75, 0.5))
,然后运行ggplot命令。
要解决您的问题,请偏移两个图块的x位置。一种方法是在x轴上使用数字刻度,然后在scale_x_continuous()
中添加适当的中断和标签。但是如何在不指定断点的情况下进行偏移?我不确定。
test_pair = data.frame(pair_number = c(1, 1, 2, 2, 3, 3, 3),
color = c('#5f75e6', '#e6d05f', '#5f75e6', '#5fb9e6', '#5f75e6', '#b9e65f', '#e68d5f'),
group = c(2, 1, 2, 1, 2, .75, 1.25),
bin_width = c(1, 1, 1, 1, 1, .5, .5))
ggplot(test_pair, aes(x = group, y = factor(pair_number), width = bin_width)) +
geom_tile(aes(fill = color)) +
scale_fill_identity() +
scale_x_continuous('', breaks = c(1,2), labels = c("comp", "target"), expand = c(0, 0)) +
scale_y_discrete('', expand = c(0, 0)) +
theme_bw()