echarts实现金价可视化大屏(项目实战)

前言

最近由于某种原因参加了一个比赛,三天时间肝出来一个可视化大屏项目(无后端),代码已开源,但是还在比赛期间不知道会不会影响到

技术使用:html,css,js,echarts,本项目需要前端基础

项目已使用github进行部署(github可部署静态网站,我并没有做实时更新的功能)

可直接点击链接访问:GoldScope——金价可视化大屏

开源地址:GitHub - Outlier9/GoldScope: 金价可视化大屏

随后等比赛差不多结束的时候会出保姆级视频来教小白怎么做,也可以现在加本人vx咨询,视频会放到本人的B站账号上,敬请期待

项目代码

1.词云图(用散点图实现)

// 词云图(用散点图实现)——进价相关词云——左1
(function () {
  // 1.实例化对象
  var myChart = echarts.init(document.querySelector(".bar .chart"));
  // 2.指定配置项和数据

  option = {
    grid: {
      left: '10%',
      top: 5,
      right: '10%',
      bottom: 5,
    },
    itemStyle: {
      color: 'rgba(255,255,255,0)',
    },
    tooltip: {
      show: true,
      trigger: 'item',
    },
    series: [
      {
        type: 'graph',
        layout: 'force', //引导布局
        label: {
          show: true,
          color: 'auto',
        },
        data: [{ name: '金价', size: 20, color: '#3B8BFF', x: 30, y: 22 },
        { name: '足金', size: 16, color: '#70aeb4', x: -120, y: 80 },
        { name: '累计涨幅', size: 12, color: '#D1C4E9', x: 80, y: 80 },
        { name: '暴涨', size: 18, color: '#559399', x: 104, y: -16 },
        { name: '外汇黄金', size: 22, color: '#FFECB3', x: 50, y: 54 },
        { name: '黄金产品', size: 17, color: '#C36D6D', x: 120, y: 100 },
        { name: '降息预期', size: 12, color: '#77BFFF', x: 164, y: 48 },
        { name: '美元利率', size: 16, color: '#CE93D8', x: 194, y: 75 },
        { name: '黄金股', size: 20, color: '#FCD67A', x: 136, y: 20 },
        { name: '去美元化', size: 10, color: '#CE93D8', x: 112, y: 124 }].concat( // 使用 concat 来合并新旧数据点
        // 新的数据点
        {name: '通货膨胀',size: 25,color: '#C36D6D',x: -20, y: 87,label: {color: '#FF5733',fontSize: 15,},fixed: true},
        {name: '金价高位',size: 15,color: '#D7CCC8',x: 212, y: -2,label: {color: '#FF5733',fontSize: 15,},fixed: true},
        {name: '央行购金',size: 8,color: '#A7FFEB',x: 6, y: 169,label: {color: '#FF5733',fontSize: 15,},fixed: true},
        {name: '避险需求',size: 12,color: '#EDE7F6',x: 178, y: 163,label: {color: '#FF5733',fontSize: 15,},fixed: true},
        {name: '经济衰退',size: 15,color: '#FFCDD2',x: 189, y: 126,label: {color: '#FF5733',fontSize: 15,},fixed: true},
        {name: '美联储政策',size: 18,color: '#F0E68C',x: 25, y: 128,label: {color: '#FF5733',fontSize: 15,},fixed: true},
        {name: '黄金牛市',size: 14,color: '#F8BBD0',x: -97, y: 22,label: {color: '#FF5733',fontSize: 15,},fixed: true},
        {name: '保值增值',size: 17,color: '#FFECB3',x: -62, y: -12,label: {color: '#FF5733',fontSize: 15,},fixed: true},
        {name: '黄金零售价',size: 20,color: '#A5D6A7',x: -95, y: 120,label: {color: '#FF5733',fontSize: 15,},fixed: true},
        {name: '金价回落',size: 12,color: '#B3E5FC',x: -55, y: 51,label: {color: '#FF5733',fontSize: 15,},fixed: true},
        {name: '黄金期货',size: 18,color: '#F1EAE0',x: 38, y: -5,label: {color: '#FF5733',fontSize: 15,},fixed: true},
        {name: '波动风险',size: 14,color: '#D1C4E9',x: -80, y: 162,label: {color: '#FF5733',fontSize: 15,},fixed: true},
        {name: '指数上升',size: 15,color: '#B2DFDB',x: 93, y: 155,label: {color: '#FF5733',fontSize: 15,},fixed: true}
        // 如果有更多新数据点,继续添加
      ).map((item) => ({
          name: item.name,
          //   draggable: false,
          itemStyle: {
            color: 'rgba(255,255,255,0)',
          },
          value: item.val,
          x: item.x,
          y: item.y,
          fixed: true,
          label: {
            color: item.color,
            fontSize: item.size,
          },
        })),
      },
    ],
  };

  // 3.把配置项给实例对象
  myChart.setOption(option);

  // 4.让图表随屏幕自适应
  window.addEventListener('resize', function () {
    myChart.resize();
  })
})();

2.金价变动影响因素分析(雷达图)

官网原图链接:Examples - Apache ECharts

// 雷达图——金价变动影响因素分析——右1
(function () {
  // 1.实例化对象
  var myChart = echarts.init(document.querySelector(".bar2 .chart"));

  // 2.指定配置项和数据
  option = {
    color: ['#67F9D8', '#FFE434', '#56A3F1', '#FF917C'],
    // title: {
    //   text: '影响因素分析'
    // },
    legend: {
      textStyle: {
        color: 'lightblue' // 这里将图例文本颜色设置为红色
      }
    },
    radar: [
      {
        indicator: [
          { text: '通货膨胀与利\n率的对比关系' },
          { text: '政治\n局势' },
          { text: '供求关系' },
          { text: '\n\n外汇价格变动' },
          { text: '\n\n\n世界经济周\n期发展趋势' }
        ],
        center: ['25%', '60%'],
        radius: 50,
        startAngle: 90,
        splitNumber: 4,
        shape: 'circle',
        axisName: {
          formatter: '{value}',
          color: '#428BD4'
        },
        splitArea: {
          areaStyle: {
            color: ['#77EADF', '#26C3BE', '#64AFE9', '#428BD4'],
            shadowColor: 'rgba(0, 0, 0, 0.2)',
            shadowBlur: 10
          }
        },
        axisLine: {
          lineStyle: {
            color: 'rgba(211, 253, 250, 0.8)'
          }
        },
        splitLine: {
          lineStyle: {
            color: 'rgba(211, 253, 250, 0.8)'
          }
        }
      },
      {
        indicator: [
          { text: '黄金TD\n', max: 600 },
          { text: '水贝黄金', max: 600 },
          { text: '铂金99', max: 600 },
          { text: '金条价格', max: 600 },
          { text: '18K\n金', max: 600 },
          //{ text: '国内银价', max: 72 }
        ],
        center: ['75%', '58%'],
        radius: 50,
        axisName: {
          color: 'rgba(86, 163,241)',
          borderRadius: 3,
          padding: [3, 5]
        }
      }
    ],
    series: [
      {
        type: 'radar',
        emphasis: {
          lineStyle: {
            width: 4
          }
        },
        data: [
          {
            value: [60, 45, 90, 45, 60],
            name: '影响占比',
            // label: {
            //   show: true
            // },
            areaStyle: {
              color: 'rgba(255, 228, 52, 0.6)'
            }
          },
          {
            //value: [60, 5, 0.3, -100, 1500],
            //name: 'Data B',
            // areaStyle: {
            //   color: 'rgba(255, 228, 52, 0.6)'
            // }
          }
        ]
      },
      {
        type: 'radar',
        radarIndex: 1,
        data: [
          {
            value: [565.86, 576, 223.9, 569, 424.39],
            //name: 'Data C',
            symbol: 'rect',
            symbolSize: 12,
            lineStyle: {
              type: 'dashed'
            },
            label: {
              show: true,
              formatter: function (params) {
                return params.value;
              }
            }
          },
          {
            value: [565.86, 576, 223.9, 569, 424.39],
            //name: 'Data D',
            areaStyle: {
              color: new echarts.graphic.RadialGradient(0.1, 0.6, 1, [
                {
                  color: 'rgba(255, 145, 124, 0.1)',
                  offset: 0
                },
                {
                  color: 'rgba(255, 145, 124, 0.9)',
                  offset: 1
                }
              ])
            }
          }
        ]
      }
    ]
  };
  // 3.把配置项给实例对象
  myChart.setOption(option);

  // 4.让图表随屏幕自适应
  window.addEventListener('resize', function () {
    myChart.resize();
  })
})();

3.金店价格比较(柱状图)

官网原图链接:Examples - Apache ECharts

// 柱状图——金店价格比较——左2
(function () {
  var myChart = echarts.init(document.querySelector(".line .chart"));
  const builderJson = {
    all: 1000,
    charts: {
      吉盟首饰: 733,
      金象珠宝: 721,
      东祥金店: 731,
      星光达珠宝: 730,
      百泰黄金: 758,
      福泰珠宝: 703,
      宝庆银楼: 719,
      扬州金店: 640,
      千禧之星: 730,
      潮宏基: 733,
      常州金店: 690,
      金兰首饰: 730,
      周大生: 733,
      亚一金店: 730,
      嘉华珠宝: 733,
      萃华金店: 728,
      太阳金店: 659,
      城隍珠宝: 720,
      齐鲁金店: 636,
      周六福: 733,
      六福: 733,
      周生生: 731,
      金至尊: 733,
      菜百: 696,
      老庙: 730,
      老凤祥: 732,
      周大福: 733
    },
    ie: 9743
  };
  const downloadJson = {
    'echarts.min.js': 17365,
    'echarts.simple.min.js': 4079,
    'echarts.common.min.js': 6929,
    'echarts.js': 14890
  };
  const themeJson = {
    'dark.js': 1594,
    'infographic.js': 925,
    'shine.js': 1608,
    'roma.js': 721,
    'macarons.js': 2179,
    'vintage.js': 1982
  };
  const waterMarkText = 'ECHARTS';
  const canvas = document.createElement('canvas');
  const ctx = canvas.getContext('2d');
  canvas.width = canvas.height = 100;
  ctx.textAlign = 'center';
  ctx.textBaseline = 'middle';
  ctx.globalAlpha = 0.08;
  ctx.font = '20px Microsoft Yahei';
  ctx.translate(50, 50);
  ctx.rotate(-Math.PI / 4);
  ctx.fillText(waterMarkText, 0, 0);
  option = {
    dataZoom: [
      {
        type: 'inside',
        orient: 'vertical',
        yAxisIndex: 0,
        start: 0,
        end: 200,
        show: true,
        filterMode: 'none',

      },
      {
        type: 'slider', // 指定为 slider 类型
        orient: 'vertical', // 设置为垂直方向的滑动条
        yAxisIndex: 0, // 应用在 yAxis 上
        start: 0, // 滑动条的起始位置
        end: 1000, // 滑动条的结束位置
        show: true, // 显示滑动条
        minValueSpan: 0, // 最小值和最大值之间的最小距离
        width: 20,
        handleStyle: {
          color: '#389AA9'  // 滑动条手柄颜色
        },
        textStyle: {
          color: 'white', // 标签文本的颜色
          fontSize: 12, // 标签文本的字体大小
        }
      }
    ],

    backgroundColor: {
      type: 'pattern',
      image: canvas,
      repeat: 'repeat'
    },
    tooltip: {},
    grid: [
      {
        top: 0,
        width: '100%',
        bottom: '4%',
        left: 0,
        containLabel: true
      }
    ],
    xAxis: [
      {
        type: 'value',
        max: builderJson.all,
        splitLine: {
          show: false
        },
        axisLabel: {
          show: false // 隐藏刻度标签
        },
        axisTick: {
          show: false // 隐藏刻度
        }
      }
    ],
    yAxis: [
      {
        type: 'category',
        data: Object.keys(builderJson.charts),
        axisLabel: {
          interval: 0, color: 'lightblue', fontSize: 6,
          rotate: 30
        },
        splitLine: {
          show: false
        }
      }
    ],
    series: [
      {
        type: 'bar',
        stack: 'chart',
        itemStyle: {
          color: '#389AA9'
        },
        z: 3,
        label: {
          position: 'right',
          show: true,
          color: 'lightblue',
          fontSize: 8
        },
        data: Object.keys(builderJson.charts).map(function (key) {
          return builderJson.charts[key];
        })
      },
      {
        type: 'bar',
        stack: 'chart',
        silent: true,
        itemStyle: {
          color: '#4C5C98'
        },
        data: Object.keys(builderJson.charts).map(function (key) {
          return builderJson.all - builderJson.charts[key];
        })
      },

    ]
  };

  myChart.setOption(option);

  // 4.让图表随屏幕自适应
  window.addEventListener('resize', function () {
    myChart.resize();
  })
})();

4.金价与主要货币汇率关系(渐变折线图)

官网原图链接:Examples - Apache ECharts

// 渐变折线图——金价与主要货币汇率关系——右2
(function () {
  var myChart = echarts.init(document.querySelector('.line2 .chart'));

  // prettier-ignore
  const data = [["2016-01", 0.18], ["2016-02", 0.23], ["2016-03", 0.23], ["2016-04", 0.23], ["2016-05", 0.20], ["2016-06", 0.19], ["2016-07", 0.18], ["2016-08", 0.13], ["2016-09", 0.19], ["2016-10", 0.21], ["2016-11", 0.23], ["2016-12", 0.21], ["2017-01", 0.25], ["2017-02", 0.08], ["2017-03", 0.09], ["2017-04", 0.12], ["2017-05", 0.15], ["2017-06", 0.15], ["2017-07", 0.14], ["2017-08", 0.18], ["2017-09", 0.16], ["2017-10", 0.19], ["2017-11", 0.17], ["2017-12", 0.18], ["2018-01", 0.15], ["2018-02", 0.29], ["2018-03", 0.21], ["2018-04", 0.18], ["2018-05", 0.18], ["2018-06", 0.19], ["2018-07", 0.21], ["2018-08", 0.23], ["2018-09", 0.25], ["2018-10", 0.25], ["2018-11", 0.22], ["2018-12", 0.19], ["2019-01", 0.17], ["2019-02", 0.15], ["2019-03", 0.23], ["2019-04", 0.25], ["2019-05", 0.27], ["2019-06", 0.27]];
  const dateList = data.map(function (item) {
    return item[0];
  });
  const valueList = data.map(function (item) {
    return item[1];
  });
  option = {
    // Make gradient line here
    visualMap: [
      {
        show: false,
        type: 'continuous',
        seriesIndex: 0,
        min: 0,
        max: 0.5
      }
    ],

    tooltip: {
      trigger: 'axis'
    },
    xAxis: [
      {
        axisLabel: {
          color: "lightblue"
        },
        data: dateList
      }
    ],
    yAxis: [
      {
        axisLabel: {
          color: "lightblue"
        }
      }
    ],
    grid: [
      {
        top:'10%',
        bottom: '15%'
      }
    ],
    series: [
      {
        type: 'line',
        showSymbol: false,
        data: valueList
      }
    ]
  };

  myChart.setOption(option);

  window.addEventListener('resize', function () {
    myChart.resize();
  })
})();

5.金价的季节性波动(大数据量面积图)

官网原图链接:Examples - Apache ECharts

// 大数据量面积图——金价的季节性波动——左3
(function () {
  var myChart = echarts.init(document.querySelector(".pie .chart"));
  let date = [];
  let startDate = new Date(2023, 3, 24); // 设置起始日期为2023年4月24日
  let endDate = new Date(2024, 3, 19); // 设置结束日期为2024年4月19日(注意月份是从0开始计数的)

  // 循环从起始日期到结束日期,生成日期数组
  while (startDate <= endDate) {
    // 使用 Date 对象的 toLocaleDateString 方法来格式化日期
    date.push(startDate.toLocaleDateString('default', { year: 'numeric', month: '2-digit', day: '2-digit' }));
    // 将日期推进一天
    startDate.setDate(startDate.getDate() + 1);
  }

  console.log(date);
  let data = [13642.85, 13778.84, 13876.78, 13747.05, 13702.99, 13747.05, 13702.99, 13702.99, 13791.81, 13922.44, 14121.72, 13825.36, 14121.72, 13825.36, 13825.36, 14050.00, 14124.58, 14008.84, 14055.07, 14008.84, 14055.07, 14041.94, 14005.38, 13815.67, 13795.61, 13752.58, 13795.61, 13752.58, 13858.70, 13892.51, 13910.26, 13791.66, 13760.16, 13791.66, 13760.16, 13760.16, 13823.35, 13971.40, 14009.20, 13916.30, 14009.20, 13916.30, 13918.02, 13928.77, 14040.19, 13984.64, 13980.86, 13984.64, 13980.86, 13955.23, 13993.70, 13980.06, 13920.06, 13966.75, 13920.06, 13966.75, 13975.89, 13863.53, 13825.20, 13785.00, 13861.46, 13785.00, 13861.46, 13918.53, 13860.79, 13820.25, 13764.50, 13871.08, 13764.50, 13871.08, 13969.94, 13910.26, 13954.67, 13838.04, 13885.73, 13838.04, 13885.73, 13896.65, 13943.39, 13990.51, 13999.67, 13942.19, 13999.67, 13942.19, 13982.73, 14191.96, 14273.29, 14193.14, 14092.99, 14193.14, 14092.99, 14081.23, 13978.07, 14060.42, 13940.57, 13968.00, 13940.57, 13968.00, 14075.76, 13974.47, 13984.83, 13872.03, 13928.34, 13872.03, 13928.34, 13892.59, 13905.53, 13863.03, 13866.21, 13867.90, 13866.21, 13867.90, 13814.75, 13875.45, 13898.37, 13814.34, 13788.60, 13814.34, 13788.60, 13769.64, 13808.37, 13950.53, 13956.12, 13960.16, 13956.12, 13960.16, 13960.16, 14051.75, 14188.68, 14098.77, 14101.20, 14098.77, 14101.20, 14091.39, 14067.27, 14063.64, 14059.97, 14157.96, 14059.97, 14157.96, 14031.73, 13918.48, 13916.39, 13844.17, 14024.21, 13844.17, 14024.21, 14025.20, 14119.74, 14159.83, 13994.44, 14066.76, 13994.44, 14066.76, 14076.04, 13942.82, 13792.95, 13673.17, 13650.91, 13673.17, 13650.91, 13377.60, 13300.24, 13274.70, 13278.35, 13278.35, 13278.35, 13278.35, 13458.49, 13544.40, 13661.62, 13688.63, 13948.04, 13688.63, 13948.04, 14022.86, 14100.54, 14306.73, 14282.40, 14546.47, 14282.40, 14546.47, 14432.30, 14356.83, 14512.20, 14450.88, 14509.28, 14450.88, 14509.28, 14605.05, 14610.32, 14535.71, 14508.65, 14536.35, 14508.65, 14536.35, 14427.05, 14274.68, 14253.88, 14259.44, 14153.27, 14259.44, 14153.27, 14076.92, 14280.54, 14190.49, 14341.27, 14286.54, 14341.27, 14286.54, 14109.67, 14328.53, 14312.05, 14244.09, 14304.28, 14244.09, 14304.28, 14404.00, 14456.05, 14598.64, 14523.95, 14583.50, 14523.95, 14583.50, 14636.36, 14459.87, 14508.21, 14489.70, 14398.48, 14489.70, 14398.48, 14256.80, 14216.56, 14216.11, 14548.18, 14469.37, 14548.18, 14469.37, 14431.98, 14531.35, 14531.18, 14573.25, 14573.25, 14573.25, 14573.25, 14573.25, 14573.25, 14778.00, 14775.35, 14775.35, 14775.35, 14775.35, 14775.35, 14769.13, 14602.04, 14603.99, 14696.73, 14603.99, 14696.73, 14485.54, 14587.99, 14537.63, 14544.95, 14735.93, 14544.95, 14735.93, 14700.86, 14649.61, 14477.16, 14487.59, 14592.98, 14487.59, 14592.98, 14540.56, 14508.60, 14492.65, 14519.19, 14487.22, 14519.19, 14487.22, 14521.55, 14664.81, 14719.54, 14690.23, 14632.66, 14690.23, 14632.66, 14526.57, 14601.66, 14688.90, 14599.79, 14556.25, 14599.79, 14556.25, 14496.54, 14359.14, 14280.02, 14416.33, 14372.09, 14416.33, 14372.09, 14519.13, 14592.68, 14573.35, 14560.66, 14589.33, 14560.66, 14589.33, 14591.18, 14648.09, 14629.58, 14722.82, 14752.00, 14722.82, 14752.00, 15103.65, 15360.42, 15423.16, 15488.90, 15601.59, 15488.90, 15601.59, 15658.90, 15520.80, 15582.34, 15545.44, 15569.27, 15545.44, 15569.27, 15535.23, 15513.99, 15531.27, 15626.51, 15699.37, 15626.51, 15699.37, 15696.40, 15732.05, 15847.08, 16002.44, 16002.44, 16002.44, 16002.44, 16002.44, 16379.13, 16492.55, 16589.11, 16625.64, 16589.11, 16625.64, 16777.50, 17040.02, 16877.86, 16976.41, 17380.62, 16976.41, 17380.62, 16002.44, 16379.13, 16492.55, 16589.11, 16625.64,16625.64]

  option = {
    tooltip: {
      trigger: 'axis',
      position: function (pos, params, el, elRect, size) {
        // pos 为当前鼠标的坐标
        // params 为 tooltip 的参数,如当前的数据点
        // el 为当前鼠标悬浮的 DOM 元素
        // elRect 为 el 的布局位置
        // size 为 ECharts 图表的尺寸
        // 以下代码将 tooltip 显示在鼠标的上方
        var tooltipTop = pos[1] - 60; // 距离鼠标指针 30 像素的上方
        return [pos[0], tooltipTop];
      }
    },
    grid: [
      {
        top: 0,
        width: '99%',
        bottom: '4%',
        left: 0,
        containLabel: true
      }
    ],
    xAxis: {
      type: 'category',
      boundaryGap: false,
      data: date,
      axisLabel: {
        color: "#F8E89F",
        fontSize: 6
      },
    },
    yAxis: {
      type: 'value',
      min: 12000, // 设置 y 轴的最小值为 10000
      max: 18000, // 设置 y 轴的最大值为 15000
      boundaryGap: [0, '100%'],
      axisLabel: {
        interval: 0, color: '#F8E89F',
        fontSize: 6,
        rotate: 10
      },
    },
    dataZoom: [

      {
        type: 'slider', // 指定为 slider 类型
        xAxisIndex: 0, // 应用在 xAxis 上
        start: 0, // 滑动条的起始位置
        end: 50, // 滑动条的结束位置
        show: true, // 显示滑动条
        minValueSpan: 0, // 最小值和最大值之间的最小距离
        height: 17,
        handleStyle: {
          color: '#389AA9'  // 滑动条手柄颜色
        },
        textStyle: {
          color: 'white', // 标签文本的颜色
          fontSize: 12, // 标签文本的字体大小
        }
      }
    ],
    series: [
      {
        name: 'Fake Data',
        type: 'line',
        symbol: 'none',
        sampling: 'lttb',
        itemStyle: {
          color: 'rgb(255, 70, 131)'
        },
        areaStyle: {
          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
            {
              offset: 0,
              color: 'rgb(255, 158, 68)'
            },
            {
              offset: 1,
              color: 'rgb(255, 70, 131)'
            }
          ])
        },
        data: data
      }
    ]
  };

  myChart.setOption(option);
  window.addEventListener('resize', function () {
    myChart.resize();
  })
})();

6.跌涨情况(虚线柱状图)

官网原图链接:Examples - Apache ECharts

// 虚线柱状图——跌涨情况——右3
(function () {
  var myChart = echarts.init(document.querySelector('.pie2 .chart'));
  // Generate data
  let category = [];
  let dottedBase = +new Date() - 30 * 24 * 3600 * 1000;
  let lineData = [504.72, 518.26, 508.38, 512.05, 512.98, 506.01, 516.00, 516.00, 516.00, 529.86, 529.86, 531.00, 531.00, 531.00, 531.00, 531.00, 539.40, 553.70, 544.50, 555.85, 559.09, 559.09, 559.09, 566.36, 560.36, 564.26, 564.50, 563.17, 563.17, 563.17];
  let barData = [518.26, 508.38, 512.05, 512.98, 506.01, 516.00, 516.00, 516.00, 529.86, 529.86, 531.00, 531.00, 531.00, 531.00, 531.00, 539.40, 553.70, 544.50, 555.85, 559.09, 559.09, 559.09, 566.36, 560.36, 564.26, 564.50, 563.17, 563.17, 563.17, 568.14];
  for (let i = 0; i < 20; i++) {
    let date = new Date((dottedBase += 3600 * 24 * 1000));
    category.push(
      [date.getFullYear(), date.getMonth() + 1, date.getDate()].join('-')
    );
    let b = Math.random() * 200;
    let d = Math.random() * 200;
    barData.push(b);
    lineData.push(d + b);
  }
  // option
  option = {
    backgroundColor: '#0f375f',
    tooltip: {
      trigger: 'axis',
      axisPointer: {
        type: 'shadow'
      }
    },
    legend: {
      data: ['line', 'bar'],
      textStyle: {
        color: '#ccc'
      }
    },
    grid: [
      {
        top: 15,
        width: '100%',
        bottom: '4%',
        left: 0,
        containLabel: true
      }
    ],
    xAxis: {
      data: category,
      axisLine: {
        lineStyle: {
          color: '#ccc'
        }
      }
    },
    yAxis: {
      splitLine: { show: false },
      min: 500,
      max: 560,
      axisLine: {
        lineStyle: {
          color: '#ccc'
        }
      }
    },
    series: [
      {
        name: '昨日',
        type: 'line',
        smooth: true,
        showAllSymbol: true,
        symbol: 'emptyCircle',
        symbolSize: 5,
        data: lineData
      },
      {
        name: '今日',
        type: 'bar',
        barWidth: 6,
        itemStyle: {
          borderRadius: 5,
          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
            { offset: 0, color: '#14c8d4' },
            { offset: 1, color: '#43eec6' }
          ])
        },
        data: barData
      },
      {
        name: '跌涨幅',
        type: 'pictorialBar',
        symbol: 'rect',
        itemStyle: {
          color: '#0f496f'
        },
        symbolRepeat: true,
        symbolSize: [12, 4],
        symbolMargin: 1,
        z: -12,
        data: lineData.map((lineValue, index) => {
          // 计算差值
          let difference = lineValue - barData[index];
          // 计算差值百分比,并保留两位小数
          let percentageDifference = ((lineValue - barData[index]) / barData[index] * 100).toFixed(2) + '%';
          // 自定义提示框显示的格式
          return {
            value: parseFloat(percentageDifference), // 将格式化的字符串转换为浮点数
            tooltip: {
              formatter: params => {
                // 由于我们已经在data中定义了完整的百分比字符串,这里可以直接使用params.value
                return `${params.name}<br />涨幅: ${params.value}`;
              }
            }
          };
        })
      }
    ]
  };

  myChart.setOption(option);
  window.addEventListener('resize', function () {
    myChart.resize();
  })
})();

7.上证指数

官网原图链接:Examples - Apache ECharts

// 上证指数——上证指数——中间
(function () {
  var myChart = echarts.init(document.querySelector(".map .chart"));

  const upColor = '#ec0000';
  const upBorderColor = '#8A0000';
  const downColor = '#00da3c';
  const downBorderColor = '#008F28';
  // Each item: open,close,lowest,highest
  const data0 = splitData([
    ["2023/12/19", 2042.60, 2031.00, 2050.00, 2025.40],
    ["2023/12/20", 2038.10, 2043.50, 2045.90, 2031.60],
    ["2023/12/21", 2041.80, 2034.70, 2048.00, 2034.00],
    ["2023/12/22", 2059.60, 2051.50, 2072.30, 2049.40],
    ["2023/12/25", 2066.65, 2065.30, 2067.60, 2065.30],
    ["2023/12/26", 2060.40, 2056.30, 2069.60, 2056.30],
    ["2023/12/27", 2083.40, 2068.00, 2085.30, 2063.30],
    ["2023/12/28", 2083.50, 2089.50, 2098.20, 2074.60],
    ["2023/12/29", 2071.80, 2076.10, 2084.10, 2067.60],
    ["2024/1/1", 2072.90, 2071.75, 2075.70, 2071.75],
    ["2024/1/2", 2073.40, 2072.70, 2088.10, 2064.30],
    ["2024/1/3", 2042.80, 2067.90, 2074.30, 2038.30],
    ["2024/1/4", 2050.00, 2049.30, 2058.10, 2043.30],
    ["2024/1/5", 2049.80, 2051.40, 2071.10, 2030.80],
    ["2024/1/8", 2033.50, 2052.60, 2053.30, 2022.70],
    ["2024/1/9", 2033.00, 2034.50, 2048.60, 2031.90],
    ["2024/1/10", 2037.50, 2046.20, 2052.00, 2036.40],
    ["2024/1/11", 2028.90, 2039.40, 2060.10, 2027.40],
    ["2024/1/12", 2061.10, 2045.00, 2075.80, 2044.20],
    ["2024/1/15", 2057.85, 2051.30, 2062.50, 2049.50],
    ["2024/1/16", 2039.70, 2060.00, 2069.70, 2037.50],
    ["2024/1/17", 2015.90, 2040.80, 2041.00, 2014.60],
    ["2024/1/18", 2031.10, 2021.30, 2034.20, 2017.50],
    ["2024/1/19", 2038.50, 2033.70, 2050.10, 2031.80],
    ["2024/1/22", 2031.50, 2040.40, 2043.00, 2027.40],
    ["2024/1/23", 2035.20, 2032.80, 2045.40, 2031.50],
    ["2024/1/24", 2025.40, 2039.40, 2046.20, 2021.90],
    ["2024/1/25", 2027.10, 2025.40, 2034.00, 2017.00],
    ["2024/1/26", 2026.60, 2028.90, 2035.70, 2025.40],
    ["2024/1/29", 2034.90, 2035.80, 2046.50, 2028.20],
    ["2024/1/30", 2050.90, 2051.50, 2068.00, 2047.10],
    ["2024/1/31", 2067.40, 2055.30, 2074.60, 2048.80],
    ["2024/2/1", 2071.10, 2057.90, 2083.20, 2046.40],
    ["2024/2/2", 2053.70, 2072.00, 2074.70, 2044.20],
    ["2024/2/5", 2042.90, 2057.90, 2059.10, 2030.80],
    ["2024/2/6", 2051.40, 2041.40, 2055.30, 2038.80],
    ["2024/2/7", 2051.70, 2052.60, 2061.30, 2046.40],
    ["2024/2/8", 2047.90, 2051.00, 2053.80, 2034.60],
    ["2024/2/9", 2038.70, 2049.70, 2051.90, 2034.30],
    ["2024/2/12", 2033.00, 2038.20, 2041.80, 2025.40],
    ["2024/2/13", 2007.20, 2033.70, 2047.30, 2002.80],
    ["2024/2/15", 2014.90, 2004.80, 2020.20, 2001.80],
    ["2024/2/16", 2024.10, 2016.10, 2027.20, 2006.60],
    ["2024/2/19", 2027.50, 2025.70, 2034.30, 2024.65],
    ["2024/2/20", 2039.80, 2027.70, 2042.70, 2023.90],
    ["2024/2/21", 2034.30, 2036.20, 2043.50, 2030.90],
    ["2024/2/22", 2030.70, 2036.50, 2045.50, 2029.30],
    ["2024/2/23", 2039.40, 2024.10, 2041.50, 2015.60],
    ["2024/2/26", 2029.10, 2033.70, 2036.30, 2025.00],
    ["2024/2/27", 2034.40, 2031.00, 2038.00, 2028.70],
    ["2024/2/28", 2042.70, 2039.70, 2047.40, 2033.40],
    ["2024/2/29", 2054.70, 2043.80, 2059.40, 2036.00],
    ["2024/3/1", 2095.70, 2052.80, 2097.10, 2047.00],
    ["2024/3/4", 2126.30, 2091.60, 2128.40, 2088.10],
    ["2024/3/5", 2141.90, 2123.30, 2150.50, 2118.50],
    ["2024/3/6", 2158.20, 2136.40, 2160.70, 2131.90],
    ["2024/3/7", 2165.20, 2156.70, 2172.20, 2151.70],
    ["2024/3/8", 2185.50, 2166.60, 2203.00, 2161.20],
    ["2024/3/11", 2188.60, 2187.60, 2195.50, 2180.90],
    ["2024/3/12", 2166.10, 2189.10, 2190.80, 2156.20],
    ["2024/3/13", 2180.80, 2163.60, 2185.60, 2161.30],
    ["2024/3/14", 2167.50, 2179.50, 2181.30, 2157.00],
    ["2024/3/15", 2171.60, 2175.50, 2186.70, 2169.40],
    ["2024/3/18", 2174.50, 2169.10, 2176.00, 2160.00],
    ["2024/3/19", 2169.80, 2174.20, 2175.00, 2162.10],
    ["2024/3/20", 2171.00, 2171.30, 2201.40, 2164.20],
    ["2024/3/21", 2195.00, 2200.10, 2231.30, 2178.90],
    ["2024/3/22", 2170.20, 2193.30, 2198.00, 2169.30],
    ["2024/3/25", 2186.80, 2177.50, 2192.70, 2175.00],
    ["2024/3/26", 2187.80, 2183.00, 2210.70, 2179.30],
    ["2024/3/27", 2212.70, 2200.50, 2218.30, 2193.70],
    ["2024/3/28", 2238.40, 2215.70, 2256.90, 2207.50],
    ["2024/3/29", 2254.80, 2254.80, 2254.80, 2254.80],
    ["2024/4/1", 2257.10, 2259.20, 2286.40, 2249.10],
    ["2024/4/2", 2281.80, 2272.70, 2301.90, 2267.10],
    ["2024/4/3", 2315.00, 2301.70, 2321.80, 2285.70],
    ["2024/4/4", 2308.50, 2321.00, 2325.30, 2298.70],
    ["2024/4/5", 2345.40, 2309.50, 2350.00, 2286.20],
    ["2024/4/8", 2351.00, 2343.60, 2372.50, 2321.70],
    ["2024/4/9", 2362.40, 2358.10, 2384.50, 2355.70],
    ["2024/4/10", 2348.40, 2372.40, 2378.10, 2337.10],
    ["2024/4/11", 2372.70, 2351.70, 2395.60, 2343.10],
    ["2024/4/12", 2374.10, 2389.40, 2448.80, 2350.60],
    ["2024/4/15", 2383.00, 2369.40, 2404.30, 2340.20],
    ["2024/4/16", 2407.80, 2399.10, 2414.80, 2379.20],
    ["2024/4/17", 2388.40, 2398.00, 2412.00, 2370.70],
    ["2024/4/18", 2398.00, 2377.90, 2408.00, 2377.20],
    ["2024/4/19", 2413.80, 2394.00, 2433.30, 2386.80]
  ]);
  function splitData(rawData) {
    const categoryData = [];
    const values = [];
    for (var i = 0; i < rawData.length; i++) {
      categoryData.push(rawData[i].splice(0, 1)[0]);
      values.push(rawData[i]);
    }
    return {
      categoryData: categoryData,
      values: values
    };
  }
  function calculateMA(dayCount) {
    var result = [];
    for (var i = 0, len = data0.values.length; i < len; i++) {
      if (i < dayCount) {
        result.push('-');
        continue;
      }
      var sum = 0;
      for (var j = 0; j < dayCount; j++) {
        sum += +data0.values[i - j][1];
      }
      result.push(sum / dayCount);
    }
    return result;
  }
  option = {
    title: {
      text: '黄金期货上证指数',
      left: 10,
      textStyle: {
        color: 'lightblue' // 这里将图例文本颜色设置为红色
      }
    },
    tooltip: {
      trigger: 'axis',
      axisPointer: {
        type: 'cross'
      }
    },
    legend: {
      data: ['日K', 'MA5', 'MA10', 'MA20', 'MA30'],
      textStyle: {
        color: 'lightblue' // 这里将图例文本颜色设置为红色
      },
      left: 200,
    },
    grid: {
      left: '10%',
      right: '10%',
      bottom: '15%'
    },
    xAxis: {
      type: 'category',
      data: data0.categoryData,
      boundaryGap: false,
      axisLine: { onZero: false },
      axisLabel: {
        color: '#F8E89F',
        fontSize: 12
      },
      splitLine: { show: false },
      min: 'dataMin',
      max: 'dataMax'
    },
    yAxis: {
      axisLabel: {
        color: '#F8E89F',
        fontSize: 12
      },
      scale: true,
      splitArea: {
        show: true
      }
    },
    dataZoom: [
      {
        type: 'inside',
        start: 50,
        end: 100
      },
      {
        show: true,
        type: 'slider',
        top: '90%',
        start: 50,
        end: 100
      }
    ],
    series: [
      {
        name: '日K',
        type: 'candlestick',
        data: data0.values,
        itemStyle: {
          color: upColor,
          color0: downColor,
          borderColor: upBorderColor,
          borderColor0: downBorderColor
        },
        markPoint: {
          label: {
            formatter: function (param) {
              return param != null ? Math.round(param.value) + '' : '';
            }
          },
          data: [
            {
              name: 'Mark',
              coord: ['2013/5/31', 2300],
              value: 2300,
              itemStyle: {
                color: 'rgb(41,60,85)'
              }
            },
            {
              name: 'highest value',
              type: 'max',
              valueDim: 'highest'
            },
            {
              name: 'lowest value',
              type: 'min',
              valueDim: 'lowest'
            },
            {
              name: 'average value on close',
              type: 'average',
              valueDim: 'close'
            }
          ],
          tooltip: {
            formatter: function (param) {
              return param.name + '<br>' + (param.data.coord || '');
            }
          }
        },
        markLine: {
          symbol: ['none', 'none'],
          data: [
            [
              {
                name: 'from lowest to highest',
                type: 'min',
                valueDim: 'lowest',
                symbol: 'circle',
                symbolSize: 10,
                label: {
                  show: false
                },
                emphasis: {
                  label: {
                    show: false
                  }
                }
              },
              {
                type: 'max',
                valueDim: 'highest',
                symbol: 'circle',
                symbolSize: 10,
                label: {
                  show: false
                },
                emphasis: {
                  label: {
                    show: false
                  }
                }
              }
            ],
            {
              name: 'min line on close',
              type: 'min',
              valueDim: 'close'
            },
            {
              name: 'max line on close',
              type: 'max',
              valueDim: 'close'
            }
          ]
        }
      },
      {
        name: 'MA5',
        type: 'line',
        data: calculateMA(5),
        smooth: true,
        lineStyle: {
          opacity: 0.5
        }
      },
      {
        name: 'MA10',
        type: 'line',
        data: calculateMA(10),
        smooth: true,
        lineStyle: {
          opacity: 0.5
        }
      },
      {
        name: 'MA20',
        type: 'line',
        data: calculateMA(20),
        smooth: true,
        lineStyle: {
          opacity: 0.5
        }
      },
      {
        name: 'MA30',
        type: 'line',
        data: calculateMA(30),
        smooth: true,
        lineStyle: {
          opacity: 0.5
        }
      }
    ]
  };
  myChart.setOption(option);
  window.addEventListener('resize', function () {
    myChart.resize();
  })
})();

写在最后

当初选择的时候想了很多种可以做的方向和思路,在这里也提供给大家,感兴趣的也可以自己试试,有任何问题可加本人vx联系交流

历史走势图

  • 展示金价的历史走势,可以是日、周、月、年等不同时间尺度的变化趋势图,帮助用户了解金价的长期走势。
  • 折线图:展示金价随时间的变化趋势,清晰地显示出历史价格的波动情况。

实时价格监控

  • 实时更新金价,显示最新的价格,并配以动态图表或实时数据,让用户了解金价的最新动向。
  • 实时折线图或动态柱状图:以实时更新的方式显示金价随时间的变化,让用户能够及时了解最新的价格情况。

价格预测模型

  • 基于历史数据和其他因素,展示金价的预测走势图,帮助用户做出未来金价可能走势的预测。
  • 折线图:展示基于预测模型得出的金价未来走势,可以通过不同线条或颜色表示不同的预测结果。

影响因素分析

  • 展示金价受到影响的各种因素,比如经济指标、地缘政治事件、货币政策等,以图表形式呈现它们对金价的影响程度和趋势。
  • 堆叠面积图或雷达图:以图表形式展示不同因素对金价的影响程度,让用户一目了然地了解各个因素的相对重要性。

金店价格比较

  • 将不同金店的金价进行对比,以地图或条形图等形式展示金价的变化情况,帮助用户了解金店金价的差异。
  • 地图或并列柱状图:地图可以直观地展示不同金店的金价情况,而并列柱状图则可以更直观地比较不同金店的金价水平。

用户交互模块

  • 提供用户交互功能,比如筛选时间范围、比较不同数据指标、添加自定义标记等,让用户根据自己的需求定制可视化内容。
  • 筛选器、滑动条等交互组件:提供用户选择时间范围、比较不同指标、添加标记等功能的交互组件,让用户能够根据自己的需求自定义可视化内容。

金价与主要货币汇率关系

  • 展示金价与主要货币(如美元、欧元)的汇率关系。
  • 散点图:X轴为货币汇率,Y轴为金价。

金价与股票市场相关性:

  • 分析金价与股票市场(如道琼斯指数、纳斯达克指数)的相关性。
  • 气泡图:大小代表相关性的强度。

金价的季节性波动:

  • 展示金价在一年中不同季节的波动趋势。
  • 堆叠柱状图:每个季节的金价波动用不同颜色表示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/626953.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

谷歌Gemini时代来了!加固搜索护城河、赋能全家桶,Gemini 1.5 Pro升级至200万token

3 月中旬&#xff0c;谷歌宣布 Google I/O 定档北京时间 5 月 15 日凌晨 1 点。而当大会开幕时间临近&#xff0c;本应是讨论度最高的时候&#xff0c;「宿敌」OpenAI 却半路杀出&#xff0c;抢先一天&#xff0c;仅耗时 27 分钟就发布了颠覆性巨作 GPT-4o&#xff0c;将新一轮…

生态系统类型分布数据、土地利用数据、植被类型分布、自然保护区分布数据

引言 全国自然保护区生态系统类型分布信息产品是指基于Landsat TM数字影像&#xff08;以地形图纠正&#xff09;&#xff0c;采用全数字化人机交互遥感快速提取方法&#xff0c;建立全国自然保护区生态系统结构数据集&#xff0c;同时做成多种尺度的栅格数据&#xff0c;其中包…

RK3568平台开发系列讲解(SPI篇)SPI数据的传输

🚀返回专栏总目录 文章目录 一、数据结构1.1、spi_transfer 结构体1.2、spi_message二、数据发送程序分析沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 参考资料: spi_transferspi_message一、数据结构 spi 数据传输主要使用了 spi_message 和 spi_transfer 结构…

鸿蒙OpenHarmony:【关于deps、external_deps的使用】

关于deps、external_deps的使用 在添加一个模块的时候&#xff0c;需要在BUILD.gn中声明它的依赖&#xff0c;为了便于后续处理部件间依赖关系&#xff0c;我们将依赖分为两种——部件内依赖deps和部件间依赖external_deps。 依赖分类 开发前请熟悉鸿蒙开发指导文档&#xff…

查看Linux系统是Ubuntu还是CentOS

要查看Linux系统是Ubuntu还是CentOS&#xff0c;可以通过多种方式进行确认&#xff1a; 查看/etc/os-release文件&#xff1a; 在终端中执行以下命令&#xff1a; cat /etc/os-release 如果输出中包含"IDubuntu"&#xff0c;则表示系统是Ubuntu&#xff1b;如果输出中…

voceChat - 支持独立部署的个人云社交媒体聊天服务(使用场景及体验分享)

序言 在工作室的发展中&#xff0c;我们急需一个更加简单便捷&#xff0c;高效&#xff0c;适用于团队内部交流的组织平台。起因是我们团队一直是直接使用QQ进行活动&#xff0c;发现QQ很多功能不是很方便并且过于臃肿&#xff0c;越来越不契合工作室的生产环境&#xff0c;于…

pytorch 2.0 多线程并行,导致GPU利用100%,卡住

背景&#xff1a; 程序中有pytorch模型两个&#xff0c;yolov5&#xff0c;crnn。 之前无论是pth格式&#xff0c;还是TRT格式&#xff0c;并行的都没有问题。 最近发现&#xff0c;多线程ThreadPoolExecutor(max_workers2)调用的时候&#xff0c;即单个进程内处理一张图像&a…

数据可视化训练第7天(json文件读取国家人口数据,找出前10和后10)

数据 https://restcountries.com/v3.1/all&#xff1b;建议下载下来&#xff0c;并不是很大 import numpy as np import matplotlib.pyplot as plt import requests import json #由于访问url过于慢&#xff1b;将数据下载到本地是json数据 #urlhttps://restcountries.com/v3…

Unity Pixels Per Unit 与 Sprite Renderer Scale的逻辑关系,为什么平铺的Sprite Renderer会变形?

SpriteRenderer之前用的比较基础&#xff0c;没遇到过什么问题&#xff0c;这几天使用SpriteRenderer的平铺时发现平铺变形了&#xff0c;研究了一下&#xff0c;原来有这么多在逻辑在里面。 当我们导入图片选择Texture Type为Sprite时表示我们的图片用途是UI或者SpriteRendere…

风电功率预测 | 基于RF随机森林的风电功率预测(附matlab完整源码)

风电功率预测 风电功率预测完整代码风电功率预测 基于随机森林(Random Forest, RF)的风电功率预测是一种常用且有效的方法。以下是基于RF的风电功率预测的一般步骤: 数据准备:收集与风电场发电功率相关的数据,包括风速、风向、温度、湿度等气象数据以及风电场的历史功率数…

手机触控面板中应用的电容式触摸芯片

手机触控屏&#xff08;Touch panel&#xff09;又称为触控面板&#xff0c;是个可接收触头等输入讯号的感应式液晶显示装置&#xff0c;当接触了屏幕上的图形按钮时&#xff0c;屏幕上的触觉反馈系统可根据预先编程的程式驱动各种连结装置&#xff0c;可用以取代机械式的按钮面…

生产消费者模型-环形队列与信号量

文章目录 前言一、怎样的环形队列&#xff1f;二、什么是信号量三、使用步骤信号量的接口函数1. sem_init2.sem_destroy3.sem_wait4.sem_post 环形队列的设计测试用例 前言 之前我们使用互斥锁和条件变量实现过一个生产者消费者模型&#xff0c;那么那个生产消费者模型具有一个…

YOLOv9改进策略 | 低照度图像篇 | 2024最新改进CPA-Enhancer链式思考网络(适用低照度、图像去雾、雨天、雪天)

一、本文介绍 本文给大家带来的2024.3月份最新改进机制&#xff0c;由CPA-Enhancer: Chain-of-Thought Prompted Adaptive Enhancer for Object Detection under Unknown Degradations论文提出的CPA-Enhancer链式思考网络&#xff0c;CPA-Enhancer通过引入链式思考提示机制&am…

Centos 6.10 安装oracle10.2.0.1

由于阿里云机房要下架旧服务器&#xff0c;单位未购买整机迁移服务&#xff0c;且业务较老不兼容Oracle11g&#xff0c;所以新购买一台新服务器进行安装Oracle10.2.0.1 &#xff0c;后续再将数据迁移到新服务器上。 对外ip 内部ip 数据库版本 操作系统版本 实例名 源库 1…

Pyqt中QThread传递自己定义的参数、类、函数

Pyqt中QThread传递自己定义的参数、类、函数 1 pyqt中Qthread传递自己定义的参数2 pyqt中Qthread传递自己定义的类3 pyqt中Qthread传递自己定义的函数4 pyqt中Qthread内部定义自己的函数5 pyqt中Qthread传递参数到内部定义自己的函数 1 pyqt中Qthread传递自己定义的参数 在PyQ…

Linux: Make工具以及Makefile文件

make工具 人们通常利用 make 工具来自动完成编译工作。这些工作包括&#xff1a;如果仅修改了某几个源文件&#xff0c;则只重新编译这几个源文件&#xff1b;如果某个头文件被修改了&#xff0c;则重新编译所有包含该头文件的源文件。利用这种自动编译可大大简化开发工作&…

Pytorch代码基础—张量

Pytorch代码—张量 Pytorch张量 张量的属性&#xff1a; data&#xff1a;被包装的Tensorgrad&#xff1a;data的梯度grad_fn:创建Tensor的Function&#xff0c;是自动求导的关键requires_grad&#xff1a;指示是否需要梯度isleaf&#xff1a;指示是否是叶子结点&#xff0…

第四课,python基础语法(算术运算符及其复合运算符、字符串三种定义方式)

一&#xff0c;算术运算符 经过前几节课的学习之后同学们对加减乘除已经不再陌生&#xff0c;本节课进一步掌握两个新的运算符&#xff0c;整除&#xff08;//&#xff09;和模&#xff08;%&#xff09;&#xff0c;整除用来计算两数相除的商&#xff0c;而模用来计算两数相除…

ES6之正则扩展

正则表达式扩展 u修饰符&#xff08;Unicode模式&#xff09;y修饰符&#xff08;Sticky或粘连模式&#xff09;s修饰符&#xff08;dotAll模式&#xff09;Unicode属性转义正则实例的flags属性字符串方法与正则表达式的整合 javascript的常用的正则表达式 验证数字邮箱验证手机…

windows 安装 Conda

1 Conda简介 Conda 是一个开源的软件包管理系统和环境管理系统&#xff0c;用于安装多个版本的软件包及其依赖关系&#xff0c;并在它们之间轻松切换。Conda 是为 Python 程序创建的&#xff0c;适用于 Linux&#xff0c;OS X 和Windows&#xff0c;也可以打包和分发其他软…