在标记的 X 轴中有比我所拥有的更多的因素
There are more factors than what I have in the X axis being labeled
我正在绘制一个简单的小提琴图,显示 2 年变量的小提琴,所以我只需要“2017”和“2018”出现在 X 轴上,但从 2016.5 开始出现更多刻度线, 2017.0, 2017.5... 直到 2018.5.在我数据的“年”列中,我只有我想要绘制的两年。我不明白为什么会这样显示。这是我的代码和我得到的图表图像!
enter image description here
sum.data <- ddply(df, .(Field), summarize, mean.TF = mean(TF, na.rm = T))
(violin <-
ggplot(df, aes(Year, TF)) +
geom_violin(aes(fill = factor(Year))) +
stat_summary(fun.y=mean, geom ="point", shape=18, size=2) +
labs(x= NULL, y= "Total FAME") +
facet_grid(Field ~.) +
geom_hline(data = sum.data, aes(yintercept = mean.TF), linetype = 3) +
scale_y_continuous(breaks = seq(0,300,50)) +
theme.custom)
这会起作用。
(violin <- df %>%
mutate(Year = factor(Year)) %>%
ggplot( aes(Year, TF)) +
geom_violin(aes(fill = factor(Year))) +
stat_summary(fun.y=mean, geom ="point", shape=18, size=2) +
labs(x= NULL, y= "Total FAME") +
facet_grid(Field ~.) +
geom_hline(data = sum.data, aes(yintercept = mean.TF), linetype = 3) +
scale_y_continuous(breaks = seq(0,300,50)) +
theme.custom)
发生这种情况是因为 Year
是一个数值变量,并且 ggplot 根据这些值进行了分离,如果你有更多的时间可能不会发生这种情况。这里有两个解决方案。
示例数据
df <-
tibble(
x = rep(2014:2015, each = 100),
y = c(rnorm(100),rexp(100))
)
原代码
df %>%
ggplot(aes(x,y))+
geom_violin(aes(fill = factor(x)))
解决方案
在 factor/character
中转换年份
这是一个很好的解决方案,因为它也解决了美学问题 fill
,它可能会使其他一些几何形状复杂化,但这是非常具体的。
df %>%
mutate(x = as.factor(x)) %>%
ggplot(aes(x,y))+
geom_violin(aes(fill = x))
为 x 轴添加比例
使用比例你可以设置任何 labels
或 breaks
,但你仍然需要为了美观 fill
.
转换变量
df %>%
ggplot(aes(x,y))+
geom_violin(aes(fill = factor(x)))+
scale_x_continuous(breaks = 2014:2015)
结果
我正在绘制一个简单的小提琴图,显示 2 年变量的小提琴,所以我只需要“2017”和“2018”出现在 X 轴上,但从 2016.5 开始出现更多刻度线, 2017.0, 2017.5... 直到 2018.5.在我数据的“年”列中,我只有我想要绘制的两年。我不明白为什么会这样显示。这是我的代码和我得到的图表图像!
enter image description here
sum.data <- ddply(df, .(Field), summarize, mean.TF = mean(TF, na.rm = T))
(violin <-
ggplot(df, aes(Year, TF)) +
geom_violin(aes(fill = factor(Year))) +
stat_summary(fun.y=mean, geom ="point", shape=18, size=2) +
labs(x= NULL, y= "Total FAME") +
facet_grid(Field ~.) +
geom_hline(data = sum.data, aes(yintercept = mean.TF), linetype = 3) +
scale_y_continuous(breaks = seq(0,300,50)) +
theme.custom)
这会起作用。
(violin <- df %>%
mutate(Year = factor(Year)) %>%
ggplot( aes(Year, TF)) +
geom_violin(aes(fill = factor(Year))) +
stat_summary(fun.y=mean, geom ="point", shape=18, size=2) +
labs(x= NULL, y= "Total FAME") +
facet_grid(Field ~.) +
geom_hline(data = sum.data, aes(yintercept = mean.TF), linetype = 3) +
scale_y_continuous(breaks = seq(0,300,50)) +
theme.custom)
发生这种情况是因为 Year
是一个数值变量,并且 ggplot 根据这些值进行了分离,如果你有更多的时间可能不会发生这种情况。这里有两个解决方案。
示例数据
df <-
tibble(
x = rep(2014:2015, each = 100),
y = c(rnorm(100),rexp(100))
)
原代码
df %>%
ggplot(aes(x,y))+
geom_violin(aes(fill = factor(x)))
解决方案
在 factor/character
中转换年份这是一个很好的解决方案,因为它也解决了美学问题 fill
,它可能会使其他一些几何形状复杂化,但这是非常具体的。
df %>%
mutate(x = as.factor(x)) %>%
ggplot(aes(x,y))+
geom_violin(aes(fill = x))
为 x 轴添加比例
使用比例你可以设置任何 labels
或 breaks
,但你仍然需要为了美观 fill
.
df %>%
ggplot(aes(x,y))+
geom_violin(aes(fill = factor(x)))+
scale_x_continuous(breaks = 2014:2015)