- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是想知道在 Dimple.js 中是否可以根据 y 轴值突出显示条形?我有一个包含 3 个系列的条形图 - X 作为 CategoryAxis (RefNum),Y 作为 MeasureAxis(以 K 为单位),Y2 作为 PctAxis(以 % 为单位)。在条形图的顶部,我们画一条线,使用 javascript 计算(例如帕累托图)。所以我们的想法是改变这些条形的颜色,这些条形超过(Y2)的 80%,或者可能将它们灰化,以及如何突出显示它们。正在挖掘 Dimple.js API 文档,但那里什么也没有......另外,我尝试创建一个简单的 IF ELSE 语句
myChart.defaultColors= [ new dimple.color("blue"), ];
但没有任何运气...这是否可能,因为我找不到任何文档或教程...理想情况下,我们希望有这样的东西: 对 d3 不太熟悉,也许可以通过它找到一些解决方案?我们使用dimple.js 2.1.6和d3.v3感谢任何帮助,谢谢。
这是迄今为止的完整代码:
<!DOCTYPE html>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://dimplejs.org/dist/dimple.v2.1.6.min.js"></script>
</head>
<div id="chartContainer" style="height: 450px"></div>
<div id="chartContainer2" style="height: 450px"></div>
<script>
var svg = dimple.newSvg("#chartContainer", "100%", "100%");
var data =[
{ "Project":"one","Cost":3586900, "Ref":"AB-46" },
{ "Project":"two","Cost":1509270, "Ref":"AB-47" },
{ "Project":"three","Cost":1409250, "Ref":"AB-48" },
{ "Project":"four","Cost":1305270, "Ref":"AB-49" },
{ "Project":"five","Cost":1109270, "Ref":"AB-50" },
{ "Project":"six","Cost":1009270, "Ref":"AB-51" },
{ "Project":"seven","Cost":909270, "Ref":"AB-52" },
{ "Project":"eight","Cost":809270, "Ref":"AB-53" } ];
/*** get the total Cost ****/
var totalAmount = 0;
for(var i = 0; i < data.length; i++){
data[i].Cost = +data[i].Cost;
totalAmount += data[i].Cost;
if(i > 0){
data[i]['CumulativeAmount'] = data[i].Cost + data[i-1].CumulativeAmount;
}else{
data[i]['CumulativeAmount'] = data[i].Cost;
}
}
// calculate cumulative % from the cumulative amounts & total, round %
for(var i = 0; i < data.length; i++){
data[i]['CumulativePercentage'] = (data[i]['CumulativeAmount'] / totalAmount );
data[i]['CumulativePercentage'] = parseFloat(data[i]['CumulativePercentage'].toFixed(2));
}
var myChart= new dimple.chart(svg, data);
x = myChart.addCategoryAxis("x", "Ref");
//x.addOrderRule("x", "Ref");
y = myChart.addMeasureAxis("y", "Cost");
y2 = myChart.addMeasureAxis("y", "CumulativePercentage");
y2.tickFormat = "%";
y2.overrideMin = 0;
y2.overrideMax = 1;
var y3 = myChart.addPctAxis("y", "CumulativePercentage");
y3.hidden = true;
s = myChart.addSeries(null, dimple.plot.bar, [x, y]);
s2 = myChart.addSeries(null, dimple.plot.line, [x, y2]);
s2.lineWeight = 3;
/***** get the value of the 80% of 'CumulativePercentage' */
s3 = myChart.addSeries(null, dimple.plot.area, [x, y2]);
/**** make it invisible, to use custom d3 line later on *****/
s3.lineWeight = 0;
/****** get the 80% of cumulative percentages ****/
s3.data = [{
"CumulativePercentage": 0.8
}];
myChart.draw(1500);
/***** draw a vertical line at 80% of calculated cumulative percentage line on top of the bars *****/
svg.append("line")
.attr("x1", x._scale(s3.data["CumulativePercentage"]))
.attr("x2", x._scale(s3.data["CumulativePercentage"]))
.attr("y1", myChart._yPixels())
.attr("y2", myChart._yPixels() + myChart._heightPixels())
.style("stroke", "red")
.style("stroke-dasharray", "15")
</script>
</body>
</html>
这就是我向 x 轴添加顺序规则时发生的情况,例如x.addOrderRule("Ref", true);
关于如何执行此操作有什么想法吗?预先感谢您的帮助和努力。
最佳答案
我会直接将其添加到 d3
中。像这样的东西:
myChart.svg.selectAll(".dimple-bar").filter(function(d) {
return d.y > 60
}).style("fill", "red");
其中 myChart
是您的凹坑图表,d.y > 60
是您的条件(y 是保存 y2 值的数据变量)。
工作示例:
<!DOCTYPE html>
<html>
<head>
<script data-require="d3@3.5.3" data-semver="3.5.3" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.5.3/d3.js"></script>
<script src="http://dimplejs.org/dist/dimple.v2.2.0.min.js"></script>
</head>
<body>
<div id="chartContainer"></div>
<script type="text/javascript">
var svg = dimple.newSvg("#chartContainer", 590, 400);
var data = [{
x: 'one',
y: 10
}, {
x: 'two',
y: 80
}, {
x: 'three',
y: 70
}, {
x: 'four',
y: 30
}, {
x: 'five',
y: 20
}, {
x: 'six',
y: 6
}];
var myChart = new dimple.chart(svg, data);
myChart.setBounds(60, 30, 510, 305)
var x = myChart.addCategoryAxis("x", "x");
myChart.addMeasureAxis("y", "y");
myChart.addSeries(null, dimple.plot.bar);
myChart.draw();
myChart.svg.selectAll(".dimple-bar").filter(function(d) {
return d.y > 60
}).style("fill", "red");
</script>
</body>
</html>
编辑
我怀疑问题可能是您实际上没有任何数据绑定(bind)到第二个轴。因此,如果您想要相对于轴的条形值,您可以这样做:
<!DOCTYPE html>
<html>
<head>
<script data-require="d3@3.5.3" data-semver="3.5.3" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.5.3/d3.js"></script>
<script src="http://dimplejs.org/dist/dimple.v2.2.0.min.js"></script>
</head>
<body>
<div id="chartContainer"></div>
<script type="text/javascript">
var svg = dimple.newSvg("#chartContainer", 590, 400);
var data = [{
x: 'one',
y: 10,
anotherY: 1
}, {
x: 'two',
y: 80,
anotherY: 2
}, {
x: 'three',
y: 70,
anotherY: 3
}, {
x: 'four',
y: 30,
anotherY: 4
}, {
x: 'five',
y: 20,
anotherY: 5
}, {
x: 'six',
y: 6,
anotherY: 6
}];
var myChart = new dimple.chart(svg, data);
myChart.setBounds(60, 30, 510, 305)
var x = myChart.addCategoryAxis("x", "x");
var y = myChart.addMeasureAxis("y", "y");
var anotherY = myChart.addMeasureAxis("y", "anotherY");
myChart.addSeries(null, dimple.plot.bar);
myChart.draw();
console.log(myChart);
myChart.svg.selectAll(".dimple-bar").filter(function(d) {
var val_of_bar_on_other_scale = anotherY._scale.invert(y._scale(d.y));
return val_of_bar_on_other_scale > 2
}).style("fill", "red");
</script>
</body>
</html>
关于javascript - 是否可以根据 y 轴值突出显示 Dimple.js 条形图中的条形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39291542/
尝试在dimple.plot.pie 中的圆环图上正确显示百分比 这里有一些代码可以正常工作,但会将标签直接放在切片上。 无法让标签显示在饼图之外。 rings = chart.addSeries("
我正在尝试在 dimple js 条形图上绘制平均值、高值和低值直线。我不知道如何将它们绘制在 y 轴(成本)上作为穿过条形的直线。这是将高值、低值和平均值保存到需要在图表上绘制的相应变量中的 fid
有没有一种简单的方法可以使用 dimple.js 修改散点图中圆圈的形状? 我想要这个 scatter plot 中每种颜色的不同形状.例如,蓝色的矩形,红色的三 Angular 形,黄色的括号...
问题是 dimple js 将度量轴(y - 成本)的数据值视为整数,而它们是十进制值。任何建议如何解决这个问题?这是 jsfiddle:http://jsfiddle.net/Ra2xS/7/
HIV+TB TB Click Me var dropdown = d3.select("#cs") var cs2 = dropdown.node().opt
我无法让图表类别与图例相匹配。也许我的数据可以更好地布局?项目应根据每个类别内的日期进行排序。 请在此处查看 Fiddle:http://jsfiddle.net/gcu2Y/ 使用 addOrder
我有两个图显示相同数据的不同方面。两者在数组最后都有相同的属性: chart_scatter.addSeries(["time", "valueA", "valueB", "category"], d
使用dimple.js ,我正在尝试创建一个简单的散点图。然而,我得到的唯一结果是条形图,并且我不知道如何将其切换为散点图。我的数据如下所示; var data = [ {"Month":ne
我在使用 Dimple.JS 时遇到问题,他们的分组/顺序规则方法不允许我按照我的意愿控制条形列的顺序或对齐方式。 即使 x 轴顺序已关闭,我也必须在数据中添加名为“顺序”的行,以确保图表的 x 轴按
我有以下格式的 data.json: { "Users": [ { "userName": "Herbie", "weigh-i
我正在尝试在dimple.js上绘制一个简单的直方图 问题是这些条没有到达 x 轴,它们看起来就像漂浮在周围的小盒子。 var svg = dimple.newSvg("body", 2024, 76
我有使用dimple.js 的图表来显示对象的频率。其中一些是数千个对象,而不是显示 20,000 个,而是显示 20k。这对我来说根本没有好处,可以改变格式吗?我一直不知道怎么做。 这是我的图表 d
这是示例代码... var svg = dimple.newSvg("#chartContainer", 600, 400), chart = null, s1 = null, s2 = null,
如何为 dimple.js 图表添加标题?我想更新图表和轴的标题。我正在使用dimple.js。请指教。 最佳答案 您可以添加带有小 d3 的标题。这是中心标题的示例。为简单起见,我将样式放在 d3
我正在使用基于 d3.js 的 dimple.js。是否可以将数据标签添加到此示例中提到的条形图的每个条形 http://dimplejs.org/examples_viewer.html?id=ba
我的页面上有一个 svg 组件,我已在其中附加了酒窝图表。我希望图表的大小能够响应式调整。 我已经提到过这个example在文档中。 但是当我在折线图中以类似的方式使用它时,它似乎不起作用。我的折线图
在纯 d3 中,我会像这样在 g 元素上使用 .call(zoom) var zoom = d3.behavior.zoom() .x(x) .y(y) .on("zoom", myZoo
请引用截图: 我想知道如何使用背景颜色为分组条形图中的组着色。 我知道 series.afterDraw 如 Advanced Custom Styling Example here 所示可以是进行此
当过渡到凹坑条形图中具有较少或不同条形的新数据时,被移除的条形会被推到图表左侧并在整个过渡时间内保持不变。 下面是重现效果的代码示例: var svg = dimple.newSvg("#chartC
我有一个带有 ecode 的酒窝图 var svg = dimple.newSvg("#chartContainer", 800, 600); var myChart = new dimple.cha
我是一名优秀的程序员,十分优秀!