echarts柱状図x軸オーバーフロー問題を巧みに解決する方法
6772 ワード
問題のソース
ブロガーは最近,echartsを用いて柱状図を描く際に,x軸の左右にオーバーフローする問題に遭遇した.多くのパートナーもこのような問題に直面していると信じています.そして、最も重要なのはブロガーがネット上を探して、解決策が見つからなかったことです!!!くだらないことは言わないで、直接図を見て、明らかに柱状図x軸の左右の両側があふれていることを見ました.
What Happened?
コード解析
コードを一目見る:
配置は問題ないようですが、
思考検証
言い換えれば、x軸の
再レンダリングされた図を見てください.私たちの問題は完璧に解決され、柱状図は視覚領域に完全に表示されます.
もう一つのケース
もう一つの柱状図x軸オーバーフロー問題を見ると,x軸左側がオーバーフローしていることが明らかになった.コードを見ると、
実は、ここでは
さらにレンダリングされた柱状図を見て、OK、問題ありません.
結論
1.echarts柱状図における
最后に、皆さんの子供の日の楽しみを祈って、好きなら文章にいいねをつけましょう.ありがとうございます.疑问があれば、文章の下に伝言を残してもいいです.
転載先:https://juejin.im/post/5cf1ed9c5188251179766c88
ブロガーは最近,echartsを用いて柱状図を描く際に,x軸の左右にオーバーフローする問題に遭遇した.多くのパートナーもこのような問題に直面していると信じています.そして、最も重要なのはブロガーがネット上を探して、解決策が見つからなかったことです!!!くだらないことは言わないで、直接図を見て、明らかに柱状図x軸の左右の両側があふれていることを見ました.
What Happened?
コード解析
コードを一目見る:
// echarts
const mainChart = echarts.init(document.getElementById('main'));
const series = [
{
data: [[0, 120], [1, 200], [2, 150], [3, 80], [4, 70], [5, 110], [6, 130]],
type: 'bar',
barWidth: 20
},
{
data: [[0, 80], [1, 180], [2, 120], [3, 130], [4, 100], [5, 180], [6, 200]],
type: 'bar',
barWidth: 20
},
{
data: [[0, 80], [1, 180], [2, 120], [3, 130], [4, 100], [5, 180], [6, 200]],
type: 'bar',
barWidth: 20
}];
const option = {
xAxis: {
type: 'value', //
boundaryGap: true //
},
yAxis: {
type: 'value' //
},
series //
};
mainChart.setOption(option); //
配置は問題ないようですが、
xAxis
のboundaryGap
属性値はtrue
で、柱状図表示は問題ないでしょう.echarts githubで検索すると、似たようなissueが見えました.echartsのBugのようです.そこで、ブロガーは自分でechartsの構成項目を研究するしかなく、偶然興味深い属性onZero
を発見した.解析:現在、y軸はx軸の0目盛りに位置しており、x軸の内容が表示されないため、オーバーフローが範囲外になる.思考検証
言い換えれば、x軸の
min
がseries
のdata
の最小値よりも1つ小さいinterval
を設定し、x軸のmax
がseries
のdata
の最大値よりも1つ大きいinterval
を設定し、yAxis
のonZero
の値をfalse
に設定すれば、内容を範囲内に表示することができるはずです.上記のように検証します.const mainChart = echarts.init(document.getElementById('main'));
const series = [
{
data: [[0, 120], [1, 200], [2, 150], [3, 80], [4, 70], [5, 110], [6, 130]],
type: 'bar', //
barWidth: 15 // 15,
},
{
data: [[0, 80], [1, 180], [2, 120], [3, 130], [4, 100], [5, 180], [6, 200]],
type: 'bar',
barWidth: 15
},
{
data: [[0, 80], [1, 180], [2, 120], [3, 130], [4, 100], [5, 180], [6, 200]],
type: 'bar',
barWidth: 15
}];
let xAxisMin = 0; // x
let xAxisMax = 0; // x
let xAxisMinInterval = 0; // x
let xAxisMaxInterval = 0; // x
let xValues = [];
// x data
for (let s of series) {
for (let d of s.data) {
if (!xValues.includes(d[0])) {
xValues.push(d[0]);
}
}
}
xValues.sort((a ,b) => a - b); // x data
xAxisMinInterval = xValues[1] - xValues[0]; //
xAxisMaxInterval = xValues[xValues.length - 1] - xValues[xValues.length - 2]; //
xAxisMin = xValues[0] - xAxisMinInterval; // x
xAxisMax = xValues[xValues.length - 1] + xAxisMaxInterval; // x
const option = {
xAxis: {
type: 'value', //
min: xAxisMin, // x
max: xAxisMax, // x
boundaryGap: true // x
},
yAxis: {
type: 'value',
axisLine: {
onZero: false // y x 0
}
},
series
};
mainChart.setOption(option);
再レンダリングされた図を見てください.私たちの問題は完璧に解決され、柱状図は視覚領域に完全に表示されます.
もう一つのケース
もう一つの柱状図x軸オーバーフロー問題を見ると,x軸左側がオーバーフローしていることが明らかになった.コードを見ると、
xAxis type
の値がcategory
(クラス軸)であることが違います.const mainChart = echarts.init(document.getElementById('main'));
const option = {
xAxis: {
type: 'category', //
data: [0, 1, 2, 3, 4, 5, 6],
boundaryGap: false // x
},
yAxis: {
type: 'value'
},
series: [{
data: [120, 200, 150, 80, 70, 110, 130],
type: 'bar',
barWidth: 30
}]
};
mainChart.setOption(option);
実は、ここでは
boundaryGap
値を誤って設定し、boundaryGap
値をtrueに変更すればよい.xAxis: {
type: 'category', //
data: [0, 1, 2, 3, 4, 5, 6],
boundaryGap: true // x
}
さらにレンダリングされた柱状図を見て、OK、問題ありません.
結論
1.echarts柱状図における
x
軸値がcategory
(クラス軸)の場合、boundaryGap
値はtrue
に設定する必要があり、x軸左オーバーフローの問題を解決することができる. 2.echarts柱状図におけるx
軸値がvalue
(数値軸)である場合、x
軸data
のmin
およびmax
値を算出し、xAxis
のmin
およびmax
属性を設定し、最後にyAxis
のonZero
属性をfalse
に設定することで、x軸両側オーバーフローの問題を解決することができる. 3.私たちが奇妙な問題に直面したとき、よく考えて、考えを変えてみると、通じる案を見つけることができます.最后に、皆さんの子供の日の楽しみを祈って、好きなら文章にいいねをつけましょう.ありがとうございます.疑问があれば、文章の下に伝言を残してもいいです.
転載先:https://juejin.im/post/5cf1ed9c5188251179766c88