5
我想迫使所有的刻度線和刻度線標籤出現在nvd3
庫的rCharts
nPlot中沿軸出現。我嘗試了幾種方法,但都沒有成功。rCharts nvd3庫力刻度
這是默認的行爲:
df <- data.frame(x = 1:13, y = rnorm(13))
library(rCharts)
n <- nPlot(data = df, y ~ x, type = 'lineChart')
n$yAxis(showMaxMin = FALSE)
我想在1:13
顯示沿x軸的所有數據。
最終,我有自定義刻度線我想告訴等距有以下替換:
n$xAxis(tickFormat = "#! function (x) {
ticklabels = ['0-1000', '1000-1500', '1500-1700', '1700-1820', '1820-1913',
'1913-1950', '1950-1970', '1970-1990', '1990-2012', '2012-2030',
'2030-2050', '2050-2070', '2070-2100']
return ticklabels[x-1];
} !#")
我希望這是清楚我爲什麼要擁有所有刻度線和標籤打印(和等距)。
爲了讓成品的想法,這裏是一個ggplot2
印象:
library(ggplot2)
df <- data.frame(x = c('0-1000', '1000-1500', '1500-1700', '1700-1820', '1820-1913',
'1913-1950', '1950-1970', '1970-1990', '1990-2012', '2012-2030', '2030-2050',
'2050-2070', '2070-2100'), y = rnorm(13), z = "group1")
ggplot(data = df, aes(x = x, y = y, group = z)) + geom_line()
這裏有幾件事情我已經試過了,基於幾個建議,我發現這裏和那裏:沒有工作。
根據我的文檔的閱讀,我想這會工作:
n$xAxis(tickFormat = "#! function (x) {
return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13][x-1];
} !#")
我也試過這樣,在關閉的機會:
n$xAxis(ticks = 13)
我也試圖結合tickValues
和tickFormat
但沒有成功。
我也想過編寫一個腳本,但我對nvd3
庫的理解還不夠。
n$setTemplate(afterScript =
"<script>
var chart = nv.models.lineChart();
var newAxisScale = d3.scale.linear();
.range(d3.extent(chart.axes[0]._scale.range()))
.domain([1, d3.max(chart.axes[0]._scale.domain())])
chart.axes[0].shapes.call(
d3.svg.axis()
.orient('bottom')
.scale(newAxisScale)
.ticks(13)
//.tickValues()
//.tickFormat(d3.format())
).selectAll('text')
.attr('transform','')
</script>"
)
控制檯中沒有這些報告錯誤,但沒有一個修改上面第一個繪圖的外觀。
這裏有一個相關的問題,但它並沒有答案,有評論並不適用於我的問題(它們適用於沿x軸的日期,但我有一個任意的字符串) 。 http://stackoverflow.com/questions/25120598/strings-as-tick-values-for-rcharts-nvd3-line-chart – PatrickT
這也是類似的問題,我只是注意到現在表明,沒有希望... http ://stackoverflow.com/questions/25481853/rcharts-nvd3-linechart-with-categorical-x-axis – PatrickT