数据可视化:绘制部分图表的核心代码实现

matplotlib和pyecharts绘制图表

  • pyecahrts
    • 漏斗图
    • 核心代码
    • 地图
    • 核心代码
    • 柱状图
    • 核心代码
    • 组合图表
    • 核心代码
    • 数据大屏
    • 核心代码
  • matplotlib
    • 棉棒图
    • 核心代码
    • 饼图
    • 核心代码
    • 词云图
    • 核心代码
    • 组合图表
    • 核心代码

开发语言及版本Python3.7
第三方库及版本号jieba 0.42.1
matplotlib3.3.4
imageio2.9.0
numpy1.19.5
pyecharts1.9.0
wordcloud1.8.1
系统环境Windows10
开发工具PyCharm 2021.2

本文章主要对2012年至2018年广东省地区普通高等学校含本科、专科学校的招生和毕业情况和对2013年和2017年各类教育经费的可视化展示。

pyecahrts

漏斗图

在这里插入图片描述

核心代码

funnel = (Funnel(init_opts=opts.InitOpts(width='1200px', height='600px',# 设置主题背景theme=ThemeType.MACARONS)).add("", data_fun, sort_='descending',# 设置提示框显示的内容tooltip_opts=opts.TooltipOpts(formatter="{b} : {c} 所")).set_global_opts(title_opts=opts.TitleOpts(title="2018年广东省各级学校数量",pos_left='center'),legend_opts=opts.LegendOpts(pos_top='30px'))
)

地图

在这里插入图片描述

核心代码

map = (Map(init_opts=opts.InitOpts(width='1200px',height='600px')).add('本科', data1, "广东").add('专科', data2, "广东").add('本、专科', data_map, '广东').set_global_opts(title_opts=opts.TitleOpts(title='广东省各城市高等学校分布',pos_left='center'),# 设置只显示单个图例,不能同时多选legend_opts=opts.LegendOpts(selected_mode='single', pos_top='30px'),# 设置视觉映射组件visualmap_opts=opts.VisualMapOpts(max_=81, min_=1,range_text=['数量'],orient='horizontal',pos_bottom='100px',pos_right='center'))# 设置提示框内容.set_series_opts(tooltip_opts=opts.TooltipOpts(formatter='截止2020年6月30日<br/> {b}<br/> {a} : {c} 所<br/> '))
)

柱状图

在这里插入图片描述

核心代码

bar.set_global_opts(title_opts=opts.TitleOpts(title='2012年至2018年普通高等学校在校生人数',pos_left='center'),# y轴标签yaxis_opts=opts.AxisOpts(name='人数(万人)', name_location='center',name_gap=30),# 提示框内容显示tooltip_opts=opts.TooltipOpts(formatter='{b} <br/> {a} : {c} 万人'),# 设置图例位置legend_opts=opts.LegendOpts(pos_top='30px'),# 设置区域缩放datazoom_opts=opts.DataZoomOpts(type_='slider'),# 设置工具箱toolbox_opts=opts.ToolboxOpts(is_show=True,feature=opts.ToolBoxFeatureOpts(save_as_image=opts.ToolBoxFeatureSaveAsImageOpts(type_="jpeg", title="保存为jpeg", pixel_ratio=2),# 打开还原data_view数据视图restore=opts.ToolBoxFeatureRestoreOpts(),# 关闭查看数据集data_view=opts.ToolBoxFeatureDataViewOpts(is_show=False),# 关闭区域缩放data_zoom=opts.ToolBoxFeatureDataZoomOpts(is_show=False),# # 关闭选框组件brush=opts.ToolBoxFeatureDataZoomOpts(is_show=False),)))
bar.set_series_opts(label_opts=opts.LabelOpts(position='inside'))
// 设置柱子圆角和渐变色"itemStyle": {"emphasis": {"barBorderRadius": 15},"normal":{"barBorderRadius": 15,"color": new echarts.graphic.LinearGradient(0, 0, 1, 0,[{"offset" : 0, "color":'#77f9a6'},{"offset": 1, color: '#b3dafa'}])}

组合图表

在这里插入图片描述

核心代码

tl_pie = Timeline(init_opts=opts.InitOpts(theme=ThemeType.MACARONS))
for i in range(5):pie = (Pie(init_opts=opts.InitOpts(theme=ThemeType.MACARONS))# 显示数据和百分比.add(years[i], data[i], radius=[80, 120],label_opts=opts.LabelOpts(formatter="{b} : {d}%", is_show=True))# 设置提示框显示内容.set_series_opts(tooltip_opts=opts.TooltipOpts(formatter="{a}<br/>{b} : {c}万元")).set_global_opts(title_opts=opts.TitleOpts(title='{}\n\n教育经费种类\n'.format(years[i]),pos_left='center',pos_top='120px'),legend_opts=opts.LegendOpts(is_show=False)))tl_pie.add(pie, "{}".format(years[i]))tl_pie.add_schema(is_timeline_show=False,  # 不显示时间轴is_auto_play=True,  # 自动播放)
tl_radar = Timeline(init_opts=opts.InitOpts(theme=ThemeType.MACARONS))
# 循环添加数据
for i in range(5):radar = (Radar(init_opts=opts.InitOpts(theme=ThemeType.MACARONS)).add_schema(schema=[opts.RadarIndicatorItem(name=kinds[0], max_=40000000),opts.RadarIndicatorItem(name=kinds[1], max_=30000000),opts.RadarIndicatorItem(name=kinds[2], max_=1000000),opts.RadarIndicatorItem(name=kinds[3], max_=150000),opts.RadarIndicatorItem(name=kinds[4], max_=10000000),opts.RadarIndicatorItem(name=kinds[5], max_=10000000),opts.RadarIndicatorItem(name=kinds[6], max_=1000000),],# 显示网格分区(蜘蛛网)splitarea_opt=opts.SplitAreaOpts(is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)),# 设置文本标签颜色textstyle_opts=opts.TextStyleOpts(color='#09a1c3'),).add(series_name=years[i],data=data[i],areastyle_opts=opts.AreaStyleOpts(color=color[i],opacity=0.2), # 区域颜色,透明度)# 设置标签不显示.set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(# 设置标题位于雷达图的中央以及字体大小title="{}".format(years[i]),pos_top='center', pos_left='center',title_textstyle_opts=opts.TextStyleOpts(font_size=15)),legend_opts=opts.LegendOpts(is_show=False)))tl_radar.add(radar, "{}".format(years[i]))tl_radar.add_schema(is_timeline_show=False,is_auto_play=True)

数据大屏

在这里插入图片描述

核心代码

# 页面布局。调用已经封装好的绘制各种类型图的函数
page = Page()
page.add(title(),  # 调用函数绘制标题“基于pyecharts的数据大屏”funnel(),  # 调用函数绘制漏斗图maps(),  # 调用函数绘制地图bar(),  # 调用函数绘制柱状图pie(),  # 调用函数绘制圆环图rader(),  # 调用函数绘制雷达图timeline()  # 调用函数绘制时间线轮播柱形图)
page.render("./chart10/数据大屏.html")# 调整布局结构
from bs4 import BeautifulSoup
with open("./chart10/数据大屏.html", "r+", encoding='utf-8') as html:html_bf = BeautifulSoup(html, 'lxml')divs = html_bf.select('.chart-container')# 中上方divs[0]["style"] = "width:40%;height:10%;position:absolute;top:0;left:30%;"# 中中位置divs[1]["style"] = "width:40%;height:45%;position:absolute;top:10%;left:30%;"# 中下方divs[2]["style"] = "width:40%;height:50%;position:absolute;top:50%;left:30%;"# 左上divs[3]["style"] = "width:30%;height:50%;position:absolute;top:0;left:0;"# 左下divs[4]["style"] = "width:30%;height:50%;position:absolute;top:50%;left:0;"# 右上divs[5]["style"] = "width:30%;height:50%;position:absolute;top:0;left:70%;"# 右下divs[6]['style'] = "width:30%;height:50%;position:absolute;top:50%;left:70%;"body = html_bf.find("body")html_new = str(html_bf)html.seek(0, 0)html.truncate()html.write(html_new)html.close()

matplotlib

棉棒图

在这里插入图片描述

核心代码

fig: plt.Figure = plt.figure(figsize=(8, 6), dpi=300)
axes: plt.Axes = fig.add_subplot(111)
markerline, stemline, baseline = axes.stem(x, y, linefmt='-', markerfmt='or' )
# 设置棉棒图线段的属性
plt.setp(markerline, lw=0.5, markersize=4)
plt.setp(baseline, lw=1, color='k')
plt.setp(stemline, lw=1, color=['g','r','skyblue','pink','y','m','orange'])
axes.set_title("2012年至2018年普通高等学校数量变化", fontsize=14, pad=15)
axes.set_xticks(x)
axes.set_xticklabels(x_label, fontsize=12)
axes.set_ylabel("数量/所", fontsize=12, labelpad=10)
axes.set_ylim(0, 200)
# 显示y轴网格线
axes.grid(axis='y', alpha=0.5, ls=':')
# 隐藏上下边和右边轴脊
axes.spines['top'].set_color('none')
axes.spines['left'].set_color('none')
axes.spines['right'].set_color('none')
axes.spines['bottom'].set_color('none')
# 隐藏x轴y轴的刻度
axes.xaxis.set_ticks_position('none')
axes.yaxis.set_ticks_position('none')
# 注释文本
for temp_x, temp_y in zip(x, y):axes.text(temp_x, temp_y+5, s='{}'.format(temp_y), ha='center', va='bottom', fontsize=14)

饼图

在这里插入图片描述

核心代码

fig: plt.Figure = plt.figure(figsize=(8,4),dpi=300)
# 自定义布局
gs = fig.add_gridspec(6,2)
ax:plt.Axes = fig.add_subplot(gs[:1,:])
# 隐藏全部轴脊
ax.axis('off')
# 显示主标题
ax.set_title('2018年本科、专科招生和毕业人数比例')
# 绘制饼图
ax_pie1:plt.Axes = fig.add_subplot(gs[1:6,0])
ax_pie1.pie(data1, labels=kinds1, radius=1, autopct='%.2f%%', startangle=90)
ax_pie2:plt.Axes = fig.add_subplot(gs[1:6,1])
ax_pie2.pie(data2, labels=kinds2, radius=1, autopct='%.2f%%', startangle=90)
# 显示子图标题
ax_pie1.set_title('招生比例')
ax_pie2.set_title('毕业比例')
# 添加表格
ax_table1:plt.Axes = fig.add_subplot(gs[:,0])
ax_table1.axis('off')
ax_table1.table(cellText=[['28.28 万人', '29.04 万人']],cellLoc='center',colLabels=kinds1,loc='bottom')
ax_table2:plt.Axes = fig.add_subplot(gs[:,1])
ax_table2.axis('off')
ax_table2.table(cellText=[['25.39 万人', '26.99 万人']],cellLoc='center',colLabels=kinds2,loc='bottom')
# 自动调整布局
plt.tight_layout()

词云图

在这里插入图片描述

核心代码

import jieba
import wordcloud
from imageio import imread
mask = imread("./chart10/猴子.png")  # 背景图片
file = open("./chart10/意见.txt","r",encoding="utf-8")
t = file.read()  # 读取文本内容
file.close()
ls = jieba.lcut(t)  # 分词
txt = " ".join(ls)  # 词之间用空格间隔开
txt = txt.replace("和","")  # 去掉 “和”, 无意义文字
txt = txt.replace("的","xxx")  # 一般情况下,“的” 数量最多,可替换成姓名,用于显示最大
w = wordcloud.WordCloud(font_path="C:\\Windows\\Fonts\\msyh.ttc",mask=mask,background_color="white")
w.generate(txt)

组合图表

在这里插入图片描述

核心代码

fig: plt.Figure = plt.figure(figsize=(8, 6), dpi=300)
axes: plt.Axes = fig.add_subplot(111)
# 绘制柱状图
axes.bar(x, y1, color='orange', label='本科招生人数', alpha=0.7, width=0.4)
axes.bar(x, y2, bottom=y1, color='g',label='专科招生人数', alpha=0.7, width=0.4)
axes.set_title('2012年至2018年高等学校招生人数及增长情况', fontsize=14, pad=15)
axes.set_xticks(x)
axes.set_ylim(0, 80)
axes.set_xticklabels(x_label)
axes.set_ylabel('人数(万人)', labelpad=10)
# 设置左边 y轴的刻度方向
axes.tick_params(axis='y', direction='in')
# 添加网格显示
axes.grid(b=True, ls=':', lw=1, alpha=0.8)
# 使用右边另一个y轴,绘制折线
ax_right = axes.twinx()
line = ax_right.plot(np.arange(1,7), ls, 'mo-.',label='增长率',)
ax_right.set_ylabel('招生增长率(%)',labelpad=10)
ax_right.set_ylim(-0.5, 0.1)
# 设置右边 y轴的刻度方向
ax_right.tick_params(axis='y', direction='in')
# 添加注释文本
for temp_x, temp_y in zip(np.arange(1,7), ls):ax_right.text(temp_x, temp_y+0.01, s='{}'.format(temp_y), ha='center',va='bottom', fontsize=10)
# 添加平均水平线
average1 = y1.mean()
average2 = y2.mean()
axes.axhline(average1, ls='--',label='本科招生人数平均线', lw=1, color='orange')
axes.text(6.7, average1+2, s='{}万人'.format(np.round(average1, 2)),ha='center', va='center', fontsize=12, color='orange')
axes.axhline(average1 + average2, ls='-.',label='专科招生人数平均线', lw=1, color='g')
axes.text(6.7, average1+average2+2, s='{}万人'.format(np.round(average2, 2)),ha='center', va='center', fontsize=12, color='g')
# 显示图例
axes.legend(loc='lower right')
ax_right.legend()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/68674.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【五子棋实战】第4章 部署五子棋计算接口到Window、Linux上

【五子棋实战】第4章 部署五子棋计算接口到Window、Linux上 python项目打包成exe可执行文件 ## 步骤一、安装pyinsatller ## 步骤二、使用pyinstaller打包Python程序 ## 操作演示 ## 注意事项&#xff01;&#xff01; python的Flask接口部署&#xff08;Linux&#xff09; ##…

openstack 之 nova调度过程及源码分析

目录 一.nova-scheduler基本介绍 1.1 基本配置 1.2 调度过程 二. nova-scheduler调度过程源码剖析 2.1 /nova/scheduler/filter_scheduler.py/FilterSchduler/_schedule()&#xff1a; 2.2 /nova/scheduler/filter_scheduler.py/FilterSchduler/_get_sorted_hosts()&#x…

中本聪思想精髓难以领悟?Web3实际上还在“幻想”之中?

Web3概念是不错&#xff0c;有人说它是下一代互联网&#xff0c;有人说它是NFT和元宇宙等未来应用的基础设施。然而理论炒得火热&#xff0c;但却仍不见像ChatGPT一样能引爆市场的杀手级应用出现。 原因在于&#xff0c;当前的Web3概念是对中本聪思想的不断概括和提炼&#xff…

继微信dat之后的PC端微信解密后数据库数据抽取

前段时间弄了下微信的dat图片的解码&#xff0c;后续有同学问数据库的解码怎么弄.. 当然&#xff0c;后边陆陆续续的看了下&#xff0c;加上住院乱七八糟的事情&#xff0c;一直没处理&#xff0c;最近几天处理了下&#xff0c;发现微信数据库的数据格式是真的麻烦... 如何查看…

【腾讯开发者大会】天刀手游开发历程(笔记)

前言 最近腾讯游戏学院发布了一些游戏行业内大佬们的分享视频&#xff0c;观看这些视频&#xff0c;我们可以了解到行业内最新的一些技术知识等&#xff0c;以便提升自己的水平。之前也看到天刀手游是基于Unity制作的&#xff0c;同时自己也作为一名天刀游戏的玩家&#xff0c…

【028】仿猫眼、淘票票的电影后台管理和售票系统系统(含后台管理)(含源码、数据库、运行教程)

文章目录 1.项目概要介绍2.用户运行界面截图3.后台管理员界面截图4.后端启动教程5.前端启动教程6.源码获取 1.项目概要介绍 前言&#xff1a;这是基于VueNodeMysql的模仿猫眼、淘票票的电影购票系统&#xff0c;有 附源码、数据库、运行教程 技术栈&#xff1a;Vue、element-u…

C# 使用微软自带的Speech进行语音输出

1、在VS中使用微软自带的Speech进行语音播报&#xff0c;首先需要添加引用&#xff1a; 2、具体实现逻辑代码如下&#xff1a; 转载于:https://www.cnblogs.com/hh8888-log/p/10785112.html

如何使用 Web Speech API 在浏览器中识别语音

Web Speech API有两个功能&#xff1a;语音合成&#xff08;文本到语音&#xff09;和语音识别&#xff08;语音到文本&#xff09;。在上一篇文章中&#xff0c;我解释了语音合成&#xff0c;但这次SpeechRecognition我将解释使用 API 的浏览器的语音识别和语音转录的方法。 识…

使用windows自带的语音引擎在客户端朗读一段文本

背景&#xff1a;之前公司有特殊要求&#xff0c;需要在特殊的环境下进行语音播报&#xff0c;且是物理隔离的内网状态&#xff0c;大家懂的。 环境&#xff1a;Windows 7 、IE系列 1. 先在网上看了一下前辈们的文章&#xff0c;发现还是有解决方案的&#xff0c;例如这个 使用…

占领手机,银行App的隐秘战事

作者 | 辰纹 来源 | 洞见新研社 十几年前&#xff0c;银行用各类卡片塞满我们的钱包&#xff1b;如今&#xff0c;银行用各种App塞满我们的手机。 说出来可能很多人还不相信&#xff0c;民商智慧《2019银行业电子银行场景营销分析报告》就提到&#xff0c;在2019年3月时&…

ADAS“中国战事”升级

尽管全球汽车产业面临严重的缺芯困境&#xff0c;但汽车智能化&#xff0c;尤其是辅助驾驶的新车搭载量、渗透率仍处于持续上升通道。 高工智能汽车研究院监测数据显示&#xff0c;今年1-6月国内新车&#xff08;合资自主&#xff09;搭载前向ADAS&#xff08;L0-L2&#xff0…

中国数据库产业的“高地战事”

作者 | Aholiab 出品 | CSDN(ID&#xff1a;CSDNnews&#xff09; 随着5G技术的飞速发展&#xff0c;海量数据的持续激增&#xff0c;大数据时代数据库行业也迎来了快速增长。 作为大数据存储、处理、分析的关键系统&#xff0c;基础软件核心之一&#xff0c;数据库对推动中国互…

python数据挖掘电影评分分析_豆瓣电影数据与票房数据分析

写在前面 在上次观看了比利.林恩的中场战事之后,开始进入了豆瓣的电影世界,对于一个新用户来说,特别喜欢豆瓣电影的影评,对于所看过的留下深刻印象的电影都在豆瓣上搜了一边,同一部电影,希望能看到与自己感受不同的观点,因为每一位观众都有着不一样的人生轨迹,看待事物…

百度的春晚战事

“我们对春晚一无所知。” 罗振宇曾在跨年演讲上如是说。 无论悲喜&#xff0c;反正每个中国人都为春晚辟出了一块“专属记忆”。而从2015年开始&#xff0c;中国人的春晚记忆里被点上了一颗“红痣”。那就是——总有一家顶尖互联网公司面带羞赧地走上舞台&#xff0c;给十几…

知云文献翻译打不开_英文PDF文献翻译神器-知云文献翻译

在经历了之前推荐的通天塔文献翻译网站次数使用完毕&#xff0c;冲会员才能继续使用&#xff1b;谷歌PDF翻译无法使用&#xff1b;谷歌文字翻译要自己手动删空格&#xff0c;还要受5000字符数&#xff08;注意&#xff0c;是字符数不是字数&#xff09;限制的折磨之后&#xff…

知云文献翻译打不开_只推荐这两款翻译软件!

上传文档、复制到网页等等&#xff0c;都是渣渣&#xff01;难道就没有一边看一边就自动翻译的软件&#xff1f;有&#xff01;有的&#xff01;还不止一款&#xff01;诚意推荐给你&#xff01; 截止2020年&#xff0c;因为学业需要&#xff0c;本人每天都需要阅读外文&#x…

知云文献翻译打不开_有了这几个软件,轻松读懂英文文献

科研路上&#xff0c;大家伙儿难免绕不开的结就是——阅读英文文献。 然而&#xff0c;当你问大神用的什么翻译软件时&#xff1f;大神会分分种藐视你&#xff0c;人家偶尔查个单词跟你要查整篇文章完全是两个概念&#xff0c;咱们跟大神面对的是不同的问题&#xff0c;这也是为…

文献工具 Citavi+知云翻译

1、B站一位UP主分享的Citavi知云翻译的高效管理阅读文献的方法&#xff1a; https://www.bilibili.com/video/BV1Zt4y117XX/ 其中如何在tools中显示 经实验发现&#xff0c;是需要修改自己电脑上PDF的默认打开方式的&#xff0c;这个操作也特别简单 随便找一个PDF文件&#xf…

知云文献翻译打不开_一款好用的文献英中翻译软件

“ 知云文献翻译 ” 软件是我用过的一款比较好用的文献翻译软件。操作简单&#xff0c;只需要将文献 PDF 在这个软件中打开&#xff0c;第一次登录时点击右侧“重新登录”&#xff0c;用微信扫码登录即可。左键选中 PDF 中没有看懂的单词、句子、甚至是段落&#xff0c;该软件右…

知云文献翻译跨页内容选中翻译操作

知云文献翻译阅读软件跨页内容选中翻译操作 跨页内容选中翻译。 很多PDF段落分布在两个页面&#xff0c;划选容易将中间的页眉等杂乱文字选中。6.6版本开始支持跨页内容选中翻译。 方法是&#xff1a; 先选中前面部分的文字&#xff0c;然后按住Alt键选中后面的文字部分。 …