簡體   English   中英

ggplot2:更改軸上因子變量的顯示順序

[英]ggplot2: change order of display of a factor variable on an axis

當我使用帶有ggplot2和離散比例的geom_tile() ,標簽在x軸上按升序排列,在y軸上按降序排列:

#some sample data
a <- runif(400)
a <- matrix(a, ncol=20)
colnames(a) <- letters[seq( from = 1, to = 20 )]
rownames(a) <- letters[seq( from = 1, to = 20 )]
a <- melt(a)

當我繪制數據幀時a這就出現了:

ggplot(a, aes(X1, X2, fill = value)) + geom_tile() + 
scale_fill_gradient(low = "white",  high = "black", breaks=seq(from=0, to=1, by=.1), name="value") + 
opts(axis.text.x=theme_text(angle=-90, hjust=0)) +
scale_x_discrete(name="") + scale_y_discrete(name="") 

並且對於x和y標記的coords不同:

在此輸入圖像描述

我想讓標簽從上到下,從左到右排序。 有一個快速的方法來做到這一點?

這里重要的是因子水平的順序。 級別中的順序也是圖中的順序。 您可以使用rev來反轉這樣的級別順序(請注意,我只是重新排序data.frame中的一列):

df$X1 = with(df, factor(X1, levels = rev(levels(X1))))

使用此語法可根據需要重新排序因子。

對於您不希望修改基礎數據中因子順序的情況,可以使用scale_y_discretelimits參數獲得相同的結果:

ggplot(a, aes(X1, X2, fill = value)) +
  geom_tile() + 
  scale_y_discrete(name="", limits = rev(levels(a$X2)))

給出這個輸出:

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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