【Echarts】使用象形柱状图实现圆柱形柱状图

圆柱形柱状图包括五部分组成,圆柱的顶部、底部、侧面、Y 轴的背景、Y 轴背景顶部。示例图如下:

象形柱状图

象形柱图是可以设置各种具象图形元素(如图片、SVG PathData 等)的柱状图。往往用在信息图中。用于有至少一个类目轴或时间轴的直角坐标系上。 象形柱图可以被想象为:它首先是个柱状图,但是柱状图的柱子并不显示。这些柱子我们称为『基准柱(reference bar)』,根据基准柱来定位和显示各种象形图形(包括图片)。每个象形图形根据基准柱的定位,是通过 symbolPosition、symbolOffset 来调整其于基准柱的相对位置。

圆柱底部

圆柱的底部是一个椭圆,类型为 pictorialBar,通过 symbolSize 设置椭圆长轴和短轴,通过 symbolOffset 设置椭圆的偏移量。代码如下:

js 复制代码
series: [
	{
		data: [150, 230, 224, 218, 135, 147, 260],
		type: "pictorialBar",
		symbolSize: [45, 25],
		symbolOffset: [0, 10],
		z: 12,
	},
];

圆柱 Y 轴高度背景

这里是正常的绘制柱状图,需要添加一个属性 barGap。

barGap

不同系列的柱间距离,为百分比(如 '30%',表示柱子宽度的 30%)。

如果想要两个系列的柱子重叠,可以设置 barGap 为 '-100%'。这在用柱子做背景的时候有用。

在同一坐标系上,此属性会被多个 'bar' 系列共享。此属性应设置于此坐标系中最后一个 'bar' 系列上才会生效,并且是对此坐标系中所有 'bar' 系列生效

这里不需要设置 symbolOffset 和 symbolSize,代码如下:

js 复制代码
series: [
	{
		data: [150, 230, 224, 218, 135, 147, 260],
		type: "bar",
		barWidth: 45,
		barGap: "-100%",
		z: 12,
	},
];

圆柱顶部

圆柱的顶部是一个椭圆,类型为 pictorialBar,通过 symbolSize 设置椭圆长轴和短轴,通过 symbolOffset 设置椭圆的偏移量,与设置圆柱底面不同的是这里需要单独设置 symbolPosition。代码如下:

js 复制代码
series: [
	{
		type: "pictorialBar",
		symbolSize: [45, 25],
		symbolOffset: [0, -10],
		z: 12,
		symbolPosition: "end",
		data: [150, 230, 224, 218, 135, 147, 260],
	},
];

Y 轴背景

Y 轴的背景类型是 bar,这里需要特别注意,这里的 data 和类型为 pictorialBar 的 data 值不同,这里的值要比类型为 bar 的值中的都大,且长度保持一致,代码如下:

js 复制代码
series: [
	{
		type: "bar",
		barWidth: 45,
		barGap: "-100%",
		z: 0,
		itemStyle: {
			color: "#163F7A",
			opacity: 0.7,
		},
		data: [300, 300, 300, 300, 300, 300, 300],
	},
];

Y 轴顶部

Y 轴的顶部同样是一个椭圆,通过 symbolSize 设置椭圆的长轴和短轴、symbolOffset 设置椭圆的偏移量,z 设置不同的层级,这里同样需要设置 symbolPosition,代码如下:

js 复制代码
series: [
	{
		type: "pictorialBar",
		symbolSize: [45, 25],
		symbolOffset: [0, -10],
		z: 12,
		symbolPosition: "end",
		itemStyle: {
			color: "#163F7A",
			opacity: 1,
		},
		data: [300, 300, 300, 300, 300, 300, 300],
	},
];

至此,圆柱形柱状图就完成了,横向的圆柱形柱状图可以通过调整 symbolSize,symbolOffset 来完成。

圆柱形柱状图的本质是基础柱状图和象形柱状图拼接起来的,可以通过调整两者的颜色及透明度来使得圆柱更加立体。

代码地址

stackblitz.com/edit/vitejs...

相关推荐
毕业设计7032 小时前
(免费领源码) 基于微信小程序的预制菜商城的设计与实现25172-java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·python·mysql·微信小程序·pycharm·微信开发者工具·推荐算法
xifangge20252 小时前
AGENTS.md 怎么写?涵盖 Java、Python、Vue、Go 的 8 套开箱即用模板
java·vue.js·python
几何心凉3 小时前
没有万能模型:我用 AiiOnly Token Plan,把多款大模型的长处拼进同一个项目
前端
kyriewen3 小时前
Claude Code 的额度今天缩水了17%——官方公告上写的是"永久提高25%"
前端·ai编程·claude
雪芽蓝域zzs3 小时前
vue解构平铺VS对象包裹
前端·javascript·vue.js
风骏时光牛马4 小时前
从零到实战,完整AI学习路线
前端
三十而立洋5 小时前
深入理解 Monorepo:子包安装依赖
前端·前端工程化
IT_陈寒5 小时前
Java Stream处理大集合,我的内存怎么就炸了
前端·人工智能·后端
Captaincc5 小时前
AI 用量桌面端-桌面宠物自定义指南
前端·人工智能
OpenTiny社区5 小时前
码力全开,智启前端新生态|OpenTiny 登陆华为全联接大会2026
前端·github