我想要绘制一个热图,但是x(和y)轴上的单位大小应该是不同的。这里有一个示例代码:
users = rep(1:3,3)
Inst = c(rep("A",3),rep("B",3),rep("C",3))
dens = rnorm(9)
n_inst = c(3,3,3,2,2,2,1,1,1)
df <- data.frame( users, Inst, dens, n_inst )
1 1 A 1.2521487 3
2 2 A -0.1013088 3
3 3 A 1.5770535 3
4 1 B 1.1093957 2
5 2 B 1.1059166 2
6 3 B 0.6884662 2
7 1 C -0.3864710 1
8 2 C -1.0216373 1
9 3 C 0.4500778 1
z <- ggplot(df, aes(Inst, users)) + geom_tile(aes(fill = dens))
z + scale_x_discrete(breaks = n_inst)

这就绘制了一个热图,但是所有的Inst单位都有相同的大小。我希望A是C的3倍,B是C的2倍。所以我要n_inst给出单位的宽度。
我试过scale_discret,但那做不到
提前谢谢你。
发布于 2016-12-02 17:48:16
你可以试试这个:
ggplot(df, aes(Inst, users)) + geom_tile(aes(fill = dens, width=n_inst))

https://stackoverflow.com/questions/40938035
复制相似问题