【Echarts】散点图 点击散点加载对应的图片(ajax传值&获取流)

ゝ一纸荒年。 2022-12-08 01:43 213阅读 0赞

" class="reference-link">效果图:点击每个散点,右边的图片会变成对应的~(10000个点)watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RoZVdpc2VfbHp5_size_16_color_FFFFFF_t_70

需求说明:因为图片较多,直接放在项目里,项目启动时要加载很久。所以尝试把图片放在本地/服务器上,当点击一个散点的时候,再去请求图片地址,即不点就不被加载。

对应z_data.json文件:这个文件是学长强化学习的数据,看起来很长…就用到了0-x坐标,1-y坐标,3-对应图片序号。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RoZVdpc2VfbHp5_size_16_color_FFFFFF_t_70 1

前端 demo.html:

  1. <!DOCTYPE html>
  2. <html lang="en" xmlns:th="http://www.thymeleaf.org">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>散点图</title>
  6. <script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
  7. <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
  8. <script src="/jquery.base64.js" type="text/javascript"></script>
  9. </head>
  10. <body>
  11. <div id="main" style="width: 1000px;height:600px;float:left"></div>
  12. <img id="img" src="state-0.png" style="float:right"/>
  13. <script type="text/javascript">
  14. var myChart = echarts.init(document.getElementById('main'));
  15. myChart.setOption({
  16. title: {
  17. text: 'BreakoutScatter',
  18. left: 'center',
  19. top: 0
  20. },
  21. xAxis: {},
  22. yAxis: {},
  23. series: [{
  24. data: [],
  25. type: 'scatter'
  26. }]
  27. });
  28. //加载数据
  29. $.get('z_data.json').done(function (data) {
  30. var option = {
  31. visualMap: {
  32. min: 0,
  33. max: 1000,
  34. dimension: 1,
  35. orient: 'vertical',
  36. right: 10,
  37. top: 'center',
  38. text: ['HIGH', 'LOW'],
  39. calculable: true,
  40. inRange: {
  41. color: ['#eccb5e', '#f22424']
  42. }
  43. },
  44. tooltip: {
  45. trigger: 'item',
  46. axisPointer: {
  47. type: 'cross'
  48. }
  49. },
  50. xAxis: [{
  51. type: 'value'
  52. }],
  53. yAxis: [{
  54. type: 'value'
  55. }],
  56. series: [{
  57. name: 'price-area',
  58. type: 'scatter',
  59. symbolSize: 7,
  60. data: data.data
  61. }]
  62. };
  63. myChart.setOption(option);
  64. });
  65. //点击事件
  66. myChart.on('click', function (params) {
  67. console.log(params.data[3]-1);
  68. $.ajax({
  69. url:"/getImg",
  70. type : 'GET',
  71. data:{"path_index":params.data[3]-1},
  72. //dataType : 'json',
  73. success: function(data){
  74. console.log(data.result);
  75. var ImgUrl="data:image/jpeg;base64,"+data.result;
  76. $("#img").attr('src',ImgUrl); //修改图片地址
  77. },
  78. })
  79. })
  80. </script>
  81. </body>
  82. </html>

后端 demoController:

  1. package com.example.breakout.Controller;
  2. import org.springframework.http.HttpHeaders;
  3. import org.springframework.http.HttpStatus;
  4. import org.springframework.http.MediaType;
  5. import org.springframework.http.ResponseEntity;
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.web.bind.annotation.*;
  8. import org.springframework.web.servlet.ModelAndView;
  9. import javax.imageio.ImageIO;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. import java.awt.image.BufferedImage;
  13. import java.io.*;
  14. import java.net.URLDecoder;
  15. import java.util.HashMap;
  16. import java.util.Map;
  17. @Controller
  18. public class demoController {
  19. @RequestMapping("/demo")
  20. public String show(){
  21. return "demo";
  22. }
  23. @GetMapping("/getImg")
  24. @ResponseBody
  25. public Map<String,Object> getImage(@RequestParam String path_index) throws Exception{
  26. System.out.println("path_index: "+path_index); //得到图片序号
  27. byte[] imageContent ;
  28. Map<String,Object> resultMap = new HashMap<String, Object>();
  29. String path = "C:\\Users\\10846\\Desktop\\test_circle\\state-"+path_index+".png";
  30. imageContent = fileToByte(new File(path));
  31. resultMap.put("result", imageContent);
  32. return resultMap;
  33. }
  34. //转换成byte流
  35. public static byte[] fileToByte(File img) throws Exception {
  36. byte[] bytes = null;
  37. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  38. try {
  39. BufferedImage bi;
  40. bi = ImageIO.read(img);
  41. ImageIO.write(bi, "png", baos);
  42. bytes = baos.toByteArray();
  43. } catch (Exception e) {
  44. e.printStackTrace();
  45. } finally {
  46. baos.close();
  47. }
  48. return bytes;
  49. }
  50. }

发表评论

表情:
评论列表 (有 0 条评论,213人围观)

还没有评论,来说两句吧...

相关阅读