簡體   English   中英

更改 ggplot2 中的順序

[英]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 您只需要重新調整您的Var1Var2字段,並且可以通過使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM