起因
学校开展实训周要求选课,出于对python的兴趣我选了大数据可视化技术
课程主要内容:
- 对ubuntu Linux操作系统的一些基本指令的掌握和实践,vi编辑修改配置文件profile等,训练搭建伪分布式环境–Hadoop环境,并在本地web页面建立可视化。
- 在hadoop中进行基本指令的操作练习,包含文件建立,上传,移动,重命名等基本操作。
- 间接利用Excel简单处理利用python脚本所写的爬虫爬取的数据,并进行可视化的演示。
- 利用python直接进行数据的处理,并利用matplotlib,numpy等py库函数进行可视化的输出
- 利用python脚本实现可视化输出词云。
实现过程
sin-cos折线可视化的实现过程
#coding=utf-8
import numpy as np
import matplotlib.pylab as pl
import matplotlib.font_manager as fm
t = np.arange(0.0, 2.0*np.pi, 0.01) #自变量取值范围
s = np.sin(t) #计算正弦函数值
z = np.cos(t) #计算余弦函数值
pl.plot(t, #x轴座标
s, #y轴座标
label='正弦', #标签
color='red') #颜色
pl.plot(t, z, label='余弦', color='blue')
pl.xlabel('x-变量', #标签文本
fontproperties='STKAITI', #字体
fontsize=18) #字号
pl.ylabel('y-正弦余弦函数值', fontproperties='simhei', fontsize=18)
pl.title('sin-cos函数图像', #标题文本
fontproperties='STLITI', #字体
fontsize=24) #字号
myfont = fm.FontProperties(fname=r'C:\Windows\Fonts\STKAITI.ttf')
pl.legend(prop=myfont) #显示图例
pl.show() #显示绘制的结果图像
由于 py脚本中使用了中文,因此py程序头要添加说明coding为utf-8
如果添加#coding=utf-8不成功,那么可以添加#-*-coding=utf-8-*-
运行显示
实现了sin-cos折线的可视化
词云可视化的实现过程
简单词云1
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# Read the whole text.
text = open('test1.txt').read()
# Generate a word cloud image
wordcloud = WordCloud().generate(text)
# Display the generated image:
# the matplotlib way:
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
代码是在网上copy的其他博主的,类似的词云代码网上有很多
其中 text = open(‘test1.txt’).read() 一行 ,test1.txt为自己创建的txt文本文件,把文件放在python project所在的目录下,方便直接引入
运行一下 得到
其中 txt文本为:
简单词云2
实现代码为:
#coding=utf-8
from wordcloud import WordCloud
import jieba
from matplotlib import pyplot as plt
#import numpy as np
# 打开词云文本
txt = open("test1.txt","rb").read()
#用jieba进行分词
txtout = "".join( jieba.cut(txt,cut_all=False) )
print(txtout)
#3:读取词云图片
#mask_pic = Image.open("D:\\0000_2018_python_study\\1_programma\\source\\pic.png")
#mask_pic_array = np.array(mask_pic)#将词云图片转换为数组
#4:设置词云的属性
font = "/System/Library/Fonts/Helvetica.ttc"#词云的中文字体所在路径
wc = WordCloud(font_path = font,
background_color="yellow",
#mask = mask_pic_array,
contour_width=4.5,
contour_color="black",
)
#5:生成词云
wc.generate(txtout)
#6:存储词云
wc.to_file("cy.png")
#第二种方法
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
plt.tight_layout()
#存储图像
plt.savefig('cy2.png',dpi=200)
plt.show()
其中font = “/System/Library/Fonts/Helvetica.ttc” 一行,font后要写清楚自己电脑中字体的绝对路径,也可以自己下载其他字体,我用的是mac,mac的字体目录在/System/Library/Fonts下,py文件中要具体到某种字体的绝对路径。
txt = open(“test1.txt”,“rb”).read() 中的test1.txt和上面的一样
此代码的实现还引入了jieba库
关于jieba库的使用和介绍可以看这位大佬的blog:https://www.cnblogs.com/wkfvawl/p/9487165.html
运行显示 :
总结
作为喜欢ctf和python的小白还是感觉这次选修挺获益的,因为恰巧在刚刚的山东省深思杯决赛中就碰到了一个需要用python写脚本进行绘图的题,看大佬们的wp是利用图片处理函数PIL库进行输出后得到flag。
同时越来越能感觉到python的魅力所在?哈哈哈哈
继续加油吧~:)