r - 更改 ggplot2 中的顺序
问题描述
我正在按照本教程制作“热表”。但是我正在努力改变行和列的顺序,正如我们所看到的,情节改变了“x_i”的顺序。关于我该怎么做的任何提示?
这是代码:
ggplot(co, aes(weeks, variable)) +
geom_tile(aes(fill = value)) +
geom_text(aes(fill = co$value, label = round(co$value, 4))) +
scale_fill_gradient(low = "lightblue", high = "darkslategray") +
theme(panel.grid.major.x=element_blank(),
panel.grid.minor.x=element_blank(),
panel.grid.major.y=element_blank(),
panel.grid.minor.y=element_blank(),
panel.background=element_rect(fill="white"),
axis.text.x = element_text(angle=90, hjust = 1,vjust=1,size = 12,face = "bold"),
plot.title = element_text(size=20,face="bold"),
axis.text.y = element_text(size = 12,face = "bold")) +
ggtitle("Correlation Plot") + theme(legend.title=element_text(face="bold", size=14)) + scale_y_discrete(name="") +
scale_x_discrete(name="") + labs(fill="Corr.")
这是输出:
数据:
> gapsds
weeks DS1 DS2 DS3 DS4 DS5 DS6 DS7 DS8 DS9
1 2 0.5200000 0.4589673 0.4800000 0.4933333 0.3706182 0.4927536 0.5175299 0.5709524 0.63520976
2 4 0.7066667 0.6532746 0.5866667 0.6800000 0.4974965 0.6884058 0.6510860 0.6711195 0.71506470
3 6 0.7333333 0.7269774 0.6800000 0.7333333 0.5909858 0.7681159 0.6243748 0.6377304 0.71506470
4 8 0.8133333 0.6934761 0.7600000 0.7733333 0.6510860 0.7898551 0.6444082 0.6377304 0.65698838
5 10 0.7466667 0.6532746 0.6133333 0.6933333 0.6777973 0.7101449 0.5375634 0.5709524 0.52631666
6 12 0.5333333 0.5125693 0.5066667 0.5466667 0.6444082 0.5144928 0.4440741 0.3973294 0.37386631
7 14 0.4266667 0.4522670 0.3733333 0.3866667 0.4774631 0.3623188 0.3171958 0.2904845 0.22141597
8 16 0.2666667 0.2981612 0.2533333 0.2800000 0.3305514 0.2391304 0.1368950 0.1969953 0.09800379
co=melt(gapsds)
co$weeks = as.factor(co$weeks)
解决方案
我继续模拟mat
。您只需要重新调整Var1
和Var2
字段的级别,并且可以通过使用mat
.
mat <- data.frame(x_1 = rnorm(100,3,0.5), x_2 = rnorm(100,8,0.5), x_3 = rnorm(100,12,0.5))
corr_mat=cor(mat,method="s")
ord=hclust(1-as.dist(corr_mat))$order
co=reshape2::melt(corr_mat[ord,ord])
# Re-ordering Var1 and Var2 by the order of when the columns appear in mat
co$Var1 <- factor(co$Var1, levels = names(mat))
co$Var2 <- factor(co$Var2, levels = names(mat))
co %>%
ggplot(aes(Var1, Var2)) +
geom_tile(aes(fill = value)) +
geom_text(aes(fill = co$value, label = round(co$value, 2))) +
scale_fill_gradient(low = "lightblue", high = "darkslategray") +
theme(panel.grid.major.x=element_blank(),
panel.grid.minor.x=element_blank(),
panel.grid.major.y=element_blank(),
panel.grid.minor.y=element_blank(),
panel.background=element_rect(fill="white"),
axis.text.x = element_text(angle=90, hjust = 1,vjust=1,size = 12,face = "bold"),
plot.title = element_text(size=20,face="bold"),
axis.text.y = element_text(size = 12,face = "bold")) +
ggtitle("Correlation Plot") + theme(legend.title=element_text(face="bold", size=14)) + scale_y_discrete(name="") +
scale_x_discrete(name="") + labs(fill="Corr. Coef.")
推荐阅读
- r - 进行预测时是否需要将因子变量转换为数值?
- sql - 查询以从库存中检索可用房间
- java - 在 Spring Boot 中返回状态码为 202 的 HTTP 响应
- javascript - 使 HTML 画布作为图像源适合纵横比?
- javascript - Assign type-module (@type/lodash) to minified localized version of lodash
- javascript - 如何修复打开并刷新页面后自动关闭的弹出窗口?
- powershell - 在 PowerShell 的替换运算符中使用格式运算符
- database - 如何在刷新时重新渲染 Flatlist?
- arduino - esp8266继电器实时读取继电器状态
- consul - 带有 ocelot 和 consul 的动态服务名称