我正在尝试显示基于人数的数据图,以通过使用ggplot瓦片图显示热图。大多数计数(大约90%)都在100以内,但是我仍然希望显示〜5000的最大值。我无法弄清楚如何将图例更改为不像下面的图片那样紧缩。有没有一种方法可以更改图例中刻度线之间使用的值,以便我可以显示1-50,然后在每个刻度之间跳较大的空格,而无需实际将其显示为图例中每个值之间的不同距离?
不幸的是,由于我的帐户太新,我无法发布图片,因此这里是图片的链接
以下代码是我到目前为止所拥有的...我知道它正在使用我的特定代码,但是我相信这与我正在使用的ggplot2函数和参数有关,而不是因为数据
ggplot(un.lp.count.1.2, aes(x = item.name, y = last.item)) +
geom_tile(aes(fill = n)) +
scale_fill_gradientn(colors = topo.colors(20), values=cval5, name = 'n', breaks=cval, labels=format(cval)) +
ggtitle('Heatmap for numUniqueItems 1&2') +
xlab('Most Crazed Item') +
ylab('Last Purchased Item') +
facet_grid(last.category~category, scales='free', space='free') +
theme(
axis.text.x=element_text(angle=90, size = 5, vjust=.1),
axis.text.y=element_text(angle=0, size = 5, hjust=.1),
strip.text.y = element_text(angle=0, size = 5),
strip.text.x = element_text(angle=0,size=5),
legend.position = 'right',
legend.direction = 'vertical',
legend.text = element_text(size=5, angle = 0),
legend.key.width = unit(.1, 'line'),
legend.key.height = unit(5, 'line')
)
我希望有人能帮助我,以便它仅显示图例以在每个刻度线之间显示相等的间距,但是每个相邻值之间的值距离可能与其他值不同
答案 0 :(得分:0)
由于您希望刻度线在视觉上等距分布,但表示刻度线之间的距离不同,因此我认为您想使用一个变换。例如,查看这两个图之间的差异。
df <- data.frame(
x = rep(c(2, 5, 7, 9, 12), 2),
y = rep(c(1, 2), each = 5),
z = rep(c(10,30,50,100,5000), each = 2)
)
ggplot(df, aes(x, y)) +
geom_tile(aes(fill = z), colour = "grey50") +
scale_fill_gradientn(colors = topo.colors(20))
ggplot(df, aes(x, y)) +
geom_tile(aes(fill = z), colour = "grey50") +
scale_fill_gradientn(colors = topo.colors(20),
trans = "log10",
limits = c(1,10000),
breaks = c(1,3,10,30,100,300,1000,3000,10000))
在第二个中,我使用以下转换:
trans = "log10"
您可以将其更改为另一种转换,然后找到最适合您的转换。