/* Creates a small triangle extender for the tooltip */
.d3-tip
:after {
box-sizing
: border-box;
display
: inline;
font-size
:
10px
;
width
:
100%
;
line-height
:
1
;
color
: rgba(0, 0, 0, 0.8);
content
:
"\25BC"
;
position
: absolute;
text-align
: center;
/* Style northward tooltips differently */
.d3-tip
.n
:after {
margin
: -
1px
0
0
0
;
top
:
100%
;
left
:
0
;
</style>
<script
src
=
"http://d3js.org/d3.v3.min.js"
>
</script>
<script
src
=
"http://labratrevenge.com/d3-tip/javascripts/d3.tip.v0.6.3.js"
>
</script>
<script>
var
margin = {
top
:
40
,
right
:
20
,
bottom
:
30
,
left
:
40
},
width =
960
- margin.left - margin.right,
height =
500
- margin.top - margin.bottom;
var
formatPercent = d3.format(
".0%"
);
var
x = d3.scale.ordinal()
.rangeRoundBands([
0
, width],
.1
);
var
y = d3.scale.linear()
.range([height,
0
]);
var
xAxis = d3.svg.axis()
.scale(x)
.orient(
"bottom"
);
var
yAxis = d3.svg.axis()
.scale(y)
.orient(
"left"
)
.tickFormat(formatPercent);
var
tip = d3.tip()
.attr(
'class'
,
'd3-tip'
)
.offset([
-10
,
0
])
.html(
function
(d) {
return
"<strong>Frequency:</strong> <span style='color:red'>"
+ d.frequency +
"</span>"
;
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 +
")"
);
svg.call(tip);
d3.tsv(
"data.tsv"
, type,
function
(error, data) {
x.domain(data.map(
function
(d) {
return
d.letter; }));
y.domain([
0
, d3.max(data,
function
(d) {
return
d.frequency; })]);
svg.append(
"g"
)
.attr(
"class"
,
"x axis"
)
.attr(
"transform"
,
"translate(0,"
+ height +
")"
)
.call(xAxis);
svg.append(
"g"
)
.attr(
"class"
,
"y axis"
)
.call(yAxis)
.append(
"text"
)
.attr(
"transform"
,
"rotate(-90)"
)
.attr(
"y"
,
6
)
.attr(
"dy"
,
".71em"
)
.style(
"text-anchor"
,
"end"
)
.text(
"Frequency"
);
svg.selectAll(
".bar"
)
.data(data)
.enter().append(
"rect"
)
.attr(
"class"
,
"bar"
)
.attr(
"x"
,
function
(d) {
return
x(d.letter); })
.attr(
"width"
, x.rangeBand())
.attr(
"y"
,
function
(d) {
return
y(d.frequency); })
.attr(
"height"
,
function
(d) {
return
height - y(d.frequency); })
.on(
'mouseover'
, tip.show)
.on(
'mouseout'
, tip.hide)
function
type(d) {
d.frequency = +d.frequency;
return
d;
</script>
data.tsv
#
letter frequency
A .08167
B .01492
C .02780
D .04253
E .12702
F .02288
G .02022
H .06094
I .06973
J .00153
K .00747
L .04025
M .02517
N .06749
O .07507
P .01929
Q .00098
R .05987
S .06333
T .09056
U .02758
V .01037
W .02465
X .00150
Y .01971
Z .00074
如何在d3 的简单条形图示例中使用d3-tip。index.html#<!DOCTYPE html><meta charset="utf-8"><style>body { font: 10px sans-serif;}.axis path,.axis line { fill: none; stroke: #000; shape-rendering: crispEdges;}.bar { fill: orange;
从现在开始,每个事件处理程序都将接收事件作为第一个参数
位于此存储库下的
d3
-
tip
版本已适应此更改。
它还修复了一个恼人的错误,当多个 DOM
提示
实例被创建时,这最终会导致意外和不良结果。
请参阅,但请注意
tip
.html API 中的更改。 简短的故事是,您将在
tip
.html()中以相同的顺序获得与
tip
.show()接收相同的参数。
如果你
使用
npm
npm i
d3
-v6-
tip
然后在您的应用程序中像这样
使用
它
import {
tip
as
d3
tip
} from "
d3
-v6-
tip
" ;
const
tip
=
d3
tip
( )
否则,您可以
import '
d3
Bar from 'bar-plot-
d3
'
将canvas元素
添加
到html页面(
d3
Canvas是预期的默认ID)
<div id='#
d3
Canvas'>
呼叫addBars
const data_example = [{country: 'USA': 20.8}, {country: 'China': 14.9}, {country: 'Japan': 4.9}, {country: 'Germany': 3.8}, {country: 'France': 2.6}]
d3
Bar.addBars({data: data})
指定画布大小(默认为900 x 600)
(自动调整大小以适合画布)
d3
Bar({data: data,
目录
d3
-
tip
介绍
d3
-
tip
实现步骤1、
添加
使用
的
JavaScript
函数库2、为柱形图创建
tip
3、调用
tip
4、确定数据集5、
添加
触发动作事件6、click和mouseout触发动作事件冲突_解决方法
d3
-
tip
介绍
d3
-
tip
是
D3
可视化
工具
中的一种,可用于生成自定义文本
提示
框。如下图所示,当鼠标悬浮在小矩形上方时,会出现
提示
框。
d3
-
tip
实现步骤
先附上一篇文章,之后进行分析。
使用
d3
-
tip
将文本
提示
框
添加
到
d3
柱形图:http://bl.ocks.org/Caged/647657
<script src="https://
d3
js.org/
d3
.v4.min.js"></script><script src="https://cdn.bootcss.com/
d3
-
tip
/0.9.1/
d3
-
tip
.js"></script>
const svg =
d3
.select('body').append('svg') .att...
Vue+
D3
绘制
条形图
饼图,和力导向图准备:
D3
代码1.
条形图
2.饼图总结
本篇blog在于把已经编写好的
D3
代码从一般HTML文件迁移到Vue框架中,关于
D3
的技术不予讨论
准备:
D3
代码
1.
条形图
代码如下(示例):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import wa.
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
String path = request.getContextPath();
String basePath ...
1. 准备数据:首先需要准备
条形图
所需的数据。这通常是一个数组,其中包含每个
条形图
的值。
2. 配置坐标轴:接下来,需要确定
条形图
的 x 轴和 y 轴。x 轴通常是分类轴,而 y 轴则表示数值轴。
3.
添加
条形图
:
使用
d3
.js 中的 `selectAll` 和 `data` 方法将
条形图
添加
到图表中。接着,
使用
`enter` 方法为每个数据创建一个
条形图
。
4. 设置
条形图
的样式:
使用
d3
.js 中的 `style` 方法为
条形图
设置颜色、宽度等样式。
5.
添加
标签:最后,可以
使用
d3
.js 中的 `text` 方法在
条形图
上
添加
标签,以显示每个
条形图
的值。
例如,以下是
使用
d3
.js 构建
条形图
的示例代码:
// 准备数据
var data = [30, 50, 80, 40, 70];
// 配置坐标轴
var x =
d3
.scaleBand()
.range([0, width])
.padding(0.1);
var y =
d3
.scaleLinear()
.range([height, 0]);
x.domain(data.map(function(d) { return d.letter; }));
y.domain([0,
d3
.max(data, function(d) { return d.frequency; })]);
//
添加
条形图
var svg =
d3
.select("body").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("
Java将正整数转换为负数,将负整数转换为正数
创建 Windows Server无人值守安装自动安装 ISO
qq_39607178:
Windows 10中的Microsoft兼容遥测Microsoft Compatibility Telemetry(CompatTelRunner.exe)是什么,如何禁用?
ID1507: