你如何專門訂購ggplot2 x軸而不是字母順序?我想一個使heatmap使用ggplot2使用geom_tiles此功能,下面是我的代碼:p<-ggplot(data,aes(Treatment,organisms))+geom_tile(aes(fill=S))+
scale_fill_gradient(low = "black",high = "red") +
scale_x_discrete(expand = c(0, 0)) +
scale_y_discrete(expand = c(0, 0)) +
theme(legend.position = "right",
axis.ticks = element_blank(),
axis.text.x = element_text(size = base_size, angle = 90, hjust = 0, colour = "black"),
axis.text.y = element_text(size = base_size, hjust = 1, colour = "black")).數(shù)據(jù)是我的data.csv文件我的X軸是治療的類型我的Y軸是有機體的類型我對命令和編程不太熟悉,而且我對此比較陌生。我只是想能夠指定x軸上標簽的順序。在這種情況下,我試圖指定“治療”的順序。默認情況下,它按字母順序排序。如何覆蓋此數(shù)據(jù)/保持數(shù)據(jù)的順序與原始csv文件中的順序相同?我試過這個命令scale_x_discrete(limits=c("Y","X","Z"))其中x,y和z是我的治療條件順序。然而,它不能很好地工作,并給我缺少熱箱。
2 回答

慕尼黑的夜晚無繁華
TA貢獻1864條經(jīng)驗 獲得超6個贊
如果沒有完整,可重復(fù)的示例,有點難以回答您的具體問題。但是這樣的事情應(yīng)該有效:
#Turn your 'treatment' column into a character vectordata$Treatment <- as.character(data$Treatment)#Then turn it back into a factor with the levels in the correct orderdata$Treatment <- factor(data$Treatment, levels=unique(data$Treatment))
在此示例中,因子的順序?qū)⑴cdata.csv
文件中的順序相同。
如果您喜歡不同的訂單,可以手動訂購:
data$Treatment <- factor(data$Treatment, levels=c("Y", "X", "Z"))
但是,如果你有很多級別,這是危險的:如果你弄錯了任何一個,那將導(dǎo)致問題。

慕碼人8056858
TA貢獻1803條經(jīng)驗 獲得超6個贊
最常見的答案提供了一種需要更改基礎(chǔ)數(shù)據(jù)框架的解決方案。這不是必需的。也可以直接在aes()
調(diào)用中進行分解,或者為此創(chuàng)建一個向量。
這肯定與@Drew Steen的答案沒什么不同,但是與不改變原始數(shù)據(jù)框架的重要區(qū)別。
level_order <- c('virginica', 'versicolor', 'setosa') #this vector might be useful for other plots/analysesggplot(iris, aes(x = factor(Species, level = level_order), y = Petal.Width)) + geom_col()
要么
level_order <- factor(iris$Species, level = c('virginica', 'versicolor', 'setosa'))ggplot(iris, aes(x = level_order, y = Petal.Width)) + geom_col()
或
直接在aes()
沒有預(yù)先創(chuàng)建的矢量的呼叫中:
ggplot(iris, aes(x = factor(Species, level = c('virginica', 'versicolor', 'setosa')), y = Petal.Width)) + geom_col()
- 2 回答
- 0 關(guān)注
- 1034 瀏覽
添加回答
舉報
0/150
提交
取消