利用echarts制作词云

Posted liuleliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用echarts制作词云相关的知识,希望对你有一定的参考价值。

技术图片

 

 网页上就是上图这种效果

 

直接上代码吧,其中数据由servlet从数据库读取,通过ajax传递给前端:

jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>

<div id = "main" style="width: 1200px;height: 800px;"></div>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
<script type="text/javascript" src = "js/echarts-wordcloud.min.js"></script>
	<script type="text/javascript">
	var maskImage = new Image();
	maskImage.src = ‘c.png‘;
	 $(document).ready(function(){
			go();
		    
		   });
			  function go() {
		        	
		        	
		            $.ajax({
		                type : "POST",  //请求方式
		                url : "get",  //请求路径
		                data : {  //请求参数
		                
		                },
		                success : function(msg) {  //异步请求成功执行的回调函数
		                	da=JSON.parse(msg);
		                	 
		                	option = {
		        				    title: {
		        				        text: ‘词云‘,//标题
		        				        x: ‘center‘,
		        				        textStyle: {
		        				            fontSize: 23
		        				        }
		        				 
		        				    },
		        				    backgroundColor: ‘#F7F7F7‘,
		        				    tooltip: {
		        				        show: true
		        				    },
		        				    series: [{
		        				        name: ‘热点分析‘,//数据提示窗标题
		        				        type: ‘wordCloud‘,
		        				        drawOutOfBound:true,
		        				        sizeRange: [6, 66],//画布范围
		        				        rotationRange: [-45, 90],//数据翻转范围
		        				        shape: ‘circle‘,
		        				        textPadding: 0,
		        				        autoSize: {
		        				            enable: true,
		        				            minSize: 6
		        				        },
		        				        textStyle: {
		        				            normal: {
		        				                color: function() {
		        				                    return ‘rgb(‘ + [
		        				                        Math.round(Math.random() * 160),
		        				                        Math.round(Math.random() * 160),
		        				                        Math.round(Math.random() * 160)
		        				                    ].join(‘,‘) + ‘)‘;
		        				                }
		        				            },
		        				            emphasis: {
		        				                shadowBlur: 10,
		        				                shadowColor: ‘#333‘
		        				            }
		        				        },
		        				        data: da.word//数据
		        				    }]
		        				};
		                    var myChart = echarts.init(document.getElementById(‘main‘));
		                    myChart.setOption(option);
		                    maskImage.onload = function() {
		        			    myChart.setOption(option);
		        			};
		        			window.onresize = function() {
		        			    myChart.resize();
		        			}
		                    myChart.on(‘click‘,function(params){
		        			    window.open(‘list?key=‘+params.name)//这里是设置点击事件
		        			});
		                   
		                },//状态信息;抛出的异常信息
		                error : function(XMLHttpRequest, textStatus, errorThrown) {
		                    alert(textStatus);
		                    alert("数据加载失败了"+errorThrown)
		                }
		            });
		        }
		        	
			
			
			
	</script>
</body>
</html>

  其中要导入的echarts-wordcloud.min.js文件请自行百度下载

接下来是servlet:

package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.alibaba.fastjson.JSONObject;

import Dao.UD;

/**
 * Servlet implementation class get
 */
@WebServlet("/get")
public class get extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public get() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setCharacterEncoding("utf-8");    //设置 HttpServletResponse使用utf-8编码
		response.setHeader("Content-Type", "text/html;charset=utf-8");    //通知浏览器使用utf-8解码
		
		response.getWriter().append("Served at: ").append(request.getContextPath());
		 Date dNow = new Date( );
	   
		
	        request.setCharacterEncoding("utf-8");

		
		JSONObject json=new JSONObject();
		try {
			
  Statement statement = conn.createStatement();
 
  String num,country;
  String sql = "select * from world where time =‘"+date+"‘ ";
 
  ArrayList<HashMap<String, String>> l=new ArrayList<HashMap<String, String>>();
  HashMap<String, String> map = new HashMap<>();

 
  ResultSet rs = statement.executeQuery(sql);

	while(rs.next()){
		
        
      
        	num = rs.getString(4);
        	country= rs.getString(1);
        	map.put("name", country);
        	map.put("value", num);
        	l.add(map);
        	map = new HashMap<>();

     
      
					}
	json.put("world",l);
	rs.close();
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		
		PrintWriter out = response.getWriter();
		
		response.resetBuffer();
		out.write(json.toString());
		out.close();
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

  

以上是关于利用echarts制作词云的主要内容,如果未能解决你的问题,请参考以下文章

echarts图表——词云&布局、操作、效果

数据可视化 | 利用jieba进行中文分词制作词云

echarts词云怎样设置鼠标滚动内容缩放

平安喜乐 | Python制作圣诞树和词云

平安喜乐 | Python制作圣诞树和词云

平安喜乐 | Python制作圣诞树和词云