離散變量的position scales設置中的limits/breaks/labels
離散變量的默認position scale函數(shù)是scale_*_discrete()
汽绢。
- 離散變量是如何映射到位置坐標軸上的苔巨?
ggplot將每個category映射為一個整數(shù)值勉抓,然后在對應坐標位置上繪制幾何圖形(geom)装蓬。蹈丸,從如下實例可以看到壁涎,7個class映射為整數(shù)1~7:
ggplot(mpg, aes(x = hwy, y = class)) +
geom_point() +
annotate("text", x = 5, y = 1:7, label = 1:7)
- 離散型變量中各categories的順序是怎么控制的坏瘩?如何自定義绍妨?
對連續(xù)型變量润脸,直接根據(jù)其值在對應坐標位置上繪制幾何圖形,不需要考慮值的順序問題他去。對離散型變量毙驯,應是通過因子化這種方式來確定順序的。
有多種方式來控制離散數(shù)據(jù)中categories的順序:
- 在繪圖之前先將離散型變量因子化:通過
factor()
的levels
參數(shù)控制順序灾测,例如:
df1 <- df <- data.frame(x=LETTERS[1:5],y=1+rnorm(5))
p1 <- ggplot(df,aes(x,y)) + geom_col()
# 通過levels設置順序
df1$x <- factor(df1$x,levels=c("E","D","C","B","A"))
p2 <- ggplot(df1,aes(x,y)) + geom_col()
# reorder()根據(jù)另一個變量的值對離散型變量進行排序
ggplot(mpg, aes(reorder(manufacturer, cty), cty)) + geom_point()
- 通過position scale函數(shù)中的
limits
參數(shù)控制順序爆价,例如:
# p3與p2等價
p3 <- ggplot(df,aes(x,y)) + geom_col() + scale_x_discrete(limits=c("E","D","C","B","A"))
-
limits
、breaks
和labels
參數(shù)是如何使用的媳搪?
-
limits
:字符串向量铭段,對應的值默認是離散型變量中的唯一值的集合,另外也可通過調整向量中值的順序調整categroies的順序 -
breaks
:默認是與limits
相同的字符串向量秦爆,可以手動設置為其子集序愚,效果是僅子集中的值有l(wèi)abels,子集外的值無labels(有breaks) -
labels
:可手動設置為字符串向量(長度必須與breaks
相同)等限,如果向量是命名向量爸吮,則labels被替換成值的名字;label_wrap()
函數(shù)可以將長lables換行