- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想用两条线来创建 DC.js 图表,每条线代表日期的平均值。
我相信这样做的方法是使用 DC.js compositeChart
并创建两个 lineCharts 放入其中,然后使用 reducio()
group.reduce(add, remove, initial)
获取平均数量。
我的问题是条件逻辑去哪里了?我如何/在哪里有条件地使用它:
var group = dimension.group().reduce(reduceAdd, reduceRemove, reduceInitial);
要计算带有d.PPCC === "PPCC"
的记录的平均值和带有d.PPCC === "Other"
的记录的另一个平均值?
我尝试了两种方法,但都不适合我。
这是第一次尝试:
var bounce30DaysPPCC = function(d) { if (d.PPCC === "PPCC")
{ dateDim.group().reduce(reduceAdd, reduceRemove, reduceInitial);
} else { dateDim.group().reduce(0); } };
var bounce30DaysOther = function(d) { if (d.PPCC === "Other")
{ dateDim.group().reduce(reduceAdd, reduceRemove, reduceInitial);
} else { dateDim.group().reduce(0); } };
产生这个错误:
dc.js:4017 Uncaught TypeError: layer.group.all is not a function
这是第二次尝试:
var bounce30DaysPPCC = dateDim.group().reduce( function(d) { if (d.PPCC === "PPCC")
{ return reduceAdd, reduceRemove, reduceInitial; } else { return 0; }});
var bounce30DaysOther = dateDim.group().reduceSum( function(d) { if (d.PPCC === "Other")
{ return reduceAdd, reduceRemove, reduceInitial; } else { return 0; } });
这也会产生错误:
Uncaught TypeError: reduceInitial is not a function
这是我的完整 javascript 代码。
<script type="text/javascript">
// get csv data
d3.csv("merged.csv", function(data) {
// get csv data and format date
var parseDate = d3.time.format("%Y-%m-%d").parse;
data.forEach(function(d) {
d.date = parseDate(d.date);
d.sessions = +d.sessions;
d.ad_requests = +d.ad_requests;
d.bounceRate = +d.bounceRate;
d.clicks = +d.clicks;
d.earnings = +d.earnings;
d.newUsers = +d.newUsers;
d.sessionDuration = +d.sessionDuration;
d.sessionsPerUser = +d.sessionsPerUser;
d.twitterSessions = +d.twitterSessions;
d.users = +d.users;
});
// setup crossfilter
var ndx = crossfilter(data);
// create dimension
var dateDim = ndx.dimension(function(d) { return d["date"]; });
// create data groups
var bounce30DaysPPCC = function(d) { if (d.PPCC === "PPCC")
{ dateDim.group().reduce(reduceAdd, reduceRemove, reduceInitial);
} else { dateDim.group().reduce(0); } };
var bounce30DaysOther = function(d) { if (d.PPCC === "Other")
{ dateDim.group().reduce(reduceAdd, reduceRemove, reduceInitial);
} else { dateDim.group().reduce(0); } };
// create min and max dates to limit chart x axis values
var minDateTime = new Date(new Date().setDate(new Date().getDate()-30));
var maxDateTime = new Date(new Date().setDate(new Date().getDate()+1));
// create chart
BounceChart30Day = dc.compositeChart("#bounce-chart-30day");
// create two line charts to put into composite chart
var ppccLine = dc.lineChart(BounceChart30Day)
.group(bounce30DaysPPCC)
var otherLine = dc.lineChart(BounceChart30Day)
.group(bounce30DaysOther)
// create composite chart
BounceChart30Day
.height(50)
.width(450)
.margins({top: 10, right: 10, bottom: 5, left: 35})
.dimension(dateDim)
.transitionDuration(500)
.brushOn(false)
.elasticY(true)
.compose([ppccLine, otherLine])
.x(d3.time.scale().domain([minDateTime, maxDateTime]))
.yAxis().ticks(3);
// create value accessor to calculate averages
BounceChart30Day.valueAccessor(function(p) {
return p.value.count > 0 ? p.value.total / p.value.count : 0; });
// create add, remove, initial reduce functions
function reduceAdd(p, v) {
++p.count;
p.total += v.bounceRate;
return p;
}
function reduceRemove(p, v) {
--p.count;
p.total -= v.bounceRate;
return p;
}
function reduceInitial() {
return {count: 0, total: 0};
}
// render chart
dc.renderAll();
</script>
最佳答案
您需要在 reduce 函数中评估数据。所以让你的 reduce 函数看起来像这样:
// create add, remove, initial reduce functions
function reduceAdd(p, v) {
if (v.PPCC === "PPCC") {
++p.PPCCcount;
p.PPCCtotal += v.bounceRate;
} else if(v.PPCC === "Other") {
++p.Othercount;
p.Othertotal += v.bounceRate;
}
return p;
}
function reduceRemove(p, v) {
if (v.PPCC === "PPCC") {
--p.PPCCcount;
p.PPCCtotal -= v.bounceRate;
} else if(v.PPCC === "Other") {
--p.Othercount;
p.Othertotal -= v.bounceRate;
}
return p;
}
function reduceInitial() {
return { PPCCcount: 0, PPCCtotal: 0, Othercount: 0, Othertotal: 0};
}
然后像往常一样创建您的组:
var bounce30DaysPPCC = dateDim.group().reduce(reduceAdd, reduceRemove, reduceInitial);
var bounce30DaysOther = dateDim.group().reduceSum(reduceAdd, reduceRemove, reduceInitial);
乍一看,其他一切看起来都还不错。您只需更新 valueAccessor
函数即可获取组中的新属性名称。
关于javascript - DC.js compositeChart 与两个 lineChart 都代表日期的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39300364/
我正在尝试在我的 UITableView 上调用 reloadData。我在没有界面生成器的情况下制作我的应用程序。 此代码适用于 Interface Builder,但似乎没有。 当我将我的代码与我
有人可以解释 UIAlertView 的委托(delegate)是如何工作的吗?它是自动调用还是我必须调用它?例如: - (void)alertView:(UIAlertView *)alertVie
编辑:好吧,根据其他人的建议,我创建了一个最小的示例......并且它有效,因此我将在未来与任何人分享它。这是工作代码: #include #include using namespace std
unicode 是 ,它被用在 XML 文档中。 最佳答案 查看图表:unicodelookup.com 换行符。 关于html - unicode字符是什么 代表?,我们在Stack Overflo
我有一个应用程序,可以以编程方式在配置的 Facebook 页面上发帖。我的应用程序显然已批准管理页面和发布页面权限,并且我正在使用页面访问 token 从现在开始一切正常,但最近当我在页面提要上发布
代表 NCAA 男子篮球分组的最佳数据库模式是什么?如果您不熟悉,请点击以下链接:http://www.cbssports.com/collegebasketball/mayhem/brackets/
所以我一直在阅读这个关于如何使用 Frida 的教程:https://www.frida.re/docs/functions/我遇到过以下情况: $ ./client 127.0.0.1 connec
委托(delegate)函数返回之前是否需要调用replyHandler?我需要进行几次 Web 服务 API 调用才能回复,以下实现正确吗? func session(_ session: WCSe
下面提到的是我的 textField 委托(delegate)方法,我正在使用 IQKeyBoardSwift 作为智能键盘。我尝试移除我的键盘,但我仍然没有收到任何关于接受“开始触摸”的方法的调用
我有一个表格 View ,其中几乎没有用于数据输入的文本字段和弹出窗口。我想将其中一些表示为强制性的。我不知道如何讨厌星号。任何帮助将不胜感激。 最佳答案 我认为你可以使用自定义 UITableVie
例如,我知道如何使用 numpy 对数组进行切片 v[1, :, :] 现在我想要一个函数将切片 (1,1,None) 作为输入并返回 v[1,:,:] 问题是我不知道如何表示省略号 最佳答案 您可以
修订... 应用程序的关键是与数据库服务器通信。服务器对应用程序的响应都是 XML 格式的。有几个屏幕。例如,屏幕 1 列出了用户的信息,屏幕 2 列出了用户过去的交易,允许新交易,等等。 这是我的
我想知道映射/表示内存的最佳方式是什么。我的意思是,例如,如何描述一个结构及其所有字段都被序列化。 我正在创建一个 RPC 库,它将使用 dwarf 调试数据创建客户端和服务器,因此我需要创建一个函数
如果我有一个实现了两个协议(protocol)的 View Controller : @interface CustomerOperationsViewController : UIViewContr
在 Objective-C 中我可以做这样的事情: @property (nonatomic, weak) id someObject; 如何在swift中做到这一点?我试过这个: let someO
我成功地使用了相当棒的 connection:didReceiveAuthenticationChallenge: NSURLConnectionDelegate 委托(delegate)方法。很酷。
我正在寻找原始数据类型的 @NonNull 等效 Java 注释。我知道原始数据不能为 null,但我找不到替代方法。 我想要实现的在逻辑上等同于: int mPageNumber; public v
我正在学习 Git,如果我能描述代表 Git 存储库的数学结构,那就太好了。例如:它是一个有向无环图;它的节点代表提交;它的节点有代表分支等的标签(每个节点最多一个标签,没有标签使用两次)。(我知道这
我看过很多与委托(delegate)相关的帖子,我想知道引用它们的正确方法。假设我有一个声明如下的对象: @interface MyViewController : UITableViewContro
我有这个类: public class Order { int OrderId {get; set;} string CustomerName {get; set;} } 我也声明下面的变
我是一名优秀的程序员,十分优秀!