这对Protovis新人来说是一个相当艰巨的项目,但也许你可以帮助我把它分成易消化的块?
我想要构建的是一个"交互式区域图表",如下所示:
首先,它是数据......我在Excel中有各省的数据:
Province Year 10 100 1000 10000 A 1970 2 4 6 3 A 1971 3 6 8 5 B 1970 6 9 12 6 B 1971 4 8 11 8 .... ... . . . .
对于每个省和年,我希望能够绘制面积图:
vis.add(pv.Area)
.data(data.ProvinceA[1970])
.bottom(1)
.interpolate("basis")
.left(function(d) x(d.x))
.height(function(d) y(d.y))
.fillStyle("rgb(21,173,210)")
.anchor("top").add(pv.Line)
.lineWidth(3);
Run Code Online (Sandbox Code Playgroud)
然后我想添加两种类型的交互:
选择复选框和时间滑块一起确定在任何给定时间可见的区域.例如,如果选择了省A并且年份是1984年,则仅显示该区域.如果现在拖动时间滑块,则现在会显示省A的相应年份.如果选中了另一个省,则会覆盖这些区域,并在时间滑块移动时重新绘制这两个区域.
Protovis问题:
在测试我的网络应用程序时,我希望能够使用简单的下拉列表设置我的一个LESS @variables的值.(完全改变配色方案).
我想在设置值后,LESS必须用新值重新加载/重新编译.less文件?
有没有简单的方法来实现这一目标?(我没有运行node.js)
基本的例子是这样的:
styles.less
@base-color = `window.baseColor()`
Run Code Online (Sandbox Code Playgroud) 我在Photoshop中收到了三种不同分辨率的网站布局:1280,1024和640像素宽.由于我对RWD的经验有限,我想更好地了解网页设计师应该如何考虑尺寸断点,流动性等(在撰写本文时).
我的具体问题源自这个项目:
谢谢你的帮助.
我正在使用Backbone.js来跟踪可视化应用程序中的状态.
该模型具有以下属性:
indicatorX : "income"
indicatorY : "emissions"
indicatorXScale : "lin"
indicatorYScale : "log"
year : 1980
layout : {leftPanel : {[...]}, rightPanel : {[...]}}
Run Code Online (Sandbox Code Playgroud)
1. 在Backbone.js模型中处理"依赖属性"的好方法是什么?
例如,在更改indicatorX属性时,我也希望模型更新indicatorXScale属性.
2.如何处理"延迟"模型属性?例:
该模型包含:
indicatorX : "income"
indicatorXScale : "log"
Run Code Online (Sandbox Code Playgroud)
如果仅在模型上设置了indicatorX,则应将比例设置为默认值:
model.set( {indicatorX : "emissions"} )
if("indicatorX" in changedAttrs){
indicatorXScale = dataSource[indicatorX].defaultScale
}
Run Code Online (Sandbox Code Playgroud)
但是,如果用户想要覆盖"排放"指标的默认比例"lin",该怎么办?
model.set( {indicatorX : "emissions", indicatorXScale : log} )
Run Code Online (Sandbox Code Playgroud)
由于模型属性indicatorXScale已设置为"log",因此不会记录更改的属性.我怎样才能确保在这种情况下不加载defaultScale - 而是传递给模型的那个?
3.让模型使用额外的属性"动作"来描述模型中的变化是一个好主意吗?
通过这种方式,控制器可以侦听一个属性,而不是为属性组合指定处理程序.这些是替代方案:
Alt 1. Controller具有特定属性的处理程序:
this.model.bind("change:year", this.render);
this.model.bind("change:layout", this.updateLayout);
Run Code Online (Sandbox Code Playgroud)
Alt 2. Controller具有模型更改的处理程序,render()指出要执行的操作:
this.model.bind("change", this.render);
render() …Run Code Online (Sandbox Code Playgroud) 特定的JS解析器(不在我的控件中)不理解嵌套的条件运算符语法,如下所示:
return num === 1 ? condition ? condition : something : something;
Run Code Online (Sandbox Code Playgroud)
因此,我想用if/else块替换文件中的所有条件运算符(简单和嵌套).我该怎么办呢?(Textmate或类似的regexp会有所帮助.)
是否有库或跨浏览器本机实现来在 JavaScript 中按字母顺序对丹麦字符串数组进行排序?
[奥尔堡,索罗...]
我想看一个使用angular-animate(1.2x)对列表进行排序的功能示例.(我只是在互联网上遇到破碎的小提琴等):
给定数组[A,B,C]和后来的[C,B,A]的ng-repeat应该:
(使用CSS绝对顶部定位或类似.)
使用交错(转换延迟)的示例是奖励.
我正在寻找一个JavaScript库,它允许我从本地托管的形状数据构建SVG地图(允许用户在没有互联网连接的情况下使用该应用程序).
1)我应该在哪里看?
2)GeoJson是形状数据的良好候选者吗?
3)我在哪里可以找到国家边界和(1级深)地方实体的形状数据?
如果图书馆也支持绘制圆圈,其中心点位于特定的纬度/经度坐标处,那将是一个奖励:)
我想为我的可视化项目(在JavaScript中)创建一些"模拟数据".
优选地,我想总共分配X单元到ý不同组与Z步长间隔根据一些概率分布函数,即,正常或对数正态分布.
例:
使用常规密度函数将正好100个单位分配给0-5000,5000-10000,[...],75000-80000组.
应该呈现这样的东西:
binNames = [ "0-5000", "5000-10000", [...] ]
binData = [ 0,0,0,1,2,10,12,14,12,10 [...] ] //SUM = 100
Run Code Online (Sandbox Code Playgroud)
(如果我可以用简单的种子参数引入一些偏斜,那将是一个奖励.)
如何重塑这些广泛的数据:(来自csv文件)
Name Code Indicator 1960 1961 1962
Run Code Online (Sandbox Code Playgroud)
进入这种长格式?
Name Code Indicator Year
Run Code Online (Sandbox Code Playgroud) 如果我的模型中的两个值(a或b)中的任何一个发生变化,则两个监听视图需要计算第三个值c.
//Pseudo
mainModel
a : 2000
b : 3000
view1
helper.calculateC(this.model.get(a), this.model.get(b))
view2
helper.calculateC(this.model.get(a), this.model.get(b))
Run Code Online (Sandbox Code Playgroud)
我宁愿将依赖属性c放在模型中(因为计算相当复杂,以后可能会允许"c"被用户覆盖.)什么是好的做法?我应该扩展模型,制作一个子模型还是什么?
谢谢!