我正在尝试编写一个click
函数来选择下一个g.slice
节点,添加一个类.sliceActive
并.sliceActive
从原始节点中删除.slice
.但是,只有当你在最后一个g.slice
(有一个类.slice5
)时,你才会将.sliceActive
第g.slice
一个类添加到第一个类.slice0
.
到目前为止,这是我无法正常工作的.我认为问题是我不知道如何查看当前.sliceActive
节点是否也有类.slice5
.
$(".next").click(function(){
var nextSlice;
if(d3.select("g.sliceActive").hasClass("slice5")){
nextSlice= d3.select(".slice0");
}else{
nextSlice= d3.select("g.sliceActive + g");
}
d3.select("g.sliceActive").classed("sliceActive",false);
nextSlice.classed("sliceActive",true);
});
Run Code Online (Sandbox Code Playgroud)
以下是它在Web检查器中的外观:
我想弄清楚如何在ES6中做到这一点......
我有这个对象数组..
const originalData=[
{"investor": "Sue", "value": 5, "investment": "stocks"},
{"investor": "Rob", "value": 15, "investment": "options"},
{"investor": "Sue", "value": 25, "investment": "savings"},
{"investor": "Rob", "value": 15, "investment": "savings"},
{"investor": "Sue", "value": 2, "investment": "stocks"},
{"investor": "Liz", "value": 85, "investment": "options"},
{"investor": "Liz", "value": 16, "investment": "options"}
];
Run Code Online (Sandbox Code Playgroud)
..和这个新的对象数组,我想添加每个人的投资类型(股票,期权,储蓄)的总价值..
const newData = [
{"investor":"Sue", "stocks": 0, "options": 0, "savings": 0},
{"investor":"Rob", "stocks": 0, "options": 0, "savings": 0},
{"investor":"Liz", "stocks": 0, "options": 0, "savings": 0}
];
Run Code Online (Sandbox Code Playgroud)
我循环遍历originalData并在let中保存"当前对象"的每个属性.
for (let obj of originalData) …
Run Code Online (Sandbox Code Playgroud) 我的Y轴(每个国家)的数据有数百万的数字:{日期:"1960",德国:"72542990",西班牙:"30327000",法国:"46621166",意大利:"50025500"}
如何编写.tickFormat(d3.format("")); 在我的Y轴变量上格式化刻度值,使它们在Y轴刻度中显示如下:0,2,000万,4千万,6千万,8千万
目前它们显示为0,2000,000,4000000,6000000,80000000
谢谢.
这是我的应用程序的文件,它使用 babel 将 ES6 编译main.js
为 ES5main.bundle.js
这是我的babel.rc
文件(隐藏):
{
"presets": ["@babel/preset-env"]
}
Run Code Online (Sandbox Code Playgroud)
这是我的package.json
所有节点模块(devDependencies)的文件:
{
"name": "es6-tutorial",
"version": "1.0.0",
"description": "ES6 tutorial",
"main": "index.js",
"scripts": {
"babel": "babel js/main.js -o build/main.bundle.js",
"start": "http-server",
"watch": "babel js/main.js -o build/main.bundle.js --watch"
},
"author": "me",
"license": "ISC",
"devDependencies": {
"@babel/preset-env": "^7.2.0",
"babel-cli": "^6.26.0",
"babel-core": "^6.26.3",
"babel-preset-es2015": "^6.24.1",
"http-server": "^0.11.1"
}
}
Run Code Online (Sandbox Code Playgroud)
现在要开始从 ES6 到 ES5 的编译,我导航 ( cd
) 到此目录的根目录并设置监视以自动编译 ( npm run watch
)
这工作正常,除了现在我还有一些功能myFunctions.js
,我想导出和导入 …
我有一组季度数据。这是数组:
var dataGDP = [
{date: "Q1-2008", GDPreal: "2.8"},
{date: "Q2-2008", GDPreal: "0.6"},
{date: "Q3-2008", GDPreal: "-2.1"},
{date: "Q4-2008", GDPreal: "-4.3"},
{date: "Q1-2009", GDPreal: "-6.8"},
{date: "Q2-2009", GDPreal: "-6.3"},
{date: "Q3-2009", GDPreal: "-5"}
];
Run Code Online (Sandbox Code Playgroud)
我如何让这些日期像 2008 年第一季度、2008 年第二季度、2008 年第三季度一样显示在我的 X 轴上?我的 X 轴使用基于时间的刻度我不确定是否有办法解析这些日期,因为它们现在使用 d3.time.format。但是,如果我使用月份,例如 01/2008、04/2008...,我可以解析它们: parseDate = d3.time.format("%m/%Y").parse;
我应该将数组中的日期写为月份,然后编写一个函数将月份转换为季度吗?或者有没有办法将 Q1..ect 保留在数组中,因为它现在并解析日期?
我有这个用Vega-lite制作的条形图(代码和图片如下)。
但我想自定义图例标签,以便不是 videoGame 而是Video Game ,而不是tv而是TV 。有办法做到这一点吗?
lineChart = vegalite ({
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"width": 560,
"height": 200,
"data": {"values": chartData},
"mark": {"type": "bar"},
"encoding": {
"x": {"field": "year_reference", "type": "temporal", "axis": {"title": "Year", "grid": true}},
"y": {"field": "reference_count_total", "type": "quantitative", "axis": {"title": "References", "grid": true}},
"color": {
"field": "title_type",
"scale": {
"domain": [
"tv",
"movie",
"video",
"videoGame"
],
"range": [
"#9e9ac8",
"#74c476",
"#a6761d",
"#6baed6"
]
},
"legend": true,
"title": "Reference Type"
},
}
Run Code Online (Sandbox Code Playgroud)
})
我在python中有一个字典列表:
thedata = [{'date': '2002-02', 'data': 2.0},
{'date': '2002-03', 'data': 2.0017}...]
Run Code Online (Sandbox Code Playgroud)
如何列出"数据"值?
[2.0, 2.0017...]
Run Code Online (Sandbox Code Playgroud)
我试过了:
justFigures = list(filter(lambda x: x["data"], thedata))
Run Code Online (Sandbox Code Playgroud) 我有几个组元素,都是兄弟姐妹.
我正在尝试选择具有'sliceActive'类的那个并给它一个'slice'类,然后将下一个兄弟提供给'sliceActive'类
所有这些都将在我的下一个按钮的点击事件中.我知道如何选择.activeSlice并给它.slice但是如何选择下一个g节点并给它.sliceActive?
$(".button").click(function(){
d3.select("g.sliceActive").attr('class','slice');
});
Run Code Online (Sandbox Code Playgroud) 我有两个数组,我想合并到一个对象数组...
第一个数组是日期(字符串):
let metrodates = [
"2008-01",
"2008-02",
"2008-03",..ect
];
Run Code Online (Sandbox Code Playgroud)
第二个数组是数字:
let figures = [
0,
0.555,
0.293,..ect
]
Run Code Online (Sandbox Code Playgroud)
我想合并它们来制作一个像这样的对象(所以数组项与它们相似的索引相匹配):
let metrodata = [
{data: 0, date: "2008-01"},
{data: 0.555, date: "2008-02"},
{data: 0.293, date: "2008-03"},..ect
];
Run Code Online (Sandbox Code Playgroud)
到目前为止我这样做是这样的:我创建一个空数组然后循环通过前两个数组中的一个来获取索引号(前两个数组的长度相同)...但是有更简单的方法(在ES6中) )?
let metrodata = [];
for(let index in metrodates){
metrodata.push({data: figures[index], date: metrodates[index]});
}
Run Code Online (Sandbox Code Playgroud) 有一点我不明白原型和构造函数..
假设我有这个构造函数,它将创建一个带有'name'属性和'logName'方法的对象
function MyExample(param1){
this.name = param1;
};
MyExample.prototype.logName = function(){
console.log(this.name);
}
Run Code Online (Sandbox Code Playgroud)
我理解我刚刚在构造函数的(myExample)原型中添加了一个方法(logName).当我使用这个构造函数创建一个新对象(我)时,该对象将继承'name'属性和'logName'方法.logName方法将成为新对象(me)proto属性的一部分
var me = new MyExample('bob');
me.logName(); //bob
Run Code Online (Sandbox Code Playgroud)
..但为什么不直接将logName方法添加到构造函数创建的对象中?(不是构造函数的原型)不会提供相同的结果吗?即使'logName'不是新对象的proto属性的一部分.
function MyExample(param1){
this.name = param1;
this.logName = function(){
console.log(this.name)
};
};
var me = new MyExample('bob');
me.logName(); //bob
Run Code Online (Sandbox Code Playgroud) 现在,在我的 Django 模板中,a
如果条件通过或失败,我正在编写一个全新的标记。有没有一种方法可以在a
标签中写入这个条件,以便标签中只有一个?
{% for app in apps %}
{% if app.app_id == "app-smart" %}
<a href='{{app.url}}' class='portfolio-link'>
{% else %}
<a href='{% url app.url %}' class='portfolio-link'>
{% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)