如何在其中一个方面添加一条线?

时间:2016-01-08 21:17:24

标签: r ggplot2

def open_with_pandas_read_csv(filename):
    df = pandas.read_csv(filename, sep=csv_delimiter, header=None)
    data = df.values
    return data

我得到这个数字

enter image description here

现在我想将一个geom_line 添加到其中一个方面。基本上,我想在主要面板中有一条虚线(Say x = 10,000)。我怎么能这样做?

2 个答案:

答案 0 :(得分:15)

我没有你的数据,所以我做了一些:

df <- data.frame(x=rnorm(100),y=rnorm(100),z=rep(letters[1:4],each=25))

ggplot(df,aes(x,y))+geom_point()+theme_bw()+facet_wrap(~z)

enter image description here

要在x = 1处添加垂直线,我们可以将geom_vline()与具有相同分面变量的数据框一起使用(在我的情况下为z='b',但您的levels='major'将是ggplot(df,aes(x,y))+geom_point()+theme_bw()+facet_wrap(~z)+ geom_vline(data=data.frame(xint=1,z="b"),aes(xintercept=xint),linetype="dotted") ):

appendTo

enter image description here

答案 1 :(得分:0)

表达此内容的另一种方式可能更容易概括(以及格式化遗漏的内容):

ggplot(df, aes(x,y)) +
  geom_point() + 
  facet_wrap(~ z) +
  geom_vline(data = subset(df, z == "b"), aes(xintercept = 1))

关键是:首先进行构面,然后通过对原始数据框进行子集来修饰构面,并在可能的情况下将细节放在新的aes中。其他类似想法的例子:

ggplot(df, aes(x,y)) +
  geom_point() + 
  facet_wrap(~ z) +
  geom_vline(data = subset(df, z == "b"), aes(xintercept = 1)) + 
  geom_smooth(data = subset(df, z == "c"), aes(x, y), method = lm, se = FALSE) +
  geom_text(data = subset(df, z == "d"), aes(x = -2, y=0, label = "Foobar"))