d3.js - 任何 js 库中带有 4 个标签(对面图)的散点图?
问题描述
有没有人知道散点图轴的每一侧都有4个不同标签的可能性?
我正在尝试在任何常见的 JS 库(谷歌图表、plotly、chart.js 等)中创建一个所谓的相反图(https://datavizproject.com/data-type/2x2-matrix/)并且不能找到标记所有四个面的任何选项:
我会很感激任何意见!
解决方案
我建议使用 D3 的雷达图表插件,以下代码片段取自bl.ocks.org的示例,并查看这个宏伟的图表 ui:http ://bl.ocks.org/nbremer/21746a9668ffdf6d8242
RadarChart.defaultConfig.color = function() {};
RadarChart.defaultConfig.radius = 3;
RadarChart.defaultConfig.w = 400;
RadarChart.defaultConfig.h = 400;
var data = [
{
className: 'germany', // optional can be used for styling
axes: [
{axis: "strength", value: 13},
{axis: "intelligence", value: 6},
{axis: "charisma", value: 5},
{axis: "dexterity", value: 9}
]
},
{
className: 'argentina',
axes: [
{axis: "strength", value: 6},
{axis: "intelligence", value: 7},
{axis: "charisma", value: 10},
{axis: "dexterity", value: 13}
]
}
];
function randomDataset() {
return data.map(function(d) {
return {
className: d.className,
axes: d.axes.map(function(axis) {
return {axis: axis.axis, value: Math.ceil(Math.random() * 10)};
})
};
});
}
var chart = RadarChart.chart();
var cfg = chart.config(); // retrieve default config
var svg = d3.select('body').append('svg')
.attr('width', cfg.w + cfg.w + 50)
.attr('height', cfg.h + cfg.h / 4);
svg.append('g').classed('single', 1).datum(randomDataset()).call(chart);
// many radars
chart.config({w: cfg.w / 4, h: cfg.h / 4, axisText: false, levels: 0, circles: false});
cfg = chart.config();
function render() {
var game = svg.selectAll('g.game').data(
[
randomDataset(),
randomDataset(),
randomDataset(),
randomDataset()
]
);
game.enter().append('g').classed('game', 1);
game
.attr('transform', function(d, i) { return 'translate('+((cfg.w * 4) + 50 + (i * cfg.w))+','+ (cfg.h * 1.3) +')'; })
.call(chart);
setTimeout(render, 1000);
}
render();
body {
padding: 20px;
}
.radar-chart .area {
fill-opacity: 0.7;
}
.radar-chart.focus .area {
fill-opacity: 0.3;
}
.radar-chart.focus .area.focused {
fill-opacity: 0.9;
}
.area.germany, .germany .circle {
fill: #FFD700;
stroke: none;
}
.area.argentina, .argentina .circle {
fill: #ADD8E6;
stroke: none;
}
<!DOCTYPE html>
<meta charset="utf-8">
<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.5.0/pure-min.css">
<link rel="stylesheet" href="https://rawgit.com/tpreusse/radar-chart-d3/master/src/radar-chart.css">
<script src="http://d3js.org/d3.v3.js"></script>
<script src="https://rawgit.com/tpreusse/radar-chart-d3/master/src/radar-chart.js"></script>
<span></span>
推荐阅读
- java - spark-assembly-hadoop.jar:fat jar 剥离 BouncyCastle 提供者的签名
- jenkins - Jenkins 共享库管道:单例与按需单例
- ios - 在注册 Firebase 之前检查用户名
- azure-cosmosdb - Cosmos DB 上的 Gremlin 查询:无法将 StringField 类型的对象转换为 Compose1Field
- python - 获取 find_all 中的第二个标签
- javascript - 如何在 textarea 中保持文本格式相同
- docker - 使用容器时如何使用烧瓶会话将redis设置为缓存?
- kubernetes - 如何让运行成功的 Pod 在用户设置的时间内自行删除
- javascript - 如何在 React 中更新 render() 中的值?
- r - 使用第一行中 case_when 的结果并使用结果来评估第二个条件