【问题标题】:How to give different colors to parts of the main of a plot如何为情节的主要部分赋予不同的颜色
【发布时间】:2014-01-03 15:46:01
【问题描述】:

我只是表示平均总成本、平均可变成本、平均固定成本和边际成本的曲线。

plot(Q,ATCosts,ylab=NA,ylim=c(0,62),type="l")
par(new=T)
plot(Q,AVCosts,ylab=NA,ylim=c(0,62),type="l",col="blue")
par(new=T)
plot(Q,AFCosts,ylab=NA,ylim=c(0,62),type="l",col="red")
par(new=T)
plot(Q,MCosts,ylab=NA,ylim=c(0,62),type="l",col="green")

主要是:

title(main="ATC,AVC,AFC,MC")

我想知道的是,是否有一种方法可以在情节中为每个主要部分(包含某种类型的成本)赋予与该成本相关的颜色,以避免使用图例。因此,ATC 必须用黑色书写; AVC 必须用蓝色写...等等。

我尝试通过以下方式重叠另一个标题:

title(main="   ,AVC,   ,  ",col.main="blue")

但结果并不理想。

【问题讨论】:

  • 首先,尝试使用 lines 而不是 par(new=T);plot() 。我不相信main 允许多种颜色,但您始终可以明智地使用text 在“标题区域”中放置多个不同颜色的字符串

标签: r colors main


【解决方案1】:

不是一个通用的解决方案,因为您必须使用 adj 来获得正确的间距,但它可以:

plot(1)
mtext("ATC, ",col='black',line=2,adj=0.4)
mtext("AVC, ",col='blue',line=2,adj=0.45)
mtext("AFC, ",col='red',line=2,adj=0.5)
mtext("MC",col='green',line=2,adj=0.54)

【讨论】:

  • 我可以建议更通用的解决方案:nn <- colnames(dat)-1]; Map(function(x,y,z)mtext(text=x,col=y,adj=z,line=2), nn,rainbow(length(nn)),seq(0.4,by=0.05,length.out=length(nn)))
  • @agstudy 不错。我认为更重要的改进是计算字符串宽度并使用精确的调整来使字符串的间距总体上正确。
【解决方案2】:

如果不想使用图例,可以使用directLables 包。但是你应该使用移动到一些高级绘图包(lattice/ggplot2)

set.seed(10)
dat = data.frame(Q= factor(paste0('Q',1:12)),
AT = runif(12,1,100),
                 AV = runif(12,1,100),
                 AF = runif(12,1,100),
                 MC = runif(12,1,100))


library(lattice)
library(directlabels)

p <- xyplot(AT+AV+AF+MC~Q,data=dat,type='l')

direct.label(p,"first.qp")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 2013-05-22
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多