提问人:Mars_87 提问时间:11/2/2023 最后编辑:ukeMars_87 更新时间:11/4/2023 访问量:24
处理两位数和图例时出现问题
Problem dealing with double digits and legend
问:
我请求您的帮助,因为我尝试过寻找答案,但未能成功 我是 ggplot 的新手。
这是我试图做的事情,直到现在都没有成功。
我必须设置一个 Spearman 相关热图。 我想用四舍五入到小数点后第二个点的相关系数来准备它,这是(双精度)问题。
如果我在没有相关系数的情况下运行图形,则带有颜色条的图例将完美地放置在图形的外部右侧。
但是,当我尝试将相关系数与两位数四舍五入相加时,管理图例位置变得更加困难,因为它被放置在图表上,而边距消失,老实说,我不知道如何像上图那样将其设置回去。
在尝试设置它时,使用我发现的不同公式来准备相关性,我得到了颜色略有不同的热图,因此我假设即使是潜在的系数也相应不同。
这是我在论坛上的第二个问题,也许是第三个问题,所以我在展示我的数据时仍然“不礼貌”,但我会尽我所能。
一位好心的专家建议我使用 dput() 命令来显示我的数据,所以我会尝试一下。 这只是一个非常简单的表格,我用它来尝试命令。
library(ggplot2)
library(reshape2)
library(Hmisc)
library(corrplot)
dput(Cartel1)
structure(list(A = c(1L, 1L, 1L, 1L, 1L, 5L, 5L, 5L, 5L, 5L),
B = c(2L, 2L, 2L, 2L, 2L, 10L, 11L, 9L, 10L, 10L), C = c(20L,
21L, 19L, 20L, 19L, 10L, 9L, 8L, 8L, 7L), D = 1:10, E = c(2L,
1L, 2L, 3L, 1L, 9L, 9L, 9L, 8L, 9L)), class = "data.frame", row.names = c(NA,
-10L))
我使用的提示是:
A) 准备不带相关系数的斯皮尔曼相关热图:
testtest <- as.matrix(Cartel1)
cormatrix = rcorr(as.matrix(testtest), type='spearman')
cordata = melt(cormatrix$r)
ggplot(cordata, aes(x=Var1, y=Var2, fill=value)) +
geom_tile() + xlab("") + ylab("") + scale_fill_gradient2(low = "orange", high = "green", mid = "white", midpoint = 0, limit = c(-1,1), space = "Lab", name="Spearman\nCorrelation") + theme_minimal()+ theme(axis.text.x = element_text(angle = 45, vjust = 1, size = 8, hjust = 1))
B) 尝试使用相关系数设置斯皮尔曼相关热图: (您可能会注意到,我不得不四舍五入“3”而不是 2,就像我在网上找到的原始公式一样,我还是新手,我不知道为什么它不能正确四舍五入。我不得不输入“3”
cormat <- round(cor(testtest), 3)
只是在逗号后面有一个 1 位数字,但没关系,如果结果正确,这不是问题。
testtest<-as.matrix(Cartel1)
cormat <- round(cor(testtest),3)
cormatrix = rcorr(as.matrix(cormat), type='spearman')
cordata = melt(cormatrix$r)
ggplot(cordata, aes(x=Var1, y=Var2, fill=value)) + geom_tile() + xlab("") + ylab("") + scale_fill_gradient2(low = "orange", high = "green", mid = "white", midpoint = 0, limit = c(-1,1), space = "Lab", name="Spearman\nCorrelation") + theme_minimal()+ theme(axis.text.x = element_text(angle = 90, vjust = 1, size = 8, hjust = 1)) + geom_text(aes(Var2, Var1, label = value), color = "black", size = 3) +
theme(
axis.title.x = element_blank(),
axis.title.y = element_blank(),
panel.grid.major = element_blank(),
panel.border = element_blank(),
panel.background = element_blank(),
axis.ticks = element_blank(),
legend.justification = c(1, 0),
legend.position = c(0.6, 0.7),
legend.direction = "horizontal")+
guides(fill = guide_colorbar(barwidth = 7, barheight = 1,
title.position = "top", title.hjust = 0.5))
提前致谢
编辑:正如 Bastiàn 所建议的那样,在这里我显示了将 3 或 2 值应用于round((cor(testtest),3)
答: 暂无答案
下一个:生成空间热图
评论
legend.justification
legend.position
legend.direction
theme()
guides()