具有不同轴的ggplot2热图
ggplot 2 heatmap with varing axis
我想绘制热图,但 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
宽度的两倍。所以我想 n_inst
给出单位的宽度。
我试过 scale_discret,但不行
提前谢谢你。
你可以试试这个:
ggplot(df, aes(Inst, users)) + geom_tile(aes(fill = dens, width=n_inst))
我想绘制热图,但 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
宽度的两倍。所以我想 n_inst
给出单位的宽度。
我试过 scale_discret,但不行
提前谢谢你。
你可以试试这个:
ggplot(df, aes(Inst, users)) + geom_tile(aes(fill = dens, width=n_inst))