StackedAreaChart(nvd3)

本文介绍如何使用NVD3库和Pandas处理数据,绘制动态交互的堆叠面积图,展示过去一年中各种浏览器市场份额的变化。数据来源于Clicky Web Analytics。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from nvd3 import stackedAreaChart
import pandas as pd
import time
# 原文https://bl.ocks.org/mbostock/3885211,数据源也在原文内
data = pd.read_csv('test_data.csv')
data.columns
# 建立画布
chart = stackedAreaChart(name='stackedAreaChart', height=600, width=1024,x_is_date=True,x_axis_format="%d %b %Y",use_interactive_guideline=True)
# 提取数据
xdata = pd.to_datetime(data['date']).apply(lambda x:time.mktime(x.timetuple())* 1000)
ydata = data['Google Chrome'].astype(float)
ydata2 = data['Internet Explorer'].astype(float)
ydata3 = data['Firefox'].astype(float)
ydata4 = data['Safari'].astype(float)
ydata5 = data['Microsoft Edge'].astype(float)
ydata6 = data['Opera'].astype(float)
ydata7 = data['Mozilla'].astype(float)
ydata8 = data['Other/Unknown'].astype(float)
# 设置控件
extra_serie = {"tooltip": {"y_start": "There is ", "y_end": " min"}, "date_format": "%d %b %Y %H:%M:%S %p"}
# 添加数据
chart.add_serie(name='Google Chrome', y=ydata, x=xdata, extra=extra_serie)
chart.add_serie(name='Internet Explorer', y=ydata2, x=xdata, extra=extra_serie)
chart.add_serie(name='Firefox', y=ydata3, x=xdata, extra=extra_serie)
chart.add_serie(name='Safari', y=ydata4, x=xdata, extra=extra_serie)
chart.add_serie(name='Microsoft Edge', y=ydata5, x=xdata, extra=extra_serie)
chart.add_serie(name='Opera', y=ydata6, x=xdata, extra=extra_serie)
chart.add_serie(name='Mozilla', y=ydata7, x=xdata, extra=extra_serie)
chart.add_serie(name='Other/Unknown', y=ydata8, x=xdata, extra=extra_serie)
chart.buildhtml()
output_file = open('test_StackedAreaChart.html', 'w')
output_file.write(chart.htmlcontent)
output_file.close()

This stacked area chart is constructed from a TSV file storing the market share of several popular web browsers over the last year. Data is from Clicky Web Analytics. The chart employs conventional marginsand a number of D3 features:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在Angular中使用nvd3,可以首先安装nvd3和d3.js,可以使用npm或者yarn进行安装。 ``` npm install d3 --save npm install nvd3 --save ``` 或者 ``` yarn add d3 yarn add nvd3 ``` 安装完成后,可以在组件中引入nvd3和d3.js库: ```typescript import * as d3 from &#39;d3&#39;; import &#39;nvd3&#39;; ``` 在组件中,创建一个数据集,然后设置图表参数,并在ngOnInit函数中生成图表: ```typescript import { Component, OnInit } from &#39;@angular/core&#39;; import * as d3 from &#39;d3&#39;; import &#39;nvd3&#39;; @Component({ selector: &#39;app-nvd3-chart&#39;, template: &#39;<nvd3 [options]="options" [data]="data"></nvd3>&#39;, }) export class Nvd3ChartComponent implements OnInit { data: any; options: any; ngOnInit(): void { this.data = [ { key: "Cumulative Return", values: [ { "label": "A", "value": 10 }, { "label": "B", "value": 20 }, { "label": "C", "value": 30 }, { "label": "D", "value": 40 }, { "label": "E", "value": 50 }, { "label": "F", "value": 60 }, { "label": "G", "value": 70 } ] } ]; this.options = { chart: { type: &#39;discreteBarChart&#39;, height: 450, margin : { top: 20, right: 20, bottom: 50, left: 55 }, x: function(d){return d.label;}, y: function(d){return d.value;}, showValues: true, valueFormat: function(d){ return d3.format(&#39;,.4f&#39;)(d); }, duration: 500, xAxis: { axisLabel: &#39;X Axis&#39; }, yAxis: { axisLabel: &#39;Y Axis&#39;, axisLabelDistance: -10 } } }; } } ``` 最后,在模板文件中使用nvd3组件来显示图表,例如: ```html <nvd3 [options]="options" [data]="data"></nvd3> ``` 这样就可以在Angular中使用nvd3来生成图表了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值