我尝试使用R
库复制以下使用ggplot2
' rCharts/d3
获得的图表(数据框df定义得更低) :
ggplot(data = df, aes(x = Year, y = value,
group = interaction(variable,Category),
colour = variable, shape = variable)) + geom_line()
我无法通过变量的交互进行分组,就像ggplot
示例一样:
nPlot(data = df, value ~ Year,
group = 'variable',
type = 'lineChart')
不幸的是,这两个系列的最后和第一点是相连的(在1870年到2010年之间),当然这是不可取的。用group = 'variable'
之类的内容替换group = interaction(df$variable, df$Category)
并没有给出任何有用的信息。
如何不连接两个系列中的点?
这里有一个相关的 SO 问题Drawing non-continuous lines with d3,看起来是一个非常有前途的答案。但是来自rCharts
并且不熟悉d3
我无法根据我的情况调整那里提出的解决方案。
我尝试调整{em> SO 答案所基于的http://bl.ocks.org/mbostock/3035090此处的代码,但我对d3
和{{不够熟悉1}}让它工作。我尝试做的是添加rCharts
数据点而不显示NaN
,这是我在上面的示例中所理解的。我没有成功,但无论如何这是我的尝试:
NaN
我尝试过其他变种但没有成功。我也尝试直接编辑html,但也失败了。
以下是复制图表的数据框:
df2 <- subset(df, Year %in% 1870)
df2$Year <- 1869 # add non-numeric entry at 1869
# break the interpolation between 1870 and 2010?
df2$value <- NaN
df <- rbind(df, df2)
n <- nPlot(data = df, value ~ Year, group = 'variable', type = 'lineChart')
n$setTemplate(afterScript =
'<style> # code snippet copied from Mike Bostock's example
var line = d3.svg.line()
.defined(function(d) { return !isNaN(d.dataValue); })
</style>')
n
答案 0 :(得分:2)
使用交互在数据框中创建一个新列,然后在nPlot中对该列进行分组,而不是在nPlot中进行交互,似乎可以解决这个问题:
df$interaction=interaction(df$variable,df$Category)
nPlot(data = df, value ~ Year,
group = 'interaction',
type = 'lineChart')
您可能需要更改图例