[英]Changing the order in 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.")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.