溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在R語言中使用ggplot2改變柱狀圖的順序

發(fā)布時(shí)間:2021-04-01 16:03:37 來源:億速云 閱讀:5356 作者:Leah 欄目:開發(fā)技術(shù)

今天就跟大家聊聊有關(guān)如何在R語言中使用ggplot2改變柱狀圖的順序,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

如下所示:

library(ggplot2)
library(ggthemes)
dt = data.frame(obj = c('A','D','B','E','C'), val = c(2,15,6,9,7))
dt$obj = factor(dt$obj, levels=c('D','B','C','A','E')) ## 設(shè)置柱條的順序
p = ggplot(dt, aes(x = obj, y = val, fill = obj, group = factor(1))) + 
geom_bar(stat = "identity", width = 0.5) + ## 修改柱條的寬度 
theme_economist()
p
## 特注:dt$obj 是因子類型,ggplot2作圖的順序就是按照這個(gè)因子水平的順序來的,
## 所以我們修改因子水平的順序即可修改作圖的順序,具體情況可以輸出一下 dt$obj

補(bǔ)充:ggplot柱狀圖調(diào)整順序_1.3 讓ggplot2的柱狀圖根據(jù)y的大小依次排列

方法:映射時(shí)使用reorder函數(shù),將映射給x的橫坐標(biāo)的變量()的次序,依據(jù)映射給y的變量的大小排列。

一、基本柱形圖

#先看一個(gè)常見的柱狀圖,此處的fill是給每一條的柱狀圖同一個(gè)顏色,所以沒有寫在ggplot語句中;當(dāng)然默認(rèn)先把映射給x的Abb變量轉(zhuǎn)化為因子變量(factor)

ggplot(upc, aes(x = Abb, y = Change)) +
geom_col(fill = "#669933")

如何在R語言中使用ggplot2改變柱狀圖的順序

發(fā)現(xiàn): 柱子的大小沒有任何規(guī)律,原因在于下面的x軸的坐標(biāo)。雖然沒有專門設(shè)置x軸字體,不是清晰,但可以看到x軸的排列是根據(jù)ggplot中映射給x的每個(gè)因子變量的首字母排列的,A、B、C...

所以要想生成我們想要的順序的柱狀圖:要么手動(dòng)設(shè)置因子的順序,要么按照按照一定的邏輯排列:比如,按照y軸的值從小到大排列。那么:

二、使用reorder函數(shù)讓柱狀圖有順序

# 映射給x的不是簡(jiǎn)單的變量名為Abb的變量,而是將Abb變量根據(jù)Change變量(默認(rèn)從小到大)reorder后的Abb變量

ggplot(upc, aes(x = reorder(Abb,Change), y = Change)) +
geom_col(fill = "#669933")

如圖:

如何在R語言中使用ggplot2改變柱狀圖的順序

當(dāng)然,想讓y軸從大到小變化,只需在Change前面加個(gè)負(fù)號(hào):

ggplot(upc, aes(x = reorder(Abb, - Change), y = Change)) +
geom_col(fill = "#669933")

看完上述內(nèi)容,你們對(duì)如何在R語言中使用ggplot2改變柱狀圖的順序有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI