我是D3的新手并且正在玩散点图.我无法让d3.max(数据)在设置域时正常工作!
我有以下设置随机数据集:
var data = [];
for (i=0; i < 40; i++){
data.push({"x": i/40, "y": i/8, "a": Math.floor(Math.random() * 3), "x2": Math.random()});
}
Run Code Online (Sandbox Code Playgroud)
然后以下设置我的坐标:
var x = d3.scale.linear().domain([0, 1]).range([0 + margin, w-margin]),
y = d3.scale.linear().domain([0, d3.max(data)]).range([0 + margin, h-margin]),
c = d3.scale.linear().domain([0, 3]).range(["hsl(100,50%,50%)", "rgb(350, 50%, 50%)"]).interpolate(d3.interpolateHsl);
Run Code Online (Sandbox Code Playgroud)
这将所有40个点放在一条水平线上.如果我用'5'替换d3.max(数据)那么它是一个对角线(尽管从左上角到右下角,我仍然在努力翻转y坐标).为什么d3.max(数据)没有按预期工作?
我在D3.js中设置了如下的序数比例,到目前为止效果很好:
var color = d3.scale.ordinal().range([ 'blue', 'red', 'green' ]);
color.domain();
console.log(color(0)); // returns 'blue'
Run Code Online (Sandbox Code Playgroud)
但是,我真正想做的是能够将两个数字传递到刻度中,并让它返回蓝色,红色或绿色的特定子阴影 - 主要阴影取决于第一个数字,子阴影取决于第二个数字.
也许我可以用某种方式将d3.scale.ordinal()和d3.interpolateRgb()结合起来做到这一点?我不确定interpolateRgb是否是正确的选择,因为颜色是一致的,取决于输入数字.
所以这就是我想要实现的目标:
color(0, 256); // return a shade of blue
color(0, 257); // return a second shade of blue
color(0, 256); // return the first shade of blue again
Run Code Online (Sandbox Code Playgroud)
在D3中实现这一目标的任何想法?谢谢您的帮助.
我发现*v8 :: String :: Utf8Value(args [0] - > ToString())在节点0.8.2 32位上返回正确的字符串,并且不在节点0.8.8上返回正确的字符串64-位.
有谁知道为什么?
我的node.js插件看起来像这样:
#define BUILDING_NODE_EXTENSION
#include <node.h>
#define MAX_OUTPUT_BUF 80
extern "C" char *do_sqlsig(char *in);
using namespace v8;
Handle<Value> Sqlsig(const Arguments& args) {
HandleScope scope;
char *c_arg, *ret;
if (args.Length() < 1) {
ThrowException(Exception::TypeError(String::New("Wrong number of arguments")));
return scope.Close(Undefined());
}
c_arg = *v8::String::Utf8Value(args[0]->ToString());
ret = c_arg; //do_sqlsig(c_arg);
return scope.Close(String::New(ret));
}
void Init(Handle<Object> exports) {
exports->Set(String::NewSymbol("sqlsig"),
FunctionTemplate::New(Sqlsig)->GetFunction());
}
NODE_MODULE(sqlsig, Init)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我正在为C函数do_sqlsig编写一个包装器.我非常了解C并且对C++知之甚少
我试图在空字段中设置一个默认值,以便将文档保存在MongoDB中
在我的例子中,这是mongoose模式
var Distribution = new Schema({
temporalCoverage: {
startDate: {type: Date, default: Date.now},
endDate: {type: Date, default: Date.now}
},
distributionText: String
});
Run Code Online (Sandbox Code Playgroud)
这是要保存的文件:
"distribution": {
"temporalCoverage": {
"endDate": "",
"startDate": ""
},
"distributionText": "test"
}
Run Code Online (Sandbox Code Playgroud)
在本文档中,空字段为endDate和startDate.该文档以空值保存在mongoDB中.
"distribution": {
"temporalCoverage": {
"endDate": null,
"startDate": null
},
"distributionText": "test"
}
Run Code Online (Sandbox Code Playgroud)
我想保存默认值,而不是null
如果在模式中放置所需的字段,temporalCoverage : { startDate : { type: Date, required: true, default: Date.now }, endDate : { type: Date, required: true, default: Date.now } }我会得到错误验证,并且文档没有保存.
有效的 Cache-Control 指令是min-fresh=<seconds>,这意味着“客户端希望响应至少在指定的秒数内仍然是新鲜的”(ref)。
我无法在网上想到或找到用例或实际实现。似乎需要服务器进行时间旅行或锁定资源以防止<seconds>. 有没有人有示例用例或实现?
I get the error
TypeError: Cannot read property ‘name’ of undefined”
if I go to deep in the object.
Timeline.vue
<template>
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="card card-default">
<div class="card-header">Timeline</div>
<div class="card-body">
<post v-for="post in posts" :key="post.id"></post>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import Post from './Post.vue'
export default {
data () {
return {
posts: []
}
},
components: {
Post
},
mounted() {
this.$http.get('/posts').then((response) => {
console.log(response.body)
this.posts =response.body
})
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
post.vue …
我正在使用https://www.npmjs.com/package/memory-usage通过在 MACOS 终端中运行“memory-usage app.js”来查看我的 Node 应用程序如何使用内存。然而,经过一些测试,它总是在 1.4GB 时崩溃。
在普通的nodejs命令中,要将内存限制设置得更高,我可以使用“node --max-old-space-size=8192 app.js”。但是,运行“memory-usage --max-old-space-size=8192 app.js”将不起作用。
我的 Mac 有以下 RAM 详细信息:
组 0/DIMM0:
大小:4 GB 类型:DDR3 速度:1867 MHz
组 1/DIMM0:
大小:4 GB 类型:DDR3 速度:1867 MHz
我的 Nodejs 应用程序可以使用的最大大小是多少?如何通过内存使用来设置它?
谢谢。
我的数据看起来像这样......
var data = [{name:'a', value : 97},
{name:'b', value : 24},
{name:'c', value : 10}];
Run Code Online (Sandbox Code Playgroud)
我有一个像这样创建的序数量表......
var y = d3.scale.ordinal().rangeBands([0, 30 * data.length]);
Run Code Online (Sandbox Code Playgroud)
我用它来创建这样的基本图...
chart.selectAll("rect")
.data(data)
.enter().append("svg:rect")
.attr("y", function(d,i){ return y(d.name);})
.attr("width", function(d,i){ return x(d.value);})
.attr("height", y.rangeBand());
Run Code Online (Sandbox Code Playgroud)
根据d3文档(此处),您无需为序数规范指定域,并且在尝试使用它时将填充它.在我的情况下,但是y(d.name)总是返回0并且y.rangeBand()引发异常,即使我看到域数组已经填充在scale对象中.
所以,我通过预先定义我的域来解决这个问题...
.domain(data.map(function (d){ return d.name;}))
Run Code Online (Sandbox Code Playgroud)
但我希望能够动态添加到此域,如果我这样做,它不会超出创建时设置的原始值.这甚至可能吗?
我对d3很新,所以我可能会遗漏一些重要的东西.
我正在尝试使用nan来计算附加组件中浮点数组上的某些内容,然后将其作为Float32Array.
但是,虽然 args 具有IsNumber()和NumberValue()功能,但它只有一个IsFloat32Array()功能而没有Float32Array()。
NAN_METHOD(Calc) {
NanScope();
if (args.Length() < 2) {
NanThrowTypeError("Wrong number of arguments");
NanReturnUndefined();
}
if (!args[0]->IsNumber() || !args[1]->IsFloat32Array()) {
NanThrowTypeError("Wrong arguments");
NanReturnUndefined();
}
/* a vector of floats ? */ args[0]-> ???;
double arg1 = args[1]->NumberValue();
// some calculation on the vector
NanReturnValue(/* Return as a Float32Array array */);
}
Run Code Online (Sandbox Code Playgroud) 我希望我的应用程序能够使用客户 Azure AD 中的外部用户池,而不必在我的应用程序中手动创建每个用户(当他们已在 Azure AD 中拥有这些用户时)。
最初,我认为仅使用 OIDC,因为我可以在第一次登录时在我的应用程序中创建用户。但是,当用户在 Azure AD 中被删除时,OIDC 不允许我在应用程序中注销并停用用户。这是我的申请的一个重要要求。
为了解决这个问题,我想我可以结合 OIDC 和 SCIM:
SCIM 和 OIDC 一起使用有意义吗?