- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的代码适用于预定义的值 here .但是,如果我将值更改为不同的值,背景栏将变为 distorted and misplaced to wrong location .
我该如何解决这个问题?
D3代码:
var data = [
{
"episode": "Ep. 01",
"donations": "100",
"ngo": "abc",
"bar_color": "#B3DA29",
"shadow_color": "#708125"
},
{
"episode": "Ep. 02",
"donations": "388.98",
"ngo": "abc",
"bar_color": "#78C0F2",
"shadow_color": "#3E7FA5"
},
{
"episode": "Ep. 03",
"donations": "6030.00",
"ngo": "abc",
"bar_color": "#9B58B5",
"shadow_color": "#5A3E6F"
},
{
"episode": "Ep. 04",
"donations": "407.70",
"ngo": "abc",
"bar_color": "#E54C3C",
"shadow_color": "#B4320E"
},
{
"episode": "Ep. 05",
"donations": "210.00",
"ngo": "abc",
"bar_color": "#F2519D",
"shadow_color": "#BD3F7F"
},
{
"episode": "Ep. 06",
"donations": "100",
"ngo": "abc",
"bar_color": "#B3DA29",
"shadow_color": "#708125"
},
{
"episode": "Ep. 07",
"donations": "388.98",
"ngo": "abc",
"bar_color": "#78C0F2",
"shadow_color": "#3E7FA5"
},
{
"episode": "Ep. 08",
"donations": "603.00",
"ngo": "abc",
"bar_color": "#9B58B5",
"shadow_color": "#5A3E6F"
},
{
"episode": "Ep. 09",
"donations": "407.70",
"ngo": "abc",
"bar_color": "#E54C3C",
"shadow_color": "#B4320E"
},
{
"episode": "Ep. 10",
"donations": "210.00",
"ngo": "abc",
"bar_color": "#F2519D",
"shadow_color": "#BD3F7F"
}
];
var margin = {top: 100, right: 20, bottom: 60, left: 40},
width = 500 - margin.left - margin.right,
height = 355 - margin.top - margin.bottom;
var x = d3.scale.ordinal()
.rangeRoundBands([0, width], .2);
var y = d3.scale.linear()
.range([height, 0]);
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom")
.tickSize(10,10);
var yAxis = d3.svg.axis()
.scale(y)
.orient("left");
var svg = d3.select("body").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
defs = svg.append('svg:defs');
defs
.append('svg:pattern')
.attr('id', 'stripe_bg')
.attr('patternUnits', 'userSpaceOnUse')
.attr('width', '8')
.attr('height', '8')
.append('svg:image')
.attr('xlink:href', 'http://snag.gy/vLMrD.jpg')
.attr('x', 0)
.attr('y', 0)
.attr('width', 8)
.attr('height', 8);
x.domain(data.map(function(d) { return d.episode; }));
y.domain([0, d3.max(data, function(d) { return d.donations; })]);
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis)
.append("text")
.attr("x", width / 2 )
.attr("y", margin.bottom - 5);
//Create Y Axis
svg.append("g")
.attr("class", "y axis")
.call(yAxis);
var tooltip = d3.select("body").append("div")
.attr("class", "tooltip")
.style("opacity", 0);
//var total = d3.sum(data, function(d) { return d.donations; })
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis)
.selectAll(".tick text")
.call(wrap, x.rangeBand());
svg.selectAll(".ellipse")
.data(data)
.enter()
.append("ellipse")
.attr("cx", function(d) { return x(d.episode) + 17; })
.attr("cy", function(d) { return y(0); })
.attr("rx", 20)
.attr("ry", 5)
.style("fill", function(d) { return d.shadow_color; })
svg.selectAll(".backgound-bar")
.data(data)
.enter()
.append("rect")
.attr("class", "background-bar")
.attr("x", function(d) { return x(d.episode); })
.attr("width", x.rangeBand())
.attr("y", function(d) { return y(800); })
.attr("height", 258)
.style("fill", "url(#stripe_bg)")
.attr("rx", 10)
.attr("ry", 10);
svg.selectAll(".bar")
.data(data)
.enter().append("rect")
.attr("class", "bar")
.attr("x", function(d) { return x(d.episode); })
.attr("width", x.rangeBand())
.attr("y", function(d) { return y(d.donations); })
.attr("height", function(d) { return height - y(d.donations); })
.style("fill", function(d) { return d.bar_color; })
.attr("rx", 10)
.attr("ry", 10)
.on("mouseover", function(d) {
tooltip.transition().duration(200).style("opacity", .9);
tooltip.html("NGO: " + d.ngo)
.style("left", (d3.event.pageX) + "px")
.style("top", (d3.event.pageY - 28) + "px");
})
.on("mouseout", function(d) {
tooltip.transition().duration(500).style("opacity", 0);
});
/*svg.selectAll(".text")
.data(data)
.enter()
.append("text")
.attr("transform", function(d, i) {
return "translate(" + (35 + x(d.episode)) + ", 180)" + "rotate(-90)"
})
.text(function(d) { return d.episode; })
.style("font-family", 'Arial, "Helvetica Neue", Helvetica, sans-serif')
.style("fill", "white");*/
function wrap(text, width) {
text.each(function() {
var text = d3.select(this),
words = text.text().split(/\s+/).reverse(),
word,
line = [],
lineNumber = 0,
lineHeight = 1.1, // ems
y = text.attr("y"),
dy = parseFloat(text.attr("dy")),
tspan = text.text(null).append("tspan").attr("x", 0).attr("y", y).attr("dy", dy + "em");
while (word = words.pop()) {
line.push(word);
tspan.text(line.join(" "));
if (tspan.node().getComputedTextLength() > width) {
line.pop();
tspan.text(line.join(" "));
line = [word];
tspan = text.append("tspan").attr("x", 0).attr("y", y).attr("dy", ++lineNumber * lineHeight + dy + "em").text(word);
}
}
});
}
最佳答案
条纹背景条的高度和位置是硬编码的(不依赖于数据),看看你的代码:
.attr("y", function(d) { return y(800); })
.attr("height", 258)
尝试将其替换为:
.attr("y", 0)
.attr("height", height)
关于javascript - 背景栏扭曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21882042/
以下代码在2端口上监听,当有消息时修改全局dict对象。并且有一个计时器也会修改字典。 d = {} class x(Protocol): def dataReceived(self, dat
Twisted 怎么样?知道函数应该以异步方式执行吗? 异步函数应该返回一个带有call-/errbacks的Deferred(immeadiately),当收到“异步”数据时将被调用。接收到的数据作
我扭曲了服务器。它与插件一起运行。我想根据请求为每个条目编写唯一的前缀。 这意味着当user1发出请求时,它将生成一个唯一的字符串,该字符串将以日志记录为前缀(仅用于此请求)。当user2发出请求时,
我正在使用校准的立体声对进行稀疏重建。这是我一步一步采取的方法: 1- 我使用 MATLAB 中的立体相机校准器应用程序校准了我的立体相机。 2-我拍摄了一对立体图像,并对每个图像进行了不失真处理。
我关注了这个tutorial但我不知道如何从服务器获取响应数据。 class Service(Resource): def render_POST(self, request):
我的网站上有一个页面,它从数据库中获取大量图像并将它们放在一个网格中。 图像的形状和大小各不相同。 我想要做的是显示图像,每个图像都具有相同的宽度和高度,但不会扭曲。 现在我的CSS是 .image{
我正在尝试创建一个简单的代金券程序。 客户端连接到服务器并询问凭证上是否还有时间,如果是,服务器会响应多少时间。 我控制服务器和客户端,客户端也由我编写代码。 现在这就是我的服务器端,客户端是不言自明
假设我通过 TCP 连接快速接收数据。我必须对其进行某种处理。因为我不想阻塞 react 器线程,所以我将处理卸载到后台线程。 数据到达的速度超过了我处理它的速度。如果我将数据放入队列中,队列会无限增
我有一个简单的客户端,它向服务器发送请求并接收响应: from StringIO import StringIO from twisted.internet import reactor fro
我目前正在使用 python/twisted 构建一个 http 服务器。 该服务器必须在另一个 Web 服务器上获取内容,将其存储在本地并将响应发送回客户端。如果遇到 404,它必须尝试提供本地文件
我有一个扭曲的 react 堆监听传入的数据。我有第二个 react 器在特定时间间隔执行 http 请求,将结果发送到第一个 react 器。两者都运行良好。 现在我想把它放在一起在一个 react
我正在尝试使用 ImageMagick 的透视 功能。我看过这些例子,但我无法理解值对应的是什么。我有这段代码: var stream = new MemoryStream(); using (Mag
我有一个应用程序的想法,该应用程序采用每个角落有四个正方形的打印页面,并允许您在至少有两个正方形可见的情况下测量纸上的对象。我希望能够让用户从不太完美的角度拍照,但仍能准确测量物体。 由于我在该领域缺
我试图让用户在文本框中输入文本,并让程序生成所有可能的组合,但最少 3 个字符和最多 6 个字符除外。我不需要像 ' 这样的无用词as'、'a'、'i'、'to' 等弄乱了我的阵列。我还将根据字典检查
给定一个包含 +ve 和 -ve 整数的数组,找出不允许跳过 2 个连续元素的最大总和(即,您必须至少选择其中一个才能向前移动)。 例如:- 10、20、30、-10、-50、40、-50、-1、-3
什么时候应该使用 twisted.python.failure.Failure,什么时候应该使用 twisted.internet.error.ConnectionDone?或者我应该做 twiste
在 Twisted 中有 1 天的经验,我尝试安排消息发送以回复 tcp 客户端: import os, sys, time from twisted.internet import protocol
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
更新:为了便于阅读,这里是如何在 react 器关闭之前添加回调: reactor.addSystemEventTrigger('before', 'shutdown', callable) 原始问题
所以我已经查看了一些涉及使用 python 和 Twisted 框架编写 HTTP 代理的事情。 基本上,就像其他一些问题一样,我希望能够修改将发送回浏览器的数据。也就是说,浏览器请求资源,代理将获取
我是一名优秀的程序员,十分优秀!