Chart 折线图表

Scan me!

SVG折线图表, 可绘制多条折线并配置不同的显示规则。

引入

  1. import { Chart } from 'mand-mobile'
  2. Vue.component(Chart.name, Chart)

代码演示

多折线

Chart 折线图表 - 图2

  1. <template>
  2. <div class="md-example-child md-example-chart-child">
  3. <md-chart
  4. :size="['7rem', '4rem']"
  5. :max="60"
  6. :min="0"
  7. :step="10"
  8. :lines="5"
  9. :format="format"
  10. :labels="['周一', '周二', '周三', '周四', '周五', '周六', '周日']"
  11. :datasets="[
  12. {
  13. color: '#5e64ff',
  14. width: 1,
  15. values: [8, 15, 20, 23, 20, 30, 32, 38, 36, 40, 50, 55, 52]
  16. },
  17. {
  18. width: 1,
  19. values: [10, 20, 25, 30, 28, 35, 38, 42, 40, 40, 45, 42, 45]
  20. }
  21. ]"
  22. />
  23. </div>
  24. </template>
  25. <script>
  26. import {Chart} from 'mand-mobile'
  27. export default {
  28. name: 'chart-demo',
  29. components: {
  30. [Chart.name]: Chart,
  31. },
  32. methods: {
  33. format(val) {
  34. return val + '%'
  35. },
  36. },
  37. }
  38. </script>
  39. <style lang="stylus" scoped>
  40. svg
  41. display block
  42. margin 0 auto
  43. width 7rem
  44. height 4rem
  45. </style>
  46.  

区域填充

Chart 折线图表 - 图3

        <template>
  <div class="md-example-child md-example-chart-child">
    <md-chart
      :size="['7rem', '4rem']"
      :max="60"
      :min="0"
      :step="10"
      :lines="5"
      :format="format"
      :labels="['周一', '周二', '周三', '周四', '周五', '周六', '周日']"
      :datasets="[
        {
          color: '#5e64ff',
          width: 1,
          theme: 'region',
          values: [8, 15, 20, 23, 20, 30, 32, 38, 36, 40, 50, 55, 52]
        }
      ]"
    />
    </div>
</template>

<script>
import {Chart} from 'mand-mobile'

export default {
  name: 'chart-demo',
  components: {
    [Chart.name]: Chart,
  },
  methods: {
    format(val) {
      return val + '%'
    },
  },
}

</script>

<style lang="stylus" scoped>
  svg
    display block
    margin 0 auto
    width 7rem
    height 4rem
</style>

      

渐变折线

Chart 折线图表 - 图4

        <template>
  <div class="md-example-child md-example-chart-child">
    <md-chart
      :size="['7rem', '4rem']"
      :max="60"
      :min="0"
      :step="10"
      :lines="5"
      :format="format"
      :labels="['周一', '周二', '周三', '周四', '周五', '周六', '周日']"
      :datasets="[
        {
          color: '#5e64ff',
          width: 1,
          theme: 'heat',
          values: [8, 15, 20, 23, 20, 30, 32, 38, 36, 40, 50, 55, 52]
        }
      ]"
    />
    </div>
</template>

<script>
import {Chart} from 'mand-mobile'

export default {
  name: 'chart-demo',
  components: {
    [Chart.name]: Chart,
  },
  methods: {
    format(val) {
      return val + '%'
    },
  },
}

</script>

<style lang="stylus" scoped>
  svg
    display block
    margin 0 auto
    width 7rem
    height 4rem
</style>

      

API

Chart Props

属性说明类型默认值必填
size图表绘制区域大小, 元素可为带单位字符串或者纯数字(默认为px)Array[480, 320]可选
max纵坐标最大值number若不填则会自动计算数据中最大值可选
min纵坐标最表最小值, 建议设置为0number若为空则会自动计算数据中最小值可选
lines纵坐标最多画几条线number5可选
step纵坐标递减的单位值number若为空则根据lines, max, min自动计算平均值可选
format纵坐标标签格式化函数Functionval => val可选
labels横坐标的标签Array-必填
datasets数据值, 格式参考下面的说明Array-必填
shift纵坐标偏移量Number0.6可选

datasets

其为对象数组,每个对象定义了一组折线相关属性, 如下说明

{
  color: '#ff5858', // 颜色, 可选, 默认为橘色
  theme: 'heat',    // 主题, 可选heat, region, 默认为空
  width: 1,         // 宽度, 可选, 默认为1
  values: [15, 20]  // 数据数组
}

覆盖样式

默认图表样式如下

.md-chart
  line
    stroke #ccc
    stroke-width 0.5
    stroke-linecap square
  path
    stroke #fa8919
    stroke-width 1
    stroke-linecap butt
  .md-chart-axis-y
    text
      fill #666
      font-size 20px
      text-anchor end
  .md-chart-axis-x
    text
      fill #666
      font-size 20px
      text-anchor middle