我無法按照出現在軸上的順序製作圖表。ggplot2圖形與標籤不匹配
我以各種可能的方式改變了因素的水平(紅色,水平,...)。當我繪製主圖時,它們的順序是正確的,標籤的順序也是正確的,但箱線圖是按字母順序排列的,一個主圖的內容與另一個主圖的內容切換(按字母順序排列)。
下面的代碼工作得很好:
a <- ggplot(data, aes(x = GroupX, y = Score, fill=GroupX, order=GroupX))+
scale_fill_manual(values=colours) +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
legend.position="none",
panel.background = element_rect(fill = "white"),
panel.grid.major = element_line(colour = "gray95"),
panel.border = element_rect(fill = NA, colour = "black", size = 2))+
ylab("Lesion")+
xlab("")+
guides(colour=FALSE)+
facet_wrap(~ Portion)
下面的代碼產生正確的方面:
當我嘗試用陰謀:
a + geom_boxplot()
條形圖的順序和整個圖形按字母順序顯示。
級別格式正確。我無法想象如何糾正這一點。
- 重複的例子,
數據集:
structure(list(Level = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L), .Label = c("A", "B", "C", "D", "E"
), class = "factor"), Factor = structure(c(1L, 1L, 3L, 3L, 2L,
2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L,
3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("X", "Y", "Z"
), class = "factor"), Valor = c(12, 11, 20, 15, 2, 5, 21, 21,
51, 1, 2, 15, 2, 56, 5, 21, 5, 12, 21, 15, 23, 5, 4, 55, 1, 2,
89, 2, 4, 12, 23, 10, 12, 51, 45, 2, 15, 32, 21, 15, 4, 5, 45,
45, 2, 14)), .Names = c("Level", "Factor", "Valor"), row.names = c(NA,
-46L), class = "data.frame")
代碼,而無需更改順序:
a <- ggplot(data, aes(x = Level, y = Valor, fill=Factor, order=Level)) +
facet_wrap(~ Factor)
a + geom_boxplot()
當我們設定的因素 - 快速的方式:
levels(data$Factor) <- c("Y", "Z", "X")
levels(data$Level) <- c("D", "C", "A", "B", "E")
標籤已更改,但情節不變。
你的問題不包含[重複的例子] (http://stackoverflow.com/q/5963269/4303162)。因此很難知道什麼是錯的,並給你一個合適的答案。請提供您的數據(例如通過使用'dput(data)')或使用R中的示例數據集之一。另外,添加將您的問題重現到您的文章所需的最小代碼。 – Stibu
另外,在ggplot2 2.0中,'order'作爲審美被正式棄用。如果您使用的版本<2.0,請在您的帖子中提及;如果您使用> = 2.0,則刪除'order = GroupX',因爲它被ggplot忽略。 – Gregor
您可以使用兩種方法來訂購x軸:1)將其作爲顯式聲明級別的因子,2)使用'scale_x_discrete(breaks = c(「A」,「B」,「C」,「D」 ))' – Matt74