【问题标题】:Adding a third line to a twoord plot在二元图中添加第三条线
【发布时间】:2017-06-09 15:24:53
【问题描述】:

我有一个使用plotrix 包生成的twoord 图,并想添加一条表示特定值的水平线。情节已全部设置好,但我需要帮助添加线条。

这里是一些示例代码:

fake <- matrix(c(1, 2, 3, 4, 5, 22, 30, 47, 98, 62, 20, 40, 10, 15, 15), nrow = 5)
fake <- as.data.frame(m)

horizontallineat <- 50

twrd.p <- twoord.plot(fake$V1,fake$V3,fake$V1,fake$V2, xlab="Bin", 
                  lylim=c(0,100),rylim=c(0,100),type=c("bar","l"),
                  ylab="Exposure Percentage",rylab="Bin Average PP",
                  lytickpos=seq(0,100, by = 10),
                  rytickpos=seq(0,100, by = 10),
                  ylab.at=50,rylab.at=50,
                  main="Variable Name",
                  lcol=3,rcol=4)

这是剧情

提前感谢您提供的任何见解。

【问题讨论】:

  • @d.b 你想要h=50 吗?
  • 不幸的是它不像abline那么简单...我已经尝试了我能想到的所有东西。文档说:“请注意,可以使用‘点’或‘线’将更多值添加到绘图中,但请记住,这些值将相对于左侧纵坐标进行绘制。”但我对线条没有任何运气。

标签: r plot plotrix


【解决方案1】:

我不确定这是否是您想要的,但您可以简单地使用 R-base lines 函数添加行。使用这样的代码

library(plotrix) # added library

## your code
fake <- matrix(c(1, 2, 3, 4, 5, 22, 30, 47, 98, 62, 20, 40, 10, 15, 15), nrow = 5)
fake <- as.data.frame(fake)  # changed "m" to "fake"

twrd.p <- twoord.plot(fake$V1,fake$V3,fake$V1,fake$V2, xlab="Bin", 
                      lylim=c(0,100),rylim=c(0,100),type=c("bar","l"),
                      ylab="Exposure Percentage",rylab="Bin Average PP",
                      lytickpos=seq(0,100, by = 10),
                      rytickpos=seq(0,100, by = 10),
                      ylab.at=50,rylab.at=50,
                      main="Variable Name",
                      lcol=3,rcol=4)

## simple lines() function with x an y coordinates
## we'll add 2 lines for fun
## 1. dashed, thicker, and red
## 2. dots, thicker and black
lines(x = c(1, 2, 3, 4), y= c(40, 60, 40, 70), lty = 2, lwd = 2, col = "red")
lines(x = c(1.25 , 4.75), y = c(95, 25), lty = 3, lwd=2, col = "black")

这会产生以下情节

希望现在添加一条短或长的水平线应该很简单了。

请让我知道这是否是您的想法。

【讨论】:

  • 这个解决方案确实有效。谢谢你。唯一需要注意的是它只绘制相对于左轴比例的图,所以我需要交换它们。
  • 很高兴我能帮上忙!不过,我不明白您的评论,因为据我所知,左右轴刻度是相同的。
  • 这是样本数据...我的实际数据在左右轴上的比例不同。 lines() 只会相对于左轴比例绘制,所以我不得不交换轴。
  • 当然,我应该猜到了。我不想乞求或向您施压,但此网站支持投票:请参阅 why voting is important。就像我对您的问题投了赞成票一样,因为我认为它的表述很好并且值得关注,您可以通过“投票赞成”或将其标记为“解决您的问题”来表明答案对您有所帮助。享受 StackOverflow :o)
  • 我试图投票给你,但我担心我的经验水平不允许我。我很抱歉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-13
  • 2016-04-29
  • 2015-03-20
  • 1970-01-01
  • 2019-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多