Python学习版本: Python 3.X
观看:Python入门+Python爬虫+Python数据分析
2 Echarts配置
官方文档:
https://www.echartsjs.com/zh/index.htmlhttps://echarts.apache.org/zh/index.html
echarts下载https://echarts.apache.org/zh/download.html
完整的示例:
from flask import Flask,render_template,request
import sqlite3
app = Flask(__name__)
@app.route('/score')
def score():
score = []#评分
num = []#每个评分所所统计的电影数
conn = sqlite3.connect("movie.db")
c = conn.cursor()
sql = "select score,count(score) from movie250 group by score"
data = c.execute(sql)#([score,num],[score,num])
for item in data:
score.append(str(item[0]))#变为字符串
num.append(item[1])
conn.commit()
conn.close()
return render_template("score.html",score = score,num=num)
if __name__ == '__main__':
app.run()
<!--创建div 容器,放echarts-->
<div id="main" style="width: 100%;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: '电影评分'
},
tooltip: {},
legend: {
data: ['数量']
},
xAxis: {
<!--jinja2自带的格式转化 将字符串转化为格式json-->
data:{{ score|tojson }}
},
yAxis: {},
series: [
{
name: '数量',
type: 'bar',
data:{{ num }}
}
]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
3.WordCloud应用
3.1 WordCloud示例
3.1.1 WordCloud库的安装
安装的包jiebamatplotlibwordcloud
若安装不成功,可以
第一步:http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud 页面下载所需的wordcloud模块的whl文件,这里选择wordcloud-1.6.0-cp37-cp37m-win32.whl 版本。
注意:下载的版本!!
cp后面是你的python版本,例如:3.7.1就是cp37
查看python的版本号,可以在命令提示符界面下输入:python
第二步:下载后进入存储该文件的路径,cmd打开dos界面,cd进你们刚刚下载到的文件路径
第三步:执行“pip install wordcloud-1.6.0-cp37-cp37m-win32.whl”,安装成功。
3.1.2 WordCount的例子
第一步:引入库文件
import jieba #分词
from matplotlib import pyplot as plt #绘图,直接生成图片
from wordcloud import WordCloud #词云
from PIL import Image #图片处理
import numpy as np #矩阵运算
import sqlite3 #sqlite3数据库
第二步:读取文件,或者读取数据库
path = r'.' #设定根路径
#font = r'C:\Windows\Fonts\msyh.ttc' #设定字体
#text = (open(path + r'\岗位需求.txt', 'r', encoding='utf-8')).read() #读取文件
con = sqlite3.connect('D:\\demo\\python3_workspace\\baidu_demo\\movie.db') #连接数据库
cur = con.cursor()
sql = 'select introduction from movie250'
data = cur.execute(sql)
text = ""
for item in data: #将查询出的结果连接成一个字符串
text = text + item[0]
print(text)
cur.close()
con.close()
第三步:应用特定图片合成词云
#使用jieba 将字符串分词
cut = jieba.cut(text) # 分词
string = ' '.join(cut)
print(len(string)) #打印分词数量
#设置源图片属性
img=Image.open(r'.\static\assets\img\tree.jpg') #打开图片
img_array = np.array(img)#将图片转化为数组
wc=WordCloud(
background_color='white', # 设置背景颜色,后面对颜色处理时,除了背景颜色 ,处理其他颜色
mask=img_array, # 设置背景图片
font_path='simfang.ttf' #'C:\Windows\Fonts\STZHONGS.TTF', # 若是有中文的
)
#将目标分词 添加到源图片中非背景颜色的区域
wc.generate_from_text(strcut)
#绘制图片
fig =plt.figure(1)
plt.imshow(wc)#显示图片
plt.axis('off')#是否显示坐标轴
#plt.show()#图片显示
#输出词云图片到文件
plt.savefig(r'.\static\assets\img\word.jpg',dpi=500)#dpi清晰度
3.2 WordCloud配置
font_path : string #字体路径,需要展现什么字体就把该字体路径+后缀名写上,如:font_path= ‘黑体.ttf’
width : int (default=400) #输出的画布宽度,默认为400像素
height : int (default=200) #输出的画布高度,默认为200像素
prefer_horizontal : float (default=0.90) #词语水平方向排版出现的频率,默认 0.9 (所以词语垂直方向排版出现频率为 0.1 )
mask : nd-array or None (default=None) #如果参数为空,则使用二维遮罩绘制词云。如果
mask 非空,设置的宽高值将被忽略,遮罩形状被 mask 取代。除全白(#FFFFFF)的部分将不会绘制,其余部分会用于绘制词云。如:bg_pic = imread(‘读取一张图片.png’),背景图片的画布一定要设置为白色(#FFFFFF),然后显示的形状为不是白色的其他颜色。可以用ps工具将自己要显示的形状复制到一个纯白色的画布上再保存,就ok了。
scale : float (default=1) #按照比例进行放大画布,如设置为1.5,则长和宽都是原来画布的1.5倍min_font_size : int (default=4) #显示的最小的字体大小
font_step : int (default=1) #字体步长,如果步长大于1,会加快运算但是可能导致结果出现较大的误差
max_words : number (default=200) #要显示的词的最大个数
stopwords : set of strings or None #设置需要屏蔽的词,如果为空,则使用内置的STOPWORDS
background_color : color value (default=”black”) #背景颜色,如background_color=‘white’,背景颜色为白色
max_font_size : int or None (default=None) #显示的最大的字体大小
mode : string (default=”RGB”) #当参数为“RGBA”并且background_color不为空时,背景为透明
relative_scaling : float (default=.5) #词频和字体大小的关联性
color_func : callable, default=None #生成新颜色的函数,如果为空,则使用 self.color_func
regexp : string or None (optional) #使用正则表达式分隔输入的文本
collocations : bool, default=True #是否包括两个词的搭配
colormap : string or matplotlib colormap, default=”viridis” #给每个单词随机分配颜色,若指定
color_func,则忽略该方法
random_state : int or None #为每个单词返回一个PIL颜色
fig = plt.figure(1) #新建一个名叫 Figure1的画图窗口
plt.imshow(wc) #显示图片,同时也显示其格式
plt.axis(‘off’) # 是否显示x轴、y轴下标
#plt.show() #显示生成合成图片
plt.savefig(path+‘\new.png’,dpi=500) #保存合成图片,dpi是设定分辨率,默认为400