d3-折线图-中日GDP

2023-11-07 16:30
文章标签 折线图 中日 gdp d3

本文主要是介绍d3-折线图-中日GDP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 效果图

2. code

<template lang='pug'>div.histogram-pane(:id='id')svg.histogram-containerg.viewport</template><script>
import * as d3 from 'd3'
import { Uuid } from '@/util/common'
export default {name: 'learn',data () {return {id: '',width: 0,height: 0,padding: null,dataSet: [{ country: 'China',gdp: [[2000, 11920], [2001, 13170], [2002, 14550], [2003, 16650], [2004, 19440], [2005, 22840], [2006, 27880],[2007, 35040], [2008, 45470], [2009, 51050], [2010, 59540], [2011, 73140], [2012, 83860], [2013, 103550]]},{ country: 'Japan',gdp: [[2000, 47310], [2001, 41590], [2002, 43020], [2003, 46330], [2004, 46550], [2005, 45710], [2006, 43560],[2007, 43560], [2008, 48490], [2009, 50350], [2010, 54950], [2011, 59050], [2012, 59370], [2013, 48980]]}]}},created () {this.id = Uuid()},mounted () {let width = document.getElementById(this.id).clientWidthlet height = document.getElementById(this.id).clientHeightthis.padding = { top: 60, bottom: 60, left: 60, right: 60 }d3.select('svg').attr('width', width).attr('height', height)// 缩放const zoomed = function () {d3.select('svg').select('g.viewport').attr('transform', d3.event.transform)}const zoom = d3.zoom().on('zoom', zoomed)d3.select('svg').call(zoom).on('dblclick.zoom', null)// 绘画this.draw(width, height)},methods: {draw (width, height) {let g = d3.select('g.viewport')// x 轴let xScale = d3.scaleLinear().domain([2000, 2013]).range([0, width - this.padding.left - this.padding.right])// tickFormat(d3.format('d')) 去掉字符串中的,let xAxis = d3.axisBottom(xScale).ticks(5).tickFormat(d3.format('d'))g.append('g').attr('transform', 'translate(' + this.padding.left + ',' + (height - this.padding.bottom) + ')').call(xAxis)// y 轴let maxGdp = this.getGdpMax()let yScale = d3.scaleLinear().domain([0, maxGdp * 1.1]).range([height - this.padding.top - this.padding.bottom, 0])let yAxis = d3.axisLeft(yScale)g.append('g').attr('transform', 'translate(' + this.padding.left + ',' + this.padding.top + ')').call(yAxis)// 线段生成器实现折线let colors = [d3.rgb(0, 0, 255), d3.rgb(0, 255, 0)]let linePaths = d3.line().x(d => xScale(d[0])).y(d => yScale(d[1]))g.append('g').selectAll('path').data(this.dataSet).enter().append('path').attr('transform', 'translate(' + this.padding.left + ',' + this.padding.top + ')').attr('d', d => linePaths(d.gdp)).attr('fill', 'none').attr('stroke-width', 3).attr('stroke', (d, i) => colors[i])// 底部按钮let gs = g.append('g').selectAll('rect').data(this.dataSet).enter()gs.append('text').attr('transform', 'translate(' + this.padding.left + ',' + (height - this.padding.bottom + 35) + ')').text(() => 'GDP:')gs.append('rect').attr('transform', 'translate(' + (this.padding.left + 50) + ',' + (height - this.padding.bottom + 20) + ')').attr('width', '20').attr('height', '20').attr('fill', (d, i) => colors[i]).attr('x', (d, i) => {return i === 0 ? '0' : '100'})gs.append('text').attr('transform', 'translate(' + (this.padding.left + 50) + ',' + (height - this.padding.bottom + 35) + ')').attr('fill', (d, i) => colors[i]).text((d, i) => this.dataSet[i].country).attr('x', (d, i) => {return i === 0 ? '25' : '125'})},getGdpMax () {let gdpMax = 0for (let index = 0; index < this.dataSet.length; index++) {const item = this.dataSet[index]let currentGdp = d3.max(item.gdp, d => d[1])if (currentGdp > gdpMax)gdpMax = currentGdp}return gdpMax}}
}
</script><style lang='scss' scoped>
.histogram-pane {width: 100%;height: 100%;
}
.histogram-container {width: 100%;height: 100%;
}
</style>

 

 

这篇关于d3-折线图-中日GDP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/364868

相关文章

HighCharts 折线图的实现

Java和HighCharts结合,实现折线图; 代码下载:Java和Highcharts实现折线图

怎么使用matplotlib绘制一个从-2π到2π的sin(x)的折线图-学习篇

首先:如果你的环境中没有安装matplotlib,使用以下命令可以直接安装 pip install matplotlib 如何画一个这样的折线图呢?往下看 想要画一个简单的sin(x)在-2π到2π的折线图,我们要拆分成以下步骤: 先导入相关的库文件 我们需要创建一个数学函数相关的图,需要引入 numpy 我们需要绘制图表,所以需要引入matplotlib来绘制图表创建一个x值的数组从

科研绘图系列:R语言折线图(linechart plots)

介绍 在R语言中,折线图(Line Plot)是一种常用的数据可视化类型,用于展示数据随时间或有序类别变化的趋势。折线图通过连接数据点来形成一条或多条线,这些线条可以清晰地表示数据的变化方向、速度和模式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(patchwork)li

echarts遍历区域折线图,单线和多线

// 单线折线图drawonelineCharts(){var echarts = require("echarts");var lineCharts = document.getElementsByClassName('lineChart'); // 对应地使用ByClassNamethis.linecolor=['#01FFD4','#1C70DD','#01FFD4','#1C70DD'

【Qt】QChart折线图

引言 Qt绘图(Qt Charts)基于Qt的Graphics View架构,其核心组件是QChartView 和 QChart QChartView是显示图标的视图,基类为QGraphicsViewQChart的基类是QGraphicsltem 可以看作是视图和数据分离,即ViewModel QChartView QChartView 是一个独立的小部件,继承于 QGraphicsVie

智能电力监控与管理系统:基于MQTT协议的实时数据传输,结合React和D3.js实现数据可视化,利用TensorFlow进行故障检测与能效优化(代码示例)

一、项目概述 智能电力监控与管理系统旨在通过高效的传感器网络和物联网技术,实现对电力系统的实时监控和智能管理。该项目的目标是提高电力设备的运行效率,降低能耗,并通过数据分析及时发现潜在故障,确保电力系统的安全和稳定。 项目解决的问题和带来的价值 实时监控:通过高精度传感器实时采集电流、温度和湿度等数据,确保及时发现设备异常。 数据分析:利用大数据技术对采集的数据进行深度分析,帮助用户优化

vue3中,vue-echarts基本使用(关系图、知识图谱、柱状图、饼图、折线图)

vue3 安装vue-echartsnpm i -S vue-echarts echarts//cnpm 安装cnpm i -S vue-echarts echarts vue2 注意:Vue 2 下使用 vue-echarts,必须还要安装 @vue/composition-api : npm i -D @vue/composition-api//cnpm 安装cnpm i

echarts-折线图

效果图: 源码: <!DOCTYPE html><html style="overflow-x:hidden;overflow-y:auto;"><head><title>折线图</title><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><meta http-equiv="Cache-

canvas 画折线图方法

function creatCanvas(){//需要传入的数据var data = [80,92,104,110,68,50,45];//需要传入的x坐标var time =["11","1.1","13.1","14.1","15.1","16.1","17.1"];// 获取上下文var a_canvas = document.getElementById('a_canvas

QChart绘制折线图

这一篇我们详细介绍图表各个部分的设置和操作,包括图表的标题、图例、边距等属性设置,QLineSeries序列的属性设置,QValueAxis坐标轴的属性设置,以及图标的缩放。(这些应该都是在实际的Qt开发中比较常用的图表操作)先看运行时的界面: 界面设计 工具栏:创建几个Action,并创建工具栏,实现图表数据刷新和缩放功能。 主工作区图标视图:从组件面板放置一个QGraphics V