如果用更大的数字输入,R金字塔图很慢

时间:2011-07-14 14:01:25

标签: performance r plot

我正在尝试用R创建一个金字塔图。我在互联网上找到了一个代码,它可以满足我的需求。问题是我没有像示例中那样处理小数字。我的情节值为3,000,000到12,000,000,但每边只有10巴。永远不会用更大的数字创建绘图,输出pdf文件的大小约为800mb。

pyramid.plot(x,y,labels=groups,main="Performance",lxcol=mcol,rxcol=fcol,gap=0.5,show.values=TRUE)

为什么表现如此糟糕?不应该自动缩放?

更新

pdf(file='figure1.pdf')
library(plotrix)

x <-c(3105000,3400001,4168780,2842764,3543116,4224601,4222222,6432105,9222222,12345596)
y <-c(3105000,3400001,4168780,2842764,3543116,4224601,4222222,6432105,9222222,12345596)
groups <-c("g1","g2","g3","g4","g5","g6","g7","g8","g9","g11") 
pyramid.plot(x,y,labels=groups,main="Performance",gap=0.5,show.values=TRUE)
dev.off()

导出到pdf以及绘图屏幕都需要几分钟。

1 个答案:

答案 0 :(得分:2)

在内部,pyramid.plot正在尝试做一些事情来解决轴中间的差距:如果你做debug(pyramid.plot)并逐行逐步找到问题所在:

if (is.null(laxlab)) {
            laxlab <- seq(xlim[1] - gap, 0, by = -1)
            axis(1, at = -xlim[1]:-gap, labels = laxlab)
        }
换句话说,pyramid.plot试图使每1(!)单位的刻度线成为一个轴。 这样的东西可以正常工作:

pyramid.plot(x,y,labels=groups,
             main="Performance",gap=5e5,show.values=TRUE,
             laxlab=seq(0,1e7,by=1e6),raxlab=seq(0,1e7,by=1e6))

还有一些其他遗迹,pyramid.plot是为人口统计图设计的......你可以写信给包维护者并让他考虑一下轴的设计概括。