爬虫入门之绘图matplotlib与词云(七)
1 绘制条形图
import matplotlib # 数据可视化
from matplotlib import pyplot as plt# 配置字体
matplotlib.rcParams["font.sans-serif"] = ["simhei"] # 黑体
matplotlib.rcParams["font.family"] = "sans-serif"
'''
left, x轴
height, y轴
width=0.8 ,轴宽
'''
# .bar(x轴, y轴, label=u"标签名", color="颜色")
plt.bar([1], [123], label="广州", color="r")
plt.bar([2], [141], label=u"北京")
plt.bar([3], [11], label=u"上海")
plt.bar([4], [41], label=u"深圳")
plt.bar([5], [181], label=u"香港")
plt.legend() # 绘图
# plt.show()
plt.savefig("1.jpg") # 保存图片
2 绘制智联招聘职位岗位数量图
import urllib.request
import urllib.parse
import re
import matplotlib
import matplotlib.pyplot as plt # 数据可视化matplotlib.rcParams["font.sans-serif"] = ["simhei"] # 配置字体
matplotlib.rcParams["font.family"] = "sans-serif"
header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"}def getnumberbyname(searchname):searchname = {"kw": searchname}searchname = urllib.parse.urlencode(searchname)url = "http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E6%B7%B1%E5%9C%B3&" + searchname + "&p=1&isadv=0"print(url, '==========')req = urllib.request.Request(url, headers=header)pagesource = urllib.request.urlopen(req).read().decode('utf-8', 'ignore')restr = "<em>(\\d+)</em>" # 正则表达式,()只要括号内的数据regex = re.compile(restr, re.IGNORECASE)mylist = regex.findall(pagesource)return mylist[0]# 岗位列表
pythonlist = ["python", "python 运维", "python 测试", "python 数据", "python web"]
num = 0
for pystr in pythonlist:num += 1print(pystr, eval(getnumberbyname(pystr)))# 绘制柱状图plt.bar([num], eval(getnumberbyname(pystr)), label=pystr)plt.legend() # 绘制
plt.show() # 显示
3 词云
“词云”这个概念由美国西北大学新闻学副教授、新媒体专业主任里奇·戈登(Rich Gordon)提出。“词云”就是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。
- 词频
- 分词 语句切割
import jiebamystr = "小姐姐,我看你挺能睡的,睡我还不好"wordsplitList = jieba.cut(mystr, cut_all=True) # 切割, 全部切割
print(wordsplitList) # 返回一个生成器对象
print('/'.join(wordsplitList))
wordsplitListforSearch = jieba.cut_for_search(mystr) # 按搜索方式切割
print(wordsplitListforSearch)print('/'.join(wordsplitListforSearch))
- 制作python岗位需求词云
import wordcloud 导入词云
from wordcloud import STOPWORDS # 停止词
import jieba
import numpy as np # 科学计算
import matplotlib # 数据可视化
from matplotlib import pyplot as plt
from PIL import Image # 图片处理# 读取文本
pythonInfo = open('pythonworkinfo.txt', 'r', encoding='utf-8', errors='ignore').read()
# print(pythonInfo)
# 切割
pythonCut = jieba.cut(pythonInfo, cut_all=True)
pythonInfoList = ' '.join(pythonCut) # 返回一个生成器对象
print(pythonInfoList)
backgroud = np.array(Image.open('pig.jpg')) # 将图片格式化成RBG数组
myCloudword = wordcloud.WordCloud(font_path='simkai.ttf', # 字体路径width=400, height=200,mask=backgroud, # 字体颜色scale=1, # 比例max_words=200, # 最大字数min_font_size=4, # 最小字体stopwords=STOPWORDS, # 默认停止词random_state=50, # 随机角度background_color='black', # 背景颜色max_font_size=100 # 最大字体).generate(pythonInfoList)
#plt.imshow(myCloudword)
#plt.show() 图片展示
plt.figimage(mywordCloud) #绘制图片
plt.imsave('python.png',mywordCloud) #保存图片
精简生成词云
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import jiebatext_from_file_with_apath = open('pythonworkinfo.txt',encoding='utf-8',errors='ignore').read()
print(text_from_file_with_apath)
wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all=True)wl_space_split = " ".join(wordlist_after_jieba)
my_wordcloud = WordCloud().generate(wl_space_split)plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()#注:碰到utf-8的编码问题时候,可以去源码wordcloud.py文件中新增路径,前提下好中文字体库simkai.ttf
FONT_PATH = os.environ.get("FONT_PATH", os.path.join(os.path.dirname(__file__), "simkai.ttf"))
覆盖掉默认的DroidSansMono.ttf
4 Matplotlib 绘图
1 多个subplot
# subplot.pyimport matplotlib.pyplot as plt
import numpy as npdata = np.arange(100, 201)
plt.subplot(2, 1, 1)
plt.plot(data)data2 = np.arange(200, 301)
plt.subplot(2, 1, 2)
plt.plot(data2)plt.show()
2 线形图
# plot.py
import matplotlib.pyplot as pltplt.plot([1, 2, 3], [3, 6, 9], '-r')
plt.plot([1, 2, 3], [2, 4, 9], ':g')plt.show()
这段代码说明如下:
plot
函数的第一个数组是横轴的值,第二个数组是纵轴的值,所以它们一个是直线,一个是折线;- 最后一个参数是由两个字符构成的,分别是线条的样式和颜色。前者是红色的直线,后者是绿色的点线。
3 散点图
# scatter.pyimport matplotlib.pyplot as plt
import numpy as np
N = 20
plt.scatter(np.random.rand(N) * 100,np.random.rand(N) * 100,c='r', s=100, alpha=0.5)plt.scatter(np.random.rand(N) * 100,np.random.rand(N) * 100,c='g', s=200, alpha=0.5)plt.scatter(np.random.rand(N) * 100,np.random.rand(N) * 100,c='b', s=300, alpha=0.5)
plt.show()
这段代码说明如下:
- 这幅图包含了三组数据,每组数据都包含了20个随机坐标的位置
- 参数
c
表示点的颜色,s
是点的大小,alpha
是透明度
4 饼状图
# pie.py
import matplotlib.pyplot as plt
import numpy as nplabels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
data = np.random.rand(7) * 100plt.pie(data, labels=labels, autopct='%1.1f%%')
plt.axis('equal')
plt.legend()plt.show()
这段代码说明如下:
data
是一组包含7个数据的随机数值- 图中的标签通过
labels
来指定 autopct
指定了数值的精度格式plt.axis('equal')
设置了坐标轴大小一致plt.legend()
指明要绘制图例(见下图的右上角)
5 条形图
# bar.pyimport matplotlib.pyplot as plt
import numpy as np
N = 7
x = np.arange(N)
data = np.random.randint(low=0, high=100, size=N)
colors = np.random.rand(N * 3).reshape(N, -1)
labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']plt.title("Weekday Data")
plt.bar(x, data, alpha=0.8, color=colors, tick_label=labels)
plt.show()
这段代码说明如下:
- 这幅图展示了一组包含7个随机数值的结果,每个数值是[0, 100]的随机数
- 它们的颜色也是通过随机数生成的。
np.random.rand(N * 3).reshape(N, -1)
表示先生成21(N x 3)个随机数,然后将它们组装成7行,那么每行就是三个数,这对应了颜色的三个组成部分。如果不理解这行代码,请先学习一下Python 机器学习库 NumPy 教程 title
指定了图形的标题,labels
指定了标签,alpha
是透明度
6 直方图
# hist.pyimport matplotlib.pyplot as plt
import numpy as npdata = [np.random.randint(0, n, n) for n in [3000, 4000, 5000]]
labels = ['3K', '4K', '5K']
bins = [0, 100, 500, 1000, 2000, 3000, 4000, 5000]plt.hist(data, bins=bins, label=labels)
plt.legend()plt.show()
上面这段代码中,[np.random.randint(0, n, n) for n in [3000, 4000, 5000]]
生成了包含了三个数组的数组,这其中:
- 第一个数组包含了3000个随机数,这些随机数的范围是 [0, 3000)
- 第二个数组包含了4000个随机数,这些随机数的范围是 [0, 4000)
- 第三个数组包含了5000个随机数,这些随机数的范围是 [0, 5000)
爬虫入门之绘图matplotlib与词云(七)相关推荐
- 使用Python爬虫获取豆瓣影评,并用词云显示
使用Python爬虫获取豆瓣影评,并用词云显示 Python语言流行到现在,目前最受开发者喜爱的功能莫过于它的爬虫功能,以至于很多人以为Python的英语发音也是"爬虫",其实它是 ...
- bilibili怎么设置弹幕数量_python爬虫:bilibili弹幕爬取+词云生成
如果你懒得看下边的文字,我录了一个完整的教学视频在b站上. 我的B站教学:https://www.bilibili.com/video/av75377135?p=2 工作原理 b站是提供弹幕接口的,所 ...
- python爬取bilibili弹幕_python爬虫:bilibili弹幕爬取+词云生成
如果你懒得看下边的文字,我录了一个完整的教学视频在b站上. 我的B站教学:https://www.bilibili.com/video/av75377135?p=2 工作原理 b站是提供弹幕接口的,所 ...
- 爬虫数据云词图片怎么做?小姐姐教你用python做B站弹幕爬虫,并进行数据分析生成词云
hello大家好,我是你们的可爱丸,大家平时在B站看视频时有没有开弹幕的习惯呢?如果不把视频从头看到尾,那么多弹幕,我们怎么快速的知道大家都说了些什么并且持有什么观点呢? 今天小姐姐就教你做一个简单的 ...
- Python入门(十七):词云制作
文章目录 词云制作 英文文本 中文文本 jieba库 概述 安装 使用 词云制作 wordcloud库 概述 安装 使用 示例 英文文本:以 hamlet 为例 中文文本:以<三国演义>为 ...
- 爬虫爬取新闻并生成词云
爬取豆瓣应用的函数同样可以用来爬取新闻.这里面主要是正则表达式的提取和对爬出的链接再进行爬取解析.对网页不 import re # 正则 from bs4 import BeautifulSoup # ...
- b站小姐姐词云视频制作学习记录
目录 开头 视频下载及处理 人像分割转化为二值图 获取弹幕作成词云图片 生成的词云图片变成视频 视频插入音频 最后 开头 前几天看了 宅男福利!我用Python做了一个B站跳舞的小姐姐,满屏的美腿!. ...
- 词云可视化:四行Python代码轻松上手到精通
词云可视化:四行Python代码轻松上手到精通 文章目录 词云可视化:四行Python代码轻松上手到精通 本课概要 关于本课程 `粉丝答疑交流QQ群:953712961` `微信赞赏码` 不需要写代码 ...
- python词云库wordcloud自定义词云制作步骤详解
读书使人充实,讨论使人机智,笔记使人准确-.凡有所学,皆成性格. ---- (英国)培根 文章目录 wordcloud库常规方法 第三方库 读取文件 自定义绘制指定形状的词云 wordcloud库常规 ...
最新文章
- LINUX的20练习题
- Zookeeper分布式一致性原理(十一):Zookeeper在JStorm中应用
- Ubuntu 当黑屏解决方案安装
- Atcoder 084D - Small Multiple(最短路径+思维)
- nssl1454-最短路【并查集,贪心】
- 云服务器 ECS(CentOS) 安装 Node
- 计算机关机键 自动重启,电脑按了关机键后电脑又自动重启了,怎么处理 啊
- echarts 关系图 参数_Echarts关系图(使用重力图)
- POI导出Excel文件中文乱码
- 安居客app源码java_Android项目源码仿百大易商城APP源码
- spss多元线性回归散点图_SPSS19.0实战之多元线性回归分析
- asp.net网站负载测试
- CANOpen协议详解(一):CANfestival源码分析
- Java进度条(excel文件解析)的实现
- 15.系统安全分析与设计
- Win10系统如何调整分区大小?
- 劲牌连续两年问鼎全国质量大奖背后的密码
- JAX-WS RI组件开发基于JAX-WS规范的WebService服务入门程序
- Kettle构建Hadoop ETL实践(六):数据转换与装载
- 攻防世界 web高手进阶区 favorite_number