一个废物大学生的学习日常day1(10月23日)(折线图与地图的绘制
本人目前还是一在校大二学生,对未来感到十分迷茫,但又不愿意一直躺平,于是就写博客来纪录一下每天的学习日常。我也不知道能写多久,但写一天算一天吧。欢迎大家一起打卡交流。
目录
一.python方面的学习
1.运用pyecharts模块制作简单折线图
2.运用pyecharts模块制作全国疫情地图
二.数据结构方面的学习
1.归并排序的递归实现方式
2.归并排序的非递归实现方式
一.python方面的学习
其实在大一的时候已经学过python了,但是学的很浅,最近学校工作室招新,想补一下python然后去面试工作室。
今天学习了简单的运用pyecharts模块
pyecharts模块的介绍: http://pyecharts.org
1.运用pyecharts模块制作简单折线图
过程:从文件中取出数据->在懒人工具中处理数据->导入模块->传入数据->绘图
from pyecharts.charts import Line #我们要制作的是一个折线图line = Line()line.add_xaxis()#传入折线图的X坐标的数据
line.add_yaxis()#传入折线图的y坐标的数据line.set_global_opts()#修改折线图的全局配置项line.render()#导出一个html文件
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LabelOpts
#从文件中读取数据
f_us = open("E:\美国.txt","r",encoding="UTF-8")
f_jp = open("E:\日本.txt","r",encoding="UTF-8")
f_in = open("E:\印度.txt","r",encoding="UTF-8")
us_data = f_us.read()
jp_data = f_jp.read()
in_data = f_in.read()
#处理数据
us_data = us_data.replace("jsonp_1629344292311_69436(","")
jp_data = jp_data.replace("jsonp_1629350871167_29498(","")
in_data = in_data.replace("jsonp_1629350745930_63180(","")
us_data = us_data[:-2]
jp_data = jp_data[:-2]
in_data = in_data[:-2]
us_dict = json.loads(us_data)
jp_dict = json.loads(jp_data)
in_dict = json.loads(in_data)
us_trend_data = us_dict['data'][0]['trend']
jp_trend_data = jp_dict['data'][0]['trend']
in_trend_data = in_dict['data'][0]['trend']
us_x_data = us_trend_data['updateDate'][:314]
jp_x_data = jp_trend_data['updateDate'][:314]
in_x_data = in_trend_data['updateDate'][:314]
us_y_data = us_trend_data['list'][0]['data'][:314]
jp_y_data = jp_trend_data['list'][0]['data'][:314]
in_y_data = in_trend_data['list'][0]['data'][:314]
#传入数据
line = Line()
line.add_xaxis(us_x_data)
line.add_yaxis("美国确诊人数",us_y_data,label_opts=LabelOpts(is_show=False))
line.add_yaxis("日本确诊人数",jp_y_data,label_opts=LabelOpts(is_show=False))
line.add_yaxis("印度确诊人数",in_y_data,label_opts=LabelOpts(is_show=False))
#绘图
line.set_global_opts(title_opts=TitleOpts(title="2020年美日印三国确诊人数折线图",pos_left="center",pos_bottom="1%"))
line.render()
f_us.close()
f_jp.close()
f_in.close()
line.set_global_opts(title_opts=TitleOpts(title="2020年美日印三国确诊人数折线图",pos_left="center",pos_bottom="1%"))"""想修改line的全局配置必须通过 from pyecharts.options import * 来导入模块,这里我们通过import * 直接全部导入"""
"""几种常见的全局配置项;TitleOpts:标题配置项LegendOpts:图例配置项VisualMapOpts:视觉映射配置项ToolboxOpts:工具箱配置项TooltipOpts:提示框配置项"""
"""pos_left:可以控制标题距离左边的位置pos_bottom:可以控制标题距离底部的位置"""
line.add_yaxis("美国确诊人数",us_y_data,label_opts=LabelOpts(is_show=False))
"""label_opts=LabelOpts(is_show=False) 可以让节点上的数字不显示,鼠标放上去了之后才显示
"""
2.运用pyecharts模块制作全国疫情地图
from pyecharts.charts import Map #依旧是导入模块
map = Map()
map.add()#传入数据
map.set_global_opts()#修改图的全局配置
map.render()#导出一个html文件
import json
from pyecharts.charts import Map
from pyecharts.options import *f = open("E:/疫情.txt","r",encoding="UTF-8")
data = f.read()
f.close()
data_dict = json.loads(data)
province_data_list = data_dict["areaTree"][0]["children"]
data_list = []
for province_data in province_data_list:province_name = province_data["name"]province_confirm = province_data["total"]["confirm"]data_list.append((province_name,province_confirm))
map = Map()
map.add("各省份确诊人数",data_list,"china")
map.set_global_opts(title_opts=TitleOpts(title="全国疫情地图"),visualmap_opts=VisualMapOpts(is_show=True,is_piecewise=True,pieces=[{"min":1,"max":99,"label":"1~99人","color":"#CCFFFF"},{"min":100,"max":999,"label":"100~999人","color":"#FFFF99"},{"min":1000,"max":4999,"label":"1000~4999人","color":"#FF9966"},{"min":5000,"max":9999,"label":"5000~9999人","color":"#FF6666"},{"min":10000,"max":99999,"label":"10000~99999人","color":"#CC3333"},{"min":100000,"label":"100000+","color":"#990033"}])
)
map.render()
map.add("各省份确诊人数",data_list,"china")
#data_list传进去的是一个列表,列表里面的内容是一个个元组,"china"不写的话默认是"china"
map.set_global_opts(title_opts=TitleOpts(title="全国疫情地图"),#修改标题visualmap_opts=VisualMapOpts(is_show=True,#显示is_piecewise=True,pieces=[{"min":1,"max":99,"label":"1~99人","color":"#CCFFFF"},{"min":100,"max":999,"label":"100~999人","color":"#FFFF99"},{"min":1000,"max":4999,"label":"1000~4999人","color":"#FF9966"},{"min":5000,"max":9999,"label":"5000~9999人","color":"#FF6666"},{"min":10000,"max":99999,"label":"10000~99999人","color":"#CC3333"},{"min":100000,"label":"100000+","color":"#990033"}])
)
visualmap_opts=VisualMapOpts()#修改视觉映射
is_piecewise#分段显示
pieces=[{"min":1,"max":99,"label":"1~99人","color":"#CCFFFF"},{"min":100,"max":999,"label":"100~999人","color":"#FFFF99"},{"min":1000,"max":4999,"label":"1000~4999人","color":"#FF9966"},{"min":5000,"max":9999,"label":"5000~9999人","color":"#FF6666"},{"min":10000,"max":99999,"label":"10000~99999人","color":"#CC3333"},{"min":100000,"label":"100000+","color":"#990033"}]
#因为默认区间是0~100,我们这里的数据已经超过了100,所以需要用 pieces=[{}] 来进行手动分段
#pieces本身是一个列表,里面的元素类型是字典
import json
from pyecharts.charts import Map
from pyecharts.options import *f = open("E:/疫情.txt","r",encoding="UTF-8")
data = f.read()
f.close()data_dict = json.loads(data)
sichuan_data_list = data_dict["areaTree"][0]["children"][12]["children"]
data_list = []
data_list.append(("阿坝藏族羌族自治州",1))
data_list.append(("甘孜藏族自治州",78))
data_list.append(("凉山彝族自治州",13))
for sichuan_data in sichuan_data_list:sichuan_name = sichuan_data["name"] + '市'sichuan_confirm = sichuan_data["total"]["confirm"]data_list.append((sichuan_name,sichuan_confirm))
print(data_list)
map = Map()
map.add("四川各市区确诊人数",data_list,"四川")
map.set_global_opts(title_opts=TitleOpts(title="四川疫情地图"),visualmap_opts=VisualMapOpts(is_show=True,is_piecewise=True,pieces=[{"min": 1, "max": 99, "label": "1~99人", "color": "#CCFFFF"},{"min": 100, "max": 999, "label": "100~999人", "color": "#FFFF99"},{"min": 1000, "max": 4999, "label": "1000~4999人", "color": "#FF9966"},{"min": 5000, "max": 9999, "label": "5000~9999人", "color": "#FF6666"}])
)
map.render()
二.数据结构方面的学习
1.归并排序的递归实现方式
归并排序 时间复杂度: O(n*logn) 空间复杂度: O(n)
void _MergeSort(int* a, int left, int right, int* tmp) {//建立一个子函数,用来进行归并过程if (left >= right) {return;}int mid = (left + right) >> 1;//假设[left, mid - 1] [mid + 1, right] 有序,那么就可以归并了//如果没有序,那么继续划分_MergeSort(a, left, mid, tmp);_MergeSort(a, mid + 1, right, tmp);//开始归并int begin1 = left, end1 = mid;int begin2 = mid + 1, end2 = right;int index = left;while (begin1 <= end1 && begin2 <= end2) {if (a[begin1] < a[begin2]) {//将小的数放在临时数组的index位置上tmp[index++] = a[begin1++];}else {tmp[index++] = a[begin2++];}}//当有一边结束的时候,把另一边的数放进临时数组while (begin1 <= end1) {tmp[index++] = a[begin1++];}while (begin2 <= end2) {tmp[index++] = a[begin2++];}//再将临时数组的值拷进原数组for (int j = left; j <= right; ++j) {a[j] = tmp[j];}
}void MergeSort(int* a, int n) {int* tmp = (int*)malloc(sizeof(int) * n);//归并有空间复杂度的消耗_MergeSort(a, 0, n - 1, tmp);free(tmp);
}
2.归并排序的非递归实现方式
void MergeSortNR(int* a, int n) {int* tmp = (int*)malloc(sizeof(int) * n);//归并有空间复杂度的消耗int gap = 1;//每组数据个数while (gap < n) {for (int i = 0; i < n; i += gap * 2) {//[i, i + gap - 1] [i + gap. i + 2 * gap - 1]int begin1 = i, end1 = i + gap - 1;int begin2 = i + gap, end2 = i + 2 * gap - 1;//归并过程中右半区间可能不存在if (begin2 >= n) {break;}//归并过程中右半区间算多了,需要修正end2if (end2 >= n) {end2 = n - 1;}int index = i;while (begin1 <= end1 && begin2 <= end2) {if (a[begin1] < a[begin2]) {//将小的数放在临时数组的index位置上tmp[index++] = a[begin1++];}else {tmp[index++] = a[begin2++];}}//当有一边结束的时候,把另一边的数放进临时数组while (begin1 <= end1) {tmp[index++] = a[begin1++];}while (begin2 <= end2) {tmp[index++] = a[begin2++];}//再将临时数组的值拷进原数组for (int j = i; j <= end2; ++j) {a[j] = tmp[j];}}gap *= 2;}free(tmp);
}
为什么不用栈和队列去模拟实现非递归呢,因为用栈和队列去存区间会有空间的消耗,而用循环去写就不需要。
这是我人生中写的第一篇博客,只是为了纪录一下学习过程,感觉学到知识后再写一遍忘得会比较慢,以后也能想看就看
一个废物大学生的学习日常day1(10月23日)(折线图与地图的绘制相关推荐
- 10月23日,相约全球边缘计算大会·上海站
全球边缘计算大会·上海站,将于10月23日在上海召开. 本次大会,既有前沿技术研究分享,又有边缘计算落地实践.应用案例,是一次边缘计算领域的大型综合性会议. 早上设置了1个主会场,下午设置3个分会场, ...
- [分享] 从定制Win7母盘到封装详细教程 By BILL ( 10月23日补充说明 )
[分享] 从定制Win7母盘到封装详细教程 By BILL ( 10月23日补充说明 ) billcheung 发表于 2011-10-23 00:07:49 https://www.itsk.com ...
- 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(10月17日~10月23日)...
工作日奖励政策: 活动时间:2015年10月19日~2015年10月23日 更新日期:2015年10月19日 滴滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Ub ...
- 2022年10月23日周赛ZZULIOJ
文章目录 问题 B: 芝华士威士忌和他的小猫咪们 代码&注释 问题 C: 愿我的弹雨能熄灭你们的痛苦 代码注释 问题 D: 猜糖果游戏 代码注释 问题 E: 有趣的次方 代码注释 问题 F: ...
- 秘书联盟服务器维护,10月23日服务器例行维护公告(已完成)
亲爱的玩家: 青龙乱舞区.大地飞鹰区.天命风流区.沧海云帆区.边城浪子区全部服务器将在10月23日6:00~10:00停机维护更新,维护完成后上述各服务器客户端版本更新至2.1.2.7.本次维护主要调 ...
- 炉石传说服务器维护时间2020,炉石传说2020年10月23日秋季发布会开始时间
炉石传说2020年10月23日秋季发布会开始时间是什么时候.今年的秋季发布会将会迎来炉石的重大消息.之前一直有有消息的炉石新模式也即将在秋季发布会公布并且还有炉石下个拓展包的消息.那么一起看看秋季发布 ...
- 九阴服务器维护,九阴:全区服10月23日9:00-10:00临时维护公告
尊敬的玩家: <九阴真经>全区全服将于10月23日9:00-10:00停机进行临时维护工作,预计维护时间为1小时.请广大玩家在维护前退出游戏,以免出现不必要的损失.维护过程中将暂时无法登录 ...
- 2017年10月23日提高组T2 灵知的太阳信仰 单调队列优化dp
Description 在炽热的核熔炉中,居住着一位少女,名为灵乌路空. 据说,从来没有人敢踏入过那个熔炉,因为人们畏缩于空所持有的力量--核能. 核焰,可融真金. 咳咳. 每次核融的时候,空都会选取 ...
- 计算机视觉最新进展概览2021年10月18日到2021年10月23日
1.Anisotropic Separable Set Abstraction for Efficient Point Cloud Representation Learning 在各种移动设备中嵌入 ...
最新文章
- 数据结构 -- 散列表
- 恍然大悟之原、反、补
- 有规律格式化文本文件插入数据库
- java 中gui的作用_java学习中最应该注意的Java GUI用户界面以何为基础
- 做爱做的事,做有快感的事
- This generally means that another instance of this process was already runni
- 在NIO.2中创建文件和目录
- python连接opencv库_利用Python和OpenCV库将URL转换为OpenCV格式的方法
- 光驱安装centos7系统过程_centos7可以ping通外网_可以ping通内网其他机器_但是其他机器就是ping不通centos7_太神奇了---linux工作笔记041
- poj 1743 二分答案+后缀数组 求不重叠的最长重复子串
- 持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05
- Mac电脑用CrossOver安装的Windows软件在哪?
- 阿里云服务器安装mysql数据库及连接使用
- 用来正常显示中文标签显示错误代码plt.rcParams[‘font.sans-serif’] = [‘SimHei’]无法运行
- linux安装微信 安装百度网盘 下载大文件
- 盘点那些年用过的机械键盘,为什么我最爱Keychron键盘呢
- VR火灾隐患排查,模拟多种火灾场景
- 安全设置 不允许 html,当前安全设置不允许该文件,教您当前安全设置不允许该文件怎么解决...
- Pattern Recognition And Machine Learning读书会前言
- packet tracer 学习ARP报文请求