ECharts柱状图x轴出现文字被遮挡显示不出来的几种解决方法
本周主要是配合主体单位做好大屏的数据展示,以保证领导视察的时候能够看到一些实实在在的内容,因此主要看的是农业大数据,大屏展示这部分的内容。涉及到ECharts图表的一些修改
刚好我们遇到的是x轴出现文字被遮挡显示不出来的问题,百度也找了些资料,并不能很好的检索出我想要的结果。于是觉得有必要写这一篇,哪怕只增加点搜索素材呢
解决思路
参考搜索的结果、实践的结果,以及客户的建议,解决思路如下
- 全部横着显示出来
- 横向上下交替显示(由于我这边空间小,这个办法不太合适)
- 把文本显示到柱状图上(不是top,而是在中间,在空间意义上的“上”面)
- 用箭头或者指向线标识(客户的建议,由于不是太了解实现的可行性,再加上空间比较狭小,该方案未采取)
- 在x轴斜着摆放显示(由于空间不足,未采取,设置rotate参数即可,示例中也有被注释的代码)
结合实际情况,我们选择了上述的1和3.
方法1 代码如下:
axisLabel: {
show: true,
interval:0,
//rotate:40,
formatter:function(value,index)
{
if (index % 2 != 0) {
return ' ' + value;
}
else {
return value;
}
},
textStyle: {
color: '#fff'
}
},
方法3 代码如下:
series: [
{
name: '存栏数',
type: 'bar',
barGap: 0.2,
data: in_count,
barWidth: 30,
label: {
show: true, // 显示标签
position: 'insideBottom', // 标签位置:内部
formatter: function(params) // 标签格式器:显示数据值
{
let arr = params.name.split('');
let rs = '';
for(var i=0;i<arr.length;i++){
rs+=arr[i]+"\n";
}
return rs;
}
}
}
]
完整示例代码
async getPigeonStockData() {
const { data } = await getPigeonStockData(this.organization.id);
let result = data.data;
let pigeonName = [];
let in_count = [];
let out_count = [];
let rest_count = [];
if(result.length > 0) {
result.forEach(item => {
pigeonName.push(item.name);
in_count.push(item.in_count);
out_count.push(item.out_count);
rest_count.push(item.rest_count);
})
}
//种鸽数据 树状图
let chartDom = document.getElementById('pigeonData');
let myChart = echarts.init(chartDom);
myChart.clear()
myChart.setOption({
title: {
textStyle: {
color: '#36dcef',
fontSize: 14
}
},
color: ['#06b78e', '#92590f', '#d6056e'],
tooltip: {
trigger: 'axis'
},
grid: {
top: 30,
left: 55,
right: 10,
bottom: 20
},
legend: {
itemHeight: 10,
itemWidth: 10,
data: [
{ name: '存栏数', icon: 'circle', textStyle: { color: '#fff' }}
],
right: 15,
top: 0
},
toolbox: {
show: true
},
calculable: true,
xAxis: [
{
type: 'category',
data: pigeonName,
// data: ['岳阳王鸽', '石歧鸽', '天成鸽', '米玛斯'],
axisLabel: {
show: true,
interval:0,
//rotate:40,
formatter:function(value,index)
{
if (index % 2 != 0) {
return ' ' + value;
}
else {
return value;
}
},
textStyle: {
color: '#fff'
}
},
splitLine: { show: false },
axisLine: {
lineStyle: {
color: '#6e7079',
width: 1
}
}
}
],
yAxis: [
{
type: 'value',
name: "单位(对)",
// max: 100,
min: 0,
// 是否支持y轴不从零开始,而是从最小的那个值开始
scale: true,
splitNumber: 5,
axisLabel: {
show: true,
interval: 'auto',
formatter: '{value}',
textStyle: {
color: '#fff'
}
},
splitLine: { show: false },
axisLine: {
lineStyle: {
color: '#6e7079',
width: 1
}
}
}
],
series: [
{
name: '存栏数',
type: 'bar',
barGap: 0.2,
data: in_count,
barWidth: 30,
label: {
show: true, // 显示标签
position: 'insideBottom', // 标签位置:内部
formatter: function(params) // 标签格式器:显示数据值
{
// console.log("par",params);
let arr = params.name.split('');
let rs = '';
for(var i=0;i<arr.length;i++){
rs+=arr[i]+"\n";
}
return rs;
}
}
}
]
});
结束语
虽然要迎合领导检查,心里压力挺大的,好在前面的准备工作做得还算充足,改起来也还比较快。图表的展示,大屏数据的逻辑性等都还算不错,对演示的人员来说也还比较好介绍。也希望能够尽快顺利完成验收,回了款,我们的工资也有了着落了。
欢迎大家多多关注和支持! 我们一直会保持不定期更新,绝对不会放弃,让我们都遇到更好的自己!