AnalysisSystemForRadionucli.../src/utils/chartHelper.js

96 lines
2.1 KiB
JavaScript
Raw Normal View History

/**
* 根据位置获取这个点在图表的哪个轴线上
* @param offsetX
* @param offsetY
*/
export function getXAxisAndYAxisByPosition(chart, offsetX, offsetY, seriesIndex = 0) {
const pointInPixel = [offsetX, offsetY]
if (
chart.containPixel(
{
seriesIndex: 0
},
pointInPixel
)
) {
const [xAxis, yAxis] = chart.convertFromPixel({ seriesIndex }, pointInPixel)
return [xAxis, yAxis]
}
return null
}
/**
* 将图表导出为图片
* @param {import("echarts").ECharts} chartInstance
* @param {'png' | 'jpeg' | 'svg'} type
*/
export function exportEchartImg(chartInstance, type = 'png', backgroundColor = '#022024') {
const dataURL = chartInstance.getDataURL({
type,
pixelRatio: 2,
backgroundColor
});
const link = document.createElement('a')
link.style.display = 'none'
link.href = dataURL
link.setAttribute('download', 'export.png')
document.body.appendChild(link)
link.click()
document.body.removeChild(link) //下载完成移除元素
2023-08-08 19:11:37 +08:00
}
/**
* 按份数分割轴线
* @param {Number} max
* @param {Number} min
* @param {Number} cnt
* @param {Number} maxBoundaryGap
*/
export function splitAxis(max, min, cnt, maxBoundaryGap = 1.1) {
const _min = Math.floor(min)
const interval = Math.ceil((Math.ceil(max * maxBoundaryGap) - _min) / cnt)
const _max = _min + interval * cnt
return {
min: _min,
interval,
max: _max
}
}
/**
* 构建线形series
* @param {*} name
* @param {*} data
* @param {*} color
* @param {*} extra
* @returns
*/
export function buildLineSeries(name, data, color, extra = {}) {
return {
name,
type: 'line',
data,
itemStyle: {
color
},
lineStyle: {
width: 1
},
symbol: 'none',
symbolSize: 1,
emphasis: {
disabled: true
},
animation: false,
...extra
}
}
// 根据name查找series
export function findSeriesByName(series, seriesName) {
return series.find(item => item.name == seriesName)
}