学习图表框架-uPlot(vue项目)第四篇 柱状图

项目中用到了分组柱状图,参考官方demo,图表样式如下:

 引入需要的文件

<script src="./uPlot.iife.js"></script>
<script src="./quadtree.js"></script>
<script src="./distr.js"></script>
<script src="./grouped-bars.js"></script>

准备需要的数据

const data = [
	["Group A", "Group B", "Group C"],
	[1, 2, 3],
	[3, 2, 1],
	[5, 9, 3],
];

准备series配置项,有几组数据,就需要几个

const series = [
	{},
	{
		label: "Metric 1",
		fill: "#33BB55",
	},
	{
		label: "Metric 2",
		fill: "#B56FAB",
	},
	{
		label:	"Metric 3",
		fill: "#BB1133",
	},
];

生成柱状图的方法

function makeChart(o, data, bands) {
	let ori = o.ori;
	let dir = o.dir;
	let stacked = o.stacked;

	const opts = {
	width:  ori == 0 ? 800 : 400,
					    height: ori == 0 ? 400 : 800,
					scales: {
						y: {
							range: [0, null],
							ori: ori == 0 ? 1 : 0,
						//	dir: ori == 0 ? 1 : -1,
						}
					},
					bands,
					axes: [
						{
						//	rotate: -45,
						},
						{
						//	show: false,
							side: ori == 0 ? 3 : 0,
						},
					],
					legend: {
						live: false,
						markers: {
							width: 0,
						}
					},
					padding: [null, 0, null, 0],
					series: JSON.parse(JSON.stringify(series)),
					plugins: [
						seriesBarsPlugin({
							ori,
							dir,
							stacked,
						}),
					],
				};

				let u = new uPlot(opts, data, document.body);
			}

UniApp 是一种基于 Vue.js前端框架,它支持跨平台开发,可以构建一次代码,发布到多个平台上,如微信小程序、H5、iOS、Android 等。如果你想在 UniApp 中创建一个柱状图,并且希望中间的分隔线表示数据值为0的情况,你可以使用其提供的图表组件,例如 ECharts 或者 uPlot。 ECharts 是一款非常流行的开源图表库,集成在 UniApp 的生态中。在 ECharts 中,你可以这样做: 1. 首先安装 ECharts 插件:`uni-install plugin echarts` 2. 使用 `<view echarts>` 组件加载图表插件,并设置数据和配置选项: ```html <template> <view class="chart-container"> <view echarts :options="chartOptions" ref="myChart"></view> </chart-container> </template> <script> import { ECharts } from '@vant/weapp' export default { components: { 'view-echarts': ECharts, }, data() { return { chartOptions: { series: [ { type: 'bar', // 柱状图 name: '数值', data: [4, 6, 8, 7, 5], // 数据数组,假设有一个值为0 itemStyle: { normal: { color: function (params) { if (params.value === 0) { return '#ccc'; // 设置分隔线颜色为灰色 } return '#ff0000'; // 其他值用红色显示 } } } } ], xAxis: { type: 'category', data: ['A', 'B', 'C', 'D', 'E'], // x轴标签 }, yAxis: { splitLine: { lineStyle: { color: '#ccc' } }, // 分隔线全局样式 max: 10 // 如果需要限制最大值 } } } } } </script> ``` 在这个例子中,如果某一项数据值为0,它的颜色会变为灰色,形成明显的分隔效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值