【发布时间】:2018-05-25 18:19:54
【问题描述】:
如果 x 轴上有 factor,我在添加 geom_vline 时会遇到一些麻烦。我想将x_value转换为factor并用x_line列画一条垂直线。
类似的帖子可能是这样的。
geom_vline vertical line on x-axis with categorical data: ggplot2
但即使我按照下面发布的解决方案进行操作,它也不起作用
这是问题的简短版本
df <- data.frame(x_value=c(rep(seq(1,5),2)), y_value=c(rnorm(10,5,1)),x_vline=3, gr=rep(c(1,2),c(5,5)))
> df
x_value y_value x_vline gr
1 1 6.589680 3 1
2 2 4.937223 3 1
3 3 6.934755 3 1
4 4 4.407492 3 1
5 5 6.321616 3 1
6 1 7.068435 3 2
7 2 4.379096 3 2
8 3 8.138772 3 2
9 4 5.814828 3 2
10 5 5.828453 3 2
library(ggplot2)
ggplot(df, aes(x=factor(x_value), y=y_value)) +
geom_point(size=3, aes(colour=factor(gr)))+
facet_wrap(~gr)+
geom_vline(aes(xintercept=factor(x_vline)), linetype="dashed",colour="blue",size=0.7)
UseMethod("rescale") 中的错误: 没有适用于“因子”类对象的“重新缩放”方法
然后关注这个Issue with a drawing a vertical line in ggplot for categorical variable x-axis in R和这个geom_vline vertical line on x-axis with categorical data: ggplot2
我试过了
ggplot(df, aes(x=factor(x_value), y=y_value)) +
geom_point(size=3, aes(colour=factor(gr)))+
facet_wrap(~gr)+
#geom_vline(aes(xintercept=factor(x_vline)), linetype="dashed",colour="blue",size=0.7)
geom_vline(df,aes(xintercept=which(levels(factor(x_value)) %in% levels(factor(x_vline)))), linetype="dashed",colour="blue",size=0.7)
错误:ggplot2 不知道如何处理 uneval 类的数据
我怎样才能做到这一点? 谢谢!
【问题讨论】:
-
还是什么都没有? :(
-
您将两个变量映射到 x。您可能需要重新考虑您的问题。
-
@RomanLuštrik 这是真实数据的样子。两个变量,但它们在同一个类中,对吧?
-
映射的变量优先于其类型。请解释你的最终数字应该是什么样子。更好的是,拿起笔和纸,画出来并张贴照片。