使用NVD3在R&r; rCharts中绘制对数刻度

时间:2014-02-18 14:23:54

标签: r nvd3.js rcharts

我正在使用rCharts在R中创建交互式散点图。以下代码工作得很好:

library(rCharts)
test.df <- data.frame(x=sample(1:100,size=30,replace=T),
                      y=sample(10:1000,size=30,replace=T), 
                      g=rep(c('a','b'),each=15))
n1 <- nPlot(y ~ x, group="g", data=test.df, type='scatterChart')
n1

我需要的是对X轴和Y轴使用对数刻度。如何在不破解生成的html / javascript的情况下在rCharts中指定这个?

更新1: 我试图用rCharts绘制一个更逼真和静态的情节版本:

set.seed(2935)
y_nbinom <- c(rnbinom(n=20, size=10, mu=90), rnbinom(n=20, size=20, mu=1282), rnbinom(n=20, size=30, mu=12575))
x_nbinom <- c(rnbinom(n=20, size=30, mu=100), rnbinom(n=20, size=40, mu=1000), rnbinom(n=20, size=50, mu=10000))
x_fixed <- c(rep(100,20), rep(1000,20), rep(10000,20))
realp <- rep(0:2, each=2) * 20 + sample(1:20, size=6, replace=F)
tdf <- data.frame(y = c(y_nbinom,y_nbinom,y_nbinom[realp]), x=c(x_fixed,x_nbinom,x_nbinom[realp]), type=c(rep(c('fixed','nbinom'),each=60), rep('real',6)))
with(tdf, plot(x, y, col=type, pch=19, log='xy'))

1 个答案:

答案 0 :(得分:2)

我认为这个问题有点陈旧,但我遇到了类似的问题并使用此帖子中的信息解决了这个问题: rCharts nvd3 library force ticks

这里是我对基数10对数刻度堆积面积图的解决方案,它对于散点图不应该太不相同。

df<-data.frame(x=rep(10^seq(0,5,length.out=24),each=4),
           y=round(runif(4*24,1,50)),
           var=rep(LETTERS[1:4], 4))
df$x<-log(df$x,10)

p <- nPlot(y ~ x, group = 'var', data = df,
         type = 'stackedAreaChart', id = 'chart')

p$xAxis(tickFormat = "#!function (x) {    
tickformat = [1,10,100,1000,10000,'100k'];
return tickformat[x];}!#")

p