vue中画echart图排序

怎么让数据从大到小排序啊,然后把不要的城市去掉


<template>
    <div id="heal" style=":width: 1000px;height: 600px;"></div>
</template>
<script>
import * as echarts from 'echarts'
import axios from 'axios';
export default{
    name:'BarGraph',
    data () {
        return {
            items:''
        }
    },
    mounted(){
        var mychat=echarts.init(document.getElementById('heal'))
        var url='http://localhost:8081/vueData/details'
        var citys=[],heal=[]
        axios.get(url).then((json)=>{
            let data=json.data.filter(item=>item.province==='广东')
            citys=data.map(item=>item.city)
            heal=data.map(item=>item.heal)

        mychat.setOption({
            title:{
                text:'广东最五个最高治愈城市',
                left:'center'
            },
            xAxis:{
                type:'category',
                data:citys.slice(0,5)
            },
            yAxis:{
                type:'value'
            },
            series:{
                type:'bar',
                data:heal.slice(0,5)
            }
        })
        console.log(citys)
        console.log(heal)
        })
    }
}
</script>
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7677929
  • 这篇博客你也可以参考下:vue中echarts图表随父元素的大小改变而改变
  • 除此之外, 这篇博客: 在vue里使用echart,动态请求数据后赋值成功但是就是页面不显示数据解决方法中的 总结 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 这个图表的数据需要在数据库查出每个学院有多少人,所以数据请求是需要时间的。也证明了执行图表渲染的方法并不是响应式的数据,但是vue2是响应式的数据,但我们可以通过监听数据变化来执行图表渲染的方法,此时图表渲染里的数据就会有我们请求返回过来的数据了。


  • 您还可以看一下 jason老师的vue通用后台管理课程中的 echarts表格的基本使用小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    回答:

    可以通过对数据进行处理,将需要展示的城市的数据筛选出来并排序,然后再将处理后的数据传入图表中进行展示。

    具体步骤如下:

    1. 将需要展示的城市的数据筛选出来,并按照数据值从大到小进行排序,可使用Array的filter和sort方法实现。示例代码如下:
    let data = [
      {name: '上海', value: 100},
      {name: '北京', value: 80},
      {name: '广州', value: 50},
      {name: '深圳', value: 60},
      {name: '南京', value: 30},
    ]
    
    let showData = data.filter(item => {
      // 在这里根据需要展示的城市进行筛选,这里展示值大于等于60的城市
      return item.value >= 60
    }).sort((a, b) => {
      // 按照值从大到小排序
      return b.value - a.value
    })
    
    console.log(showData)  // 输出 [{name: '上海', value: 100}, {name: '北京', value: 80}, {name: '深圳', value: 60}]
    
    1. 将处理后的数据传入echart中进行展示。可以将数据通过props传入子组件中,然后在watch中监听数据的变化,只有数据变化时才进行图表的初始化和渲染。示例代码如下:
    <template>
      <div :class="className" :style="{height:height,width:width}" ref="chart"></div>
    </template>
    <script>
    import echarts from 'echarts'
    export default {
      props: {
        data: {
          type: Array,
          default() {
            return []
          }
        }
      },
      data() {
        return {
          chart: null
        }
      },
      watch: {
        data: {
          handler(newval, oldval) {
            if(newval && newval.length) {
              this.initChart()
            }
            return newval
          },
          deep: true
        }
      },
      mounted () {
        window.addEventListener("resize", () => {
          if (this.chart) {
            this.chart.resize()
          }
        });
      },
      methods: {
        initChart() {
          if(!this.chart) {
            this.chart = echarts.init(this.$refs.chart)
          }
          this.chart.setOption({
            // 在这里配置图表的option参数可根据实际情况调整
            xAxis: {
              type: 'category',
              data: this.data.map(item => item.name)
            },
            yAxis: {
              type: 'value'
            },
            series: [{
              data: this.data.map(item => item.value),
              type: 'bar'
            }]
          })
        }
      }
    }
    </script>
    

    在父组件中使用子组件,并传入需要展示的数据即可,示例代码如下:

    <template>
      <div>
        <echart-chart :data="showData" />
      </div>
    </template>
    <script>
    import EchartChart from './components/EchartChart'
    export default {
      components: {
        EchartChart
      },
      data() {
        return {
          data: [
            {name: '上海', value: 100},
            {name: '北京', value: 80},
            {name: '广州', value: 50},
            {name: '深圳', value: 60},
            {name: '南京', value: 30},
          ]
        }
      },
      computed: {
        showData() {
          // 在这里获取需要展示的数据
          return this.data.filter(item => {
            // 在这里根据需要展示的城市进行筛选这里展示值大于等于60的城市
            return item.value >= 60
          }).sort((a, b) => {
            // 按照值从大到小排序
            return b.value - a.value
          })
        }
      }
    }
    </script>
    

sort方法排序,然后在进行数据筛选 去掉不要的数据

就是对 data进行操作,你可以先 用filter过滤 。然后再进行排序