可以在R中绘制Excel样式的图吗?

时间:2018-03-15 17:03:48

标签: r excel graph

enter image description here

我和别人一起写了一个项目。他们在Excel中做了一些分析,并绘制了如上图所示的图表。我在R中编写我的东西,虽然没有必要,但如果这些情节有类似的风格,我们会喜欢它。

虽然我可以将我的数据导出到Excel,但它让我想到:是否可以在R中创建一个绘图但是上面的图形?这样做的直接包装,还是手动操作的复杂方法?

除了通常的情节函数和ggplot之外,我没有其他情节创作经验。

1 个答案:

答案 0 :(得分:0)

我的第一个想法是fortune(197)

  

如果有的话,应该有一条法律:你甚至不会想到   从电子表格中生成看起来像任何东西的图表。 -   Ted Harding(关于制作图形的讨论)         R-help(2007年8月)

但是你的示例图形比我通常期望的Excel更好,并且对于匹配样式有一些东西可以说。 plotrix包有一些绘图功能,其目的是向电子表格用户显示R可以做同样的事情,然后努力转换它们以做更好的事情。我不认为plotrix(或其他软件包)有一个适合您特定情节的工具,所以这里有一些示例代码(仅使用主软件包中的函数,不需要额外的代码):

mydata <- data.frame( 
  x1=sort(runif(20,0,2000)),
  y1=sort(runif(20,0,410)),
  x2=sort(runif(20,0,2750)),
  y2=sort(runif(20,0,410)))

par(las=1, xaxs='i',
    yaxs='i')
plot.new()
plot.window(xlim=c(0,3000), 
            ylim=c(0,450))

axis(1, at=seq(0,3000, by=100),
     label=FALSE, tck=1, 
     col.ticks='lightgrey')
axis(2, at=seq(0,450, by=10),
     label=FALSE, tck=1,
     col.ticks='lightgrey')
axis(1, at=seq(0,3000, by=500),
     tck=1, col.ticks='darkgrey')
axis(2, at=seq(0,450, by=50),
     tck=1, col.ticks='darkgrey')
box()

lines( range(mydata$x1,mydata$x2),
         rep(max(mydata$y1),2),
       col='green')
lines( range(mydata$x2, mydata$x1),
         rep(max(mydata$y2),2),
       col='green')

with(mydata, {
  lines(x1,y1, lwd=5, col='blue')
  lines(x1,y1, lwd=3, col='white')
  lines(x2,y2, lwd=5, col='orange')
  lines(x2,y2, lwd=3, col='white')
  points(x1,y1, pch=1, cex=3, col='blue', lwd=2)
  points(x1,y1, pch=1, cex=1.75, col='blue', lwd=2)
  points(x2,y2, pch=1, cex=3, col='orange', lwd=2)
  points(x2,y2, pch=1, cex=1.75, col='orange', lwd=2)
})

您可以一次运行这一个命令来查看每个部分的功能,并且每个部分都可以进行自定义以更好地满足您的需求。如果你打算制作多个类似的情节,这可以包装成一个函数。有些软件包也可以帮助或扩展它。