lattice::latticeParseFormula(x, data = data) 中的错误:模型必须是公式对象
Error in lattice::latticeParseFormula(x, data = data) : model must be a formula object
我尝试使用 rChart 的 rNVD3 包的离散条形图而不是相同的旧 ggplot2。但它需要一些公式参数作为第一个参数。我没有用过 lattice 包,我不知道如何创建一个。
这是我的数据框:
df <- data.frame(
Pupil = factor(c("Richy","Shyam","Nithin"), levels=c("Richy","Shyam","Nithin")),
Scores = c(75,93,62)
)
我用来渲染情节的代码:
require(rNVD3)
bar1 <- nvd3Plot(x = "Pupil", y = "Scores", data = df, type = "discreteBarChart", width = 600)
bar1$printChart("chart1")
错误是这样的:
Error in lattice::latticeParseFormula(x, data = data) :
model must be a formula object
当我尝试纠正错误时:
bar1<-nvd3Plot(Scores ~ Pupil, data = df, type = "discreteBarChart", width = 600)
bar1$printChart("chart1")
它只显示了 .js 代码,但没有显示条形图。
<div id='chart1' class='nvd3Plot'></div>
<script type='text/javascript'>
drawchart1()
function drawchart1(){
var opts = {"id":"chart1","yAxis":[],"x":"Pupil","y":"Scores","type":"discreteBarChart","width":600,"height":400},
data = [{"Pupil":"Richy","Scores":75},{"Pupil":"Shyam","Scores":93},{"Pupil":"Nithin","Scores":62}]
var data = d3.nest()
.key(function(d){
return opts.group === undefined ? 'main' : d[opts.group]
})
.entries(data)
nv.addGraph(function() {
var chart = nv.models[opts.type]()
.x(function(d) { return d[opts.x] })
.y(function(d) { return d[opts.y] })
.width(opts.width)
.height(opts.height)
d3.select("#" + opts.id)
.append('svg')
.datum(data)
.transition().duration(500)
.call(chart);
nv.utils.windowResize(chart.update);
return chart;
});
};
</script>
rCharts
由于使用 reference classes. You are very close. First install rCharts
. Then, instead of nvd3Plot
, use nPlot
as shown below. Also, you might be interested in htmlwidgets
.
有时会有点混乱
library(rCharts)
df <- data.frame(
Pupil = factor(c("Richy","Shyam","Nithin"), levels=c("Richy","Shyam","Nithin")),
Scores = c(75,93,62)
)
# without formula interface
nPlot(
x = "Pupil", y = "Scores", data = df,
type = "discreteBarChart", width = 600
)
# with formula interface
nPlot(Scores~Pupil, data = df, type = "discreteBarChart", width = 600)
我尝试使用 rChart 的 rNVD3 包的离散条形图而不是相同的旧 ggplot2。但它需要一些公式参数作为第一个参数。我没有用过 lattice 包,我不知道如何创建一个。
这是我的数据框:
df <- data.frame(
Pupil = factor(c("Richy","Shyam","Nithin"), levels=c("Richy","Shyam","Nithin")),
Scores = c(75,93,62)
)
我用来渲染情节的代码:
require(rNVD3)
bar1 <- nvd3Plot(x = "Pupil", y = "Scores", data = df, type = "discreteBarChart", width = 600)
bar1$printChart("chart1")
错误是这样的:
Error in lattice::latticeParseFormula(x, data = data) : model must be a formula object
当我尝试纠正错误时:
bar1<-nvd3Plot(Scores ~ Pupil, data = df, type = "discreteBarChart", width = 600)
bar1$printChart("chart1")
它只显示了 .js 代码,但没有显示条形图。
<div id='chart1' class='nvd3Plot'></div>
<script type='text/javascript'>
drawchart1()
function drawchart1(){
var opts = {"id":"chart1","yAxis":[],"x":"Pupil","y":"Scores","type":"discreteBarChart","width":600,"height":400},
data = [{"Pupil":"Richy","Scores":75},{"Pupil":"Shyam","Scores":93},{"Pupil":"Nithin","Scores":62}]
var data = d3.nest()
.key(function(d){
return opts.group === undefined ? 'main' : d[opts.group]
})
.entries(data)
nv.addGraph(function() {
var chart = nv.models[opts.type]()
.x(function(d) { return d[opts.x] })
.y(function(d) { return d[opts.y] })
.width(opts.width)
.height(opts.height)
d3.select("#" + opts.id)
.append('svg')
.datum(data)
.transition().duration(500)
.call(chart);
nv.utils.windowResize(chart.update);
return chart;
});
};
</script>
rCharts
由于使用 reference classes. You are very close. First install rCharts
. Then, instead of nvd3Plot
, use nPlot
as shown below. Also, you might be interested in htmlwidgets
.
library(rCharts)
df <- data.frame(
Pupil = factor(c("Richy","Shyam","Nithin"), levels=c("Richy","Shyam","Nithin")),
Scores = c(75,93,62)
)
# without formula interface
nPlot(
x = "Pupil", y = "Scores", data = df,
type = "discreteBarChart", width = 600
)
# with formula interface
nPlot(Scores~Pupil, data = df, type = "discreteBarChart", width = 600)