如何使用GGR中的ggplot基于列对热图进行聚类?
以前有人问过很多关于聚集热图的问题。然而,我似乎无法根据我的具体问题调整任何其他答案。另外,许多其他答案依赖于使用其他包来创建热图图(而我想坚持使用如何使用GGR中的ggplot基于列对热图进行聚类?,r,ggplot2,R,Ggplot2,以前有人问过很多关于聚集热图的问题。然而,我似乎无法根据我的具体问题调整任何其他答案。另外,许多其他答案依赖于使用其他包来创建热图图(而我想坚持使用ggplot) 但基本上,我正在尝试根据列重新排列在ggplot中创建的热图。希望下面的例子能解释我的意思 如果我创建一些数据并绘制一张热图,如下所示: library(colorspace) library(ggplot2) #create data df <- data.frame( a = paste0("a",
ggplot
)
但基本上,我正在尝试根据列重新排列在ggplot
中创建的热图。希望下面的例子能解释我的意思
如果我创建一些数据并绘制一张热图,如下所示:
library(colorspace)
library(ggplot2)
#create data
df <- data.frame(
a = paste0("a", c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5)),
b = paste0("b", c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5))
)
# create data to fill heatmap
c = c(-10, -9, -8, -2, -9,
2, 5, 2, 0, 5,
-5,-6,-7,-8,-9,
2, 5, 2, 0, 5,
-5,-6,-7,-8,-9
)
# From discrete to continuous
df$a <- match(df$a, sort(unique(df$a)))
df$b <- match(df$b, sort(unique(df$b)))
# set colour palette
pallette <- rev(sequential_hcl(palette = "Plasma", n = 100))
# plot
ggplot(df, aes(a, b)) +
geom_tile(aes(fill = c)) +
scale_fill_gradientn(
limits = range(c),
colors = pallette,
guide = guide_colorbar(
frame.colour = "black",
ticks.colour = "black"
)
)
库(颜色空间)
图书馆(GG2)
#创建数据
df您可以通过减少c
来重新排列x轴。您不一定要将c
作为列包含在数据集中,但我仍然建议您在df
中包含a
、b
和c
:
df$c <- c # not strictly required
ggplot(df, aes(reorder(a, -c), b)) +
geom_tile(aes(fill = c)) +
scale_fill_gradientn(
limits = range(c),
colors = pallette,
guide = guide_colorbar(
frame.colour = "black",
ticks.colour = "black"
)
)
df$c我现在正在研究这个函数。请原谅我的无知,但我如何将其应用于上述问题?只是一点迂腐;您可能不应该将变量称为c
或t
和F
,因为它们在R中有特殊意义。