2016-10-05 100 views
0

我無法弄清楚如何在scale_x_discrete()範圍內使用expand()來擴展分類x軸,以便將標籤放在點右側不會偏離圖。在ggplot中展開分類x軸

我知道如果x是數字,我可以簡單地調整x的最大限制,使得所有的點都向左移動。但是,我無法弄清楚如何用分類變量做到這一點。我甚至不關心擴展變量標籤是否是「」。我只需要在x軸上的最後一個分類變量右側有更多的空間。

這裏是一個可以用來說明如何成功地做到這示例數據:

data(iris) 

library(ggplot2) 
ggplot(data = iris, aes(x = Species, y = Sepal.Width)) + 
    geom_jitter() 

感謝任何及所有的幫助,請不要猶豫,問任何澄清的問題!

編輯:劇情,方便直觀的解釋

enter image description here

+0

您可以提供,我不太以下你的解釋所需輸出的一個例子。 –

+0

@CyrusMohammadian是。 [這裏](https://i.gyazo.com/ff4a7c18af77f67f90b78faa536c25a4.png)是我正在談論的一個簡單例子。 「FakeT」應該是「假文本」,但X軸不允許它顯示,我不知道如何擴展它,因爲它是一個分類x變量,而不是數字。 – medavis6

回答

3

你可以只添加一個空白的水平,你的分類變量的現有水平,如:

data(iris) 

levels(iris$Species) <- c(levels(iris$Species),'') # add blank level 

library(ggplot2) 
ggplot(data = iris, aes(x = Species, y = Sepal.Width)) + 
    geom_jitter() + 
    scale_x_discrete(drop=FALSE) # don't drop unused blank level 

enter image description here

更新:或者,如果你真的想延長t他x軸的數值,那麼你可以首先通過as.integer()轉換直截了當,數字:

data(iris) 
specVals <- levels(iris$Species) 
iris$Species <- as.integer(iris$Species) 

library(ggplot2) 
ggplot(data = iris, aes(x = Species, y = Sepal.Width)) + 
    geom_jitter(height=0) + # on 2nd thought -- don't add noise to the quantitative axis 
    scale_x_continuous(limits=c(min(iris$Species)-0.5,max(iris$Species)+1), 
        breaks=(min(iris$Species)):(max(iris$Species)+1), 
        labels=c(specVals,'')) 

enter image description here

+0

正是我所要求的。 一個後續問題:這是否意味着我不能任意擴展X軸的數值,而只能通過空白分類的值來擴展它? – medavis6

+0

@ medavis6也是可行的,參見?xlim或scale_x_continuous(limits =) – C8H10N4O2

+0

對,但是在這種情況下,類型變量可能是那種東西嗎?我真的在問這個問題。 – medavis6