我和别人一起写了一个项目。他们在Excel中做了一些分析,并绘制了如上图所示的图表。我在R中编写我的东西,虽然没有必要,但如果这些情节有类似的风格,我们会喜欢它。
虽然我可以将我的数据导出到Excel,但它让我想到:是否可以在R中创建一个绘图但是上面的图形?这样做的直接包装,还是手动操作的复杂方法?
除了通常的情节函数和ggplot之外,我没有其他情节创作经验。
答案 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)
})
您可以一次运行这一个命令来查看每个部分的功能,并且每个部分都可以进行自定义以更好地满足您的需求。如果你打算制作多个类似的情节,这可以包装成一个函数。有些软件包也可以帮助或扩展它。