R:绘制三个值x轴

时间:2019-03-15 16:14:42

标签: r plot

我有一个数据框,我想绘制如图1所示。

  • 我的数据框有三列。
  • 每条线必须在同一X轴上绘制(X轴三个值,如图1所示)。
  • 它有一条在中间值之间传递的行(在这种情况下,行[1,V2],[2,V2],[3,V2] ... [n,V2]。

    List item

图1。

图1只是一个例子。我知道图中的值是错误的。

1 个答案:

答案 0 :(得分:1)

我回应@divibisan的评论,即如果您只是想快速绘制带有误差线的图表,那么您应该看看ggplot2::geom_errorbar

但是,如果您想对绘图表面的各个方面进行精细控制,但又要花很多笔钱,那么这是一种进行方法:

# example data
randos <- runif(5, 0, 1)
df <- data.frame(
    v1 = randos,
    v2 = randos+1,
    v3 = randos+2
)

# create empty plot
plot(x=1:nrow(df), y=1:nrow(df), pch=NA, # plot some data but don't show it
    ylim=c(0, ceiling(max(df)+2)),       # adjust y axis limit
    xaxt="n", yaxt="n",                  # remove axes
    bty="n",                             # remove box around plot
    xlab="", ylab="", main="")           # label axes and title

# add vertical lines
for(i in 1:nrow(df)) {
    points(x=c(i,i), y=c(df$v1[i], df$v3[i]), type="l")
}

# add horizontal lines
points(x=1:nrow(df), y=df$v2, type="l")

# add points
points(x=1:nrow(df), y=df$v1, pch=15, col="forestgreen")
points(x=1:nrow(df), y=df$v2, pch=19, col="forestgreen")
points(x=1:nrow(df), y=df$v3, pch=8,  col="forestgreen")

# add back axes
axis(side=1, 1:nrow(df))
axis(side=2, 0:(ceiling(max(df))+2))

# an example of how to add text
text(x=1:nrow(df), y=df$v3, labels=format(df$v3,digits=2), pos=3)

example_plot