geom_col 值乱序
geom_col values out of order
我是 R 的新手。我对下面 geom_col
图表中 geom_text
元素的排序有疑问。
我相信它与 position = position_dodge2(preserve = "single")
行有关,但我不确定。
附上示例代码和输出。如您所见,标签是错误的 - e
和 b
以及 a
和 d
.
应该互换
眼睛更敏锐(可能头脑更敏锐)的人能看出问题所在吗?
library(ggplot2)
library(stringr)
data <- data.frame(Importance = c("Not important", "Important", "Critical", "Not important", "Important"), Current.Capability = c("Basic", "Undeveloped", "Advanced", "World class", "World class"), Function = c("PM", "Sales", "PM", "Marketing", "Marketing"), Item = c("a","b", "c", "d", "e"))
str(data)
head(data)
width <- 2
position.width <- width - 0.05
ggplot(data, aes(x = Importance, y = Current.Capability, fill=Function)) +
geom_col(position = position_dodge2(preserve = "single"), width = width) +
facet_grid(~Importance, scales = "free_x", space = "free_x") +
geom_text(
aes(
label = stringr::str_wrap(Item, 50)),
lineheight = 0.7,
angle=90,
size = 5,
hjust=0,
vjust=0.5,
y = 0.5,
position = position_dodge2(preserve = "single", width = position.width)) +
theme(axis.text.x = element_blank(), axis.ticks = element_blank()) +
theme(legend.position="bottom")+
scale_y_discrete(limits = c("Undeveloped", "Basic", "Advanced", "World class")) +
xlab("Importance") + ylab("Current Capability")
干得好。或许你可以尝试在geom_text
的美学中加入group = Importance
。也就是"explicitly define the grouping structure",见grouping. Also, here是相关案例
ggplot(data, aes(x = Importance, y = Current.Capability, fill=Function)) +
geom_col(position = position_dodge2(preserve = "single"), width = width) +
facet_grid(~Importance, scales = "free_x", space = "free_x") +
geom_text(
aes(
label = stringr::str_wrap(Item, 50),
group = Importance), # explicitly define the grouping structure
lineheight = 0.7,
angle=90,
size = 5,
hjust=0,
vjust=0.5,
y = 0.5,
position = position_dodge2(preserve = "single", width = position.width)) +
theme(axis.text.x = element_blank(), axis.ticks = element_blank()) +
theme(legend.position="bottom")+
scale_y_discrete(limits = c("Undeveloped", "Basic", "Advanced", "World class")) +
xlab("Importance") + ylab("Current Capability")
我是 R 的新手。我对下面 geom_col
图表中 geom_text
元素的排序有疑问。
我相信它与 position = position_dodge2(preserve = "single")
行有关,但我不确定。
附上示例代码和输出。如您所见,标签是错误的 - e
和 b
以及 a
和 d
.
眼睛更敏锐(可能头脑更敏锐)的人能看出问题所在吗?
library(ggplot2)
library(stringr)
data <- data.frame(Importance = c("Not important", "Important", "Critical", "Not important", "Important"), Current.Capability = c("Basic", "Undeveloped", "Advanced", "World class", "World class"), Function = c("PM", "Sales", "PM", "Marketing", "Marketing"), Item = c("a","b", "c", "d", "e"))
str(data)
head(data)
width <- 2
position.width <- width - 0.05
ggplot(data, aes(x = Importance, y = Current.Capability, fill=Function)) +
geom_col(position = position_dodge2(preserve = "single"), width = width) +
facet_grid(~Importance, scales = "free_x", space = "free_x") +
geom_text(
aes(
label = stringr::str_wrap(Item, 50)),
lineheight = 0.7,
angle=90,
size = 5,
hjust=0,
vjust=0.5,
y = 0.5,
position = position_dodge2(preserve = "single", width = position.width)) +
theme(axis.text.x = element_blank(), axis.ticks = element_blank()) +
theme(legend.position="bottom")+
scale_y_discrete(limits = c("Undeveloped", "Basic", "Advanced", "World class")) +
xlab("Importance") + ylab("Current Capability")
干得好。或许你可以尝试在geom_text
的美学中加入group = Importance
。也就是"explicitly define the grouping structure",见grouping. Also, here是相关案例
ggplot(data, aes(x = Importance, y = Current.Capability, fill=Function)) +
geom_col(position = position_dodge2(preserve = "single"), width = width) +
facet_grid(~Importance, scales = "free_x", space = "free_x") +
geom_text(
aes(
label = stringr::str_wrap(Item, 50),
group = Importance), # explicitly define the grouping structure
lineheight = 0.7,
angle=90,
size = 5,
hjust=0,
vjust=0.5,
y = 0.5,
position = position_dodge2(preserve = "single", width = position.width)) +
theme(axis.text.x = element_blank(), axis.ticks = element_blank()) +
theme(legend.position="bottom")+
scale_y_discrete(limits = c("Undeveloped", "Basic", "Advanced", "World class")) +
xlab("Importance") + ylab("Current Capability")