Python可视化学习——使用JSON进行数据转换、pyecharts模块调用以及可视化案例的介绍(可视化案例数据暂无),柱状图及动态柱状图的构建

news2024/11/29 11:46:36

数据可视化

可视化效果一:2020年印美日新冠累计确诊人数

2020年是新冠疫情爆发的一年,随着疫情的爆发,国内外确诊人数成了大家关心的热点,相信大家都有看过类似的疫情报告.本案例对印度美国日本三个国家确诊人数的进行了可视化处理,形成了可视化的疫情确诊人数报告.

 可视化效果二:全国疫情地图可视化

 可视化效果三:动态GDP增长图

 此处没有办法进行动态变化,希望大家自行想象,接下来开始可视化的学习。

1.json数据转换

JSON是一种轻量级的数据交互格式,可以按照JSON指定的格式去组织和封装数据

JSON本质上是一种带有特定格式的字符串

主要功能:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互 类似于:国际通用语言-英语,中国56个民族不同地区的通用语言-普通话

各种编程语言存储数据的容器不尽相同,在Python中有字典dict这样的数据类型,而其它语言可能没有对应的字典

为了让不同的语言都能够相互通用的互相传递数据,JSON就是一种非常良好的中转数据格式。

json格式数据转化

#json数据的格式可以是:
{"name":"admin","age":18}
# 也可以是:
[{"name":"admin","age":18},{"name":"root","age":16},{"name":"张三","age":20}]

json格式说白了就是python的列表或者字典,唯一的要求就是列表内部嵌套的必须是字典,二对于字典本身的话,就没有任何格式或者形式上的要求。

json本质上是字符串。

Python数据和Json数据之间的相互转化

通过代码来对该知识点进行熟悉

列表嵌套字典形式

# 导入json模块
import json
​
# 准备符合格式json格式要求的python数据
data1 = [{"name":"William","age":18},{"name":"Jeff","age":18}]
data2 = [{"name":"张三","age":18},{"name":"李四","age":18}]
json_str1 = json.dumps(data1)
print(type(json_str1))
print(json_str1)
​
json_str2 = json.dumps(data2,ensure_ascii=False)
print(type(json_str2))
print(json_str2)

如果包含中文,那么要加上ensure_ascii=False

字典形式

import json
# 准备字典,将字典转换为Json
d = {"name":"张三","address":"浙江"}
json_str = json.dumps(d,ensure_ascii=False)
print(type(json_str))
print(json_str)
# 将python字符串转换为Python数据类型[{k:v,k:v},{k:v,k:v}]
s = '[{"name":"张三","address":"浙江"},{"name":"李四","address":"江苏"}]'
l = json.loads(s)
print(type(l))
print(l)

2.pyecharts模块介绍

概况:

Echarts是个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而Python是门富有表达力的语言,很适合用于数据处理.当数据分析遇上数据可视化时pyecharts诞生了。

打开官方网站pyecharts.org

 然后打开一个画廊的功能网站 Document

 pyecharts模块安装

使用在前面学过的pip命令即可快速安装PyEcharts模块

打开命令提示符,再输入pip install pyecharts

 然后输入python,再导入import pyecharts

 

 显示到这里,说明安装没有错误,可以正常使用。

3.pyecharts快速入门

1.基础折线图

# 导包,导入Line功能构建折线图对象
from pyecharts.charts import Line
# 得到折线图对象
line = Line()
# 添加x轴数据
line.add_xaxis(["中国","美国","英国"])
# 添加y轴数据
line.add_yaxis("GDP",[30,20,10])
# 生成图表
line.render()

构建完成我们的折线图之后进行运行操作,会发现旁边文件栏中出现了render.html,点击该文件的网页功能就可以查看相应的网页功能。

 2.pyecharts的配置选项

全局配置选项

set_global_opts方法:

这里全局配置选项可以通过set_global_opts方法来进行配置,相应的选项和选项的功能如下:

当我们完成了图表后,就可以通过set_global_opts方法

Line.set_global_opts(    title_opts=TitleOpts("测试",pos_left="center",pos_bottom="1%"),    legend_opts=LegendOpts(is_show=True),    toolbox_opts=ToolboxOpts(is_show=True),    visualmap_opts=VisualMapOpts(is_show=True),    tooltip_opts=TooltipOpts(is_show=True), )

在我们上面原有的基础上进行如下操作:

  1. 配置图表的标题

  2. 配置图例

  3. 配置鼠标移动效果

  4. 配置工具栏

  5. 等整体配置项

# 导包,导入Line功能构建折线图对象
from pyecharts.charts import Line
# 得到折线图对象
line = Line()
# 添加x轴数据
line.add_xaxis(["中国","美国","英国"])
# 添加y轴数据
line.add_yaxis("GDP",[30,20,10])
# 设置全局配置项
line.set_global_opts(
    title_
)
# 生成图表
line.render()

在进行查看就会发现这个全局配置出来的可视化图相当不错啦,当然要对这个图进一步改善,引入更多的全局配置内容,那么就需要通过pyecharts的官网了解啦。

 3.数据处理

打开一个网站ab173,这是一个懒人工具网站。在里面找到Json视图,然后可以把你选中的数据存放到如下的格式化处理器中,点击校验或者回车操作,这时候可以通过点击视图,将一大串的内容整合成相应的字典、列表包形式。

 很多需要的数据都可以通过第三方网站进行展示和模拟。

打开pycharm,进行相应的编码:

import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts
# 处理数据
f_us = open("D:/美国.txt",'r',encoding="UTF-8")
us_data = f_us.read() # 获得文件美国的全部内容
# 去掉不合JSON规范的开头
us_data = us_data.replcae("jsonp_1629344292311_69436(", ")
# 去掉不合JSON规范的结尾
us_data = us_data[:-2]
# JSON转Python字典
us_dict = json.loads(us_data)
print(type(us_dict))
print(us_dict)
# 获取trend key
trend_data = us_dict['data'][0]['trend']
# 获取日期数据,用于x轴,取2020年(到315下表结束)
x_data = json.loads['updateDate'][:314]
# 获取确认数据,用于y轴,去2020年(到315下标结束)
y_data = trend_data['list'][0]['data']
# 生成图表
line = line()
# 添加x轴数据
line.add_xaxis(us_x_data) # 使用一个国家的数据即可
# 添加y轴数据
line.add_yaxis('美国确诊人数',us_y_data,label_opts=LabelOpts)
# 设置全局设置
line.set_global_opts(
    # 标题设置
    title_opts = TitleOpts(title='2020年美国确诊人数折线图',pos_left='center',pos_bottom='1%')
)
# 生成图表
line.render()
# 关闭文件
f.close()

再打开json视图,将我们简化过的内容放置于该网站的Json视图中即可,可以查看

遗憾的是我这边暂时没有相应的数据文件和内容,没有办法在网页上对该可视化图进行显示。

可视化案例

1.地图-基础地图使用

基本地图演示

from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts
map = Map()
data = [
    ("浙江",9),
    ("江苏",19),
    ("北京",99),
    ("上海",199),
    ("海南",299),
    ("台湾",199),
    ("安徽",299),
    ("广州",399),
    ("湖北",599),
]
map.add("地图",data,"china")
# 全局设置
map.set_global_opts(
    visualmap_opts=VisualMapOpts(
        is_show=True,
        is_piecewise=True,
        pieces=[
            {"min": 1, "max": 9, "label": "1-9", "color": "#CCFFFF"},
            {"min": 10, "max": 99, "label": "10-99", "color": "#FF6666"},
            {"min": 100, "max": 600, "label": "100-600", "color": "#990033"}
        ]
    )
)
# 绘图
map.render()

通过ab173网站,在其中的前端中找到rgb颜色对照表

2.全国疫情地图构建

虽然没有相应的数据,但是不妨碍我们对代码进行熟悉和操作,让我们打开pychart

"""
演示全国疫情可视化地图开发
"""
import json
from pyecharts.charts import Map
from pyecharts.options import *
# 读取文件
f = open("D:/疫情.txt","r",encoding="UTF-8")
data = f.read() # 全国疫情数据获取
# 关闭文件
f.close()
# 获取到各省的数据
​
# 将字符串json转化为python的字典
data_dict = json.loads(data)
#从字典中取出每个省份的数据
province_data_list = data_dict["areaTree"][0]["children"]
# 组装每个省份和确诊人数为元组,并各省的数据都封装入列表
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)
print(data_list)
# 创建地图
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,"lable":"1~99人","color":"#CCFFFF"},
            {"min":100,"max":999,"lable":"100~999人","color":"#FFFF99"},
            {"min":1000,"max":4999,"lable":"1000~4999人","color":"#FF9966"},
            {"min":5000,"max":9999,"lable":"5000~9999人","color":"#FF6666"},
            {"min":10000,"max":99999,"lable":"10000~99999人","color":"#CC3333"},
            {"min":100000,"lable":"100000+人","color":"#990033"}
        ]
    ),
}
# 绘图
map.render()

3.浙江省空气质量地图绘制

import json
from pyecharts.charts import Map
from pyecharts.options import *
#f = open("D:/空气质量.txt","r",encording="UTF-8")
#data = f.read()
#f.close()
#data_dict = json.loads(data)
#cities_data = data_dict["areaTree"][3]["children"]
data_list = []
#for city_data in cities_data:
    #city_name = city_data["name"]+"市"
    #city_confirm = city_data["total"]["confirm"]
    #data_list(city_name,city_confirm)
#print(data_list)
data_list.append(("杭州",12))
data_list.append(("湖州",13))
data_list.append(("宁波",15))
data_list.append(("温州",18))
data_list.append(("嘉兴",20))
data_list.append(("丽水",34))
data_list.append(("台州",56))
data_list.append(("衢州",53))
data_list.append(("绍兴",18))
​
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":15,"lable":"优秀","color":"#CCFFFF"},
            {"min": 16, "max": 30, "lable": "良好", "color": "#FFFF99"},
            {"min": 31, "max": 45, "lable": "一般", "color": "#CC9966"},
            {"min": 46, "max": 60, "lable": "较差", "color": "#FF6666"},
            {"min": 61, "max": 75, "lable": "优秀", "color": "#CC3333"}
        ]
    )
​
)
map.render("浙江省空气质量监测.html")

 4.模仿百度空气可视化

下面是百度的空气质量可视化图:

import pyecharts.options as opts
from pyecharts.charts import BMap
​
data = [
    ["海门", 9],
    ["鄂尔多斯", 12],
    ["招远", 12],
    ["舟山", 12],
    ["齐齐哈尔", 14],
    ["盐城", 15],
    ["赤峰", 16],
    ["青岛", 18],
    ["乳山", 18],
    ["金昌", 19],
    ["泉州", 21],
    ["莱西", 21],
    ["日照", 21],
    ["胶南", 22],
    ["南通", 23],
    ["拉萨", 24],
    ["云浮", 24],
    ["梅州", 25],
    ["文登", 25],
    ["上海", 25],
    ["攀枝花", 25],
    ["威海", 25],
    ["承德", 25],
    ["厦门", 26],
    ["汕尾", 26],
    ["潮州", 26],
    ["丹东", 27],
    ["太仓", 27],
    ["曲靖", 27],
    ["烟台", 28],
    ["福州", 29],
    ["瓦房店", 30],
    ["即墨", 30],
    ["抚顺", 31],
    ["玉溪", 31],
    ["张家口", 31],
    ["阳泉", 31],
    ["莱州", 32],
    ["湖州", 32],
    ["汕头", 32],
    ["昆山", 33],
    ["宁波", 33],
    ["湛江", 33],
    ["揭阳", 34],
    ["荣成", 34],
    ["连云港", 35],
    ["葫芦岛", 35],
    ["常熟", 36],
    ["东莞", 36],
    ["河源", 36],
    ["淮安", 36],
    ["泰州", 36],
    ["南宁", 37],
    ["营口", 37],
    ["惠州", 37],
    ["江阴", 37],
    ["蓬莱", 37],
    ["韶关", 38],
    ["嘉峪关", 38],
    ["广州", 38],
    ["延安", 38],
    ["太原", 39],
    ["清远", 39],
    ["中山", 39],
    ["昆明", 39],
    ["寿光", 40],
    ["盘锦", 40],
    ["长治", 41],
    ["深圳", 41],
    ["珠海", 42],
    ["宿迁", 43],
    ["咸阳", 43],
    ["铜川", 44],
    ["平度", 44],
    ["佛山", 44],
    ["海口", 44],
    ["江门", 45],
    ["章丘", 45],
    ["肇庆", 46],
    ["大连", 47],
    ["临汾", 47],
    ["吴江", 47],
    ["石嘴山", 49],
    ["沈阳", 50],
    ["苏州", 50],
    ["茂名", 50],
    ["嘉兴", 51],
    ["长春", 51],
    ["胶州", 52],
    ["银川", 52],
    ["张家港", 52],
    ["三门峡", 53],
    ["锦州", 54],
    ["南昌", 54],
    ["柳州", 54],
    ["三亚", 54],
    ["自贡", 56],
    ["吉林", 56],
    ["阳江", 57],
    ["泸州", 57],
    ["西宁", 57],
    ["宜宾", 58],
    ["呼和浩特", 58],
    ["成都", 58],
    ["大同", 58],
    ["镇江", 59],
    ["桂林", 59],
    ["张家界", 59],
    ["宜兴", 59],
    ["北海", 60],
    ["西安", 61],
    ["金坛", 62],
    ["东营", 62],
    ["牡丹江", 63],
    ["遵义", 63],
    ["绍兴", 63],
    ["扬州", 64],
    ["常州", 64],
    ["潍坊", 65],
    ["重庆", 66],
    ["台州", 67],
    ["南京", 67],
    ["滨州", 70],
    ["贵阳", 71],
    ["无锡", 71],
    ["本溪", 71],
    ["克拉玛依", 72],
    ["渭南", 72],
    ["马鞍山", 72],
    ["宝鸡", 72],
    ["焦作", 75],
    ["句容", 75],
    ["北京", 79],
    ["徐州", 79],
    ["衡水", 80],
    ["包头", 80],
    ["绵阳", 80],
    ["乌鲁木齐", 84],
    ["枣庄", 84],
    ["杭州", 84],
    ["淄博", 85],
    ["鞍山", 86],
    ["溧阳", 86],
    ["库尔勒", 86],
    ["安阳", 90],
    ["开封", 90],
    ["济南", 92],
    ["德阳", 93],
    ["温州", 95],
    ["九江", 96],
    ["邯郸", 98],
    ["临安", 99],
    ["兰州", 99],
    ["沧州", 100],
    ["临沂", 103],
    ["南充", 104],
    ["天津", 105],
    ["富阳", 106],
    ["泰安", 112],
    ["诸暨", 112],
    ["郑州", 113],
    ["哈尔滨", 114],
    ["聊城", 116],
    ["芜湖", 117],
    ["唐山", 119],
    ["平顶山", 119],
    ["邢台", 119],
    ["德州", 120],
    ["济宁", 120],
    ["荆州", 127],
    ["宜昌", 130],
    ["义乌", 132],
    ["丽水", 133],
    ["洛阳", 134],
    ["秦皇岛", 136],
    ["株洲", 143],
    ["石家庄", 147],
    ["莱芜", 148],
    ["常德", 152],
    ["保定", 153],
    ["湘潭", 154],
    ["金华", 157],
    ["岳阳", 169],
    ["长沙", 175],
    ["衢州", 177],
    ["廊坊", 193],
    ["菏泽", 194],
    ["合肥", 229],
    ["武汉", 273],
    ["大庆", 279],
]
​
geoCoordMap = {
    "海门": [121.15, 31.89],
    "鄂尔多斯": [109.781327, 39.608266],
    "招远": [120.38, 37.35],
    "舟山": [122.207216, 29.985295],
    "齐齐哈尔": [123.97, 47.33],
    "盐城": [120.13, 33.38],
    "赤峰": [118.87, 42.28],
    "青岛": [120.33, 36.07],
    "乳山": [121.52, 36.89],
    "金昌": [102.188043, 38.520089],
    "泉州": [118.58, 24.93],
    "莱西": [120.53, 36.86],
    "日照": [119.46, 35.42],
    "胶南": [119.97, 35.88],
    "南通": [121.05, 32.08],
    "拉萨": [91.11, 29.97],
    "云浮": [112.02, 22.93],
    "梅州": [116.1, 24.55],
    "文登": [122.05, 37.2],
    "上海": [121.48, 31.22],
    "攀枝花": [101.718637, 26.582347],
    "威海": [122.1, 37.5],
    "承德": [117.93, 40.97],
    "厦门": [118.1, 24.46],
    "汕尾": [115.375279, 22.786211],
    "潮州": [116.63, 23.68],
    "丹东": [124.37, 40.13],
    "太仓": [121.1, 31.45],
    "曲靖": [103.79, 25.51],
    "烟台": [121.39, 37.52],
    "福州": [119.3, 26.08],
    "瓦房店": [121.979603, 39.627114],
    "即墨": [120.45, 36.38],
    "抚顺": [123.97, 41.97],
    "玉溪": [102.52, 24.35],
    "张家口": [114.87, 40.82],
    "阳泉": [113.57, 37.85],
    "莱州": [119.942327, 37.177017],
    "湖州": [120.1, 30.86],
    "汕头": [116.69, 23.39],
    "昆山": [120.95, 31.39],
    "宁波": [121.56, 29.86],
    "湛江": [110.359377, 21.270708],
    "揭阳": [116.35, 23.55],
    "荣成": [122.41, 37.16],
    "连云港": [119.16, 34.59],
    "葫芦岛": [120.836932, 40.711052],
    "常熟": [120.74, 31.64],
    "东莞": [113.75, 23.04],
    "河源": [114.68, 23.73],
    "淮安": [119.15, 33.5],
    "泰州": [119.9, 32.49],
    "南宁": [108.33, 22.84],
    "营口": [122.18, 40.65],
    "惠州": [114.4, 23.09],
    "江阴": [120.26, 31.91],
    "蓬莱": [120.75, 37.8],
    "韶关": [113.62, 24.84],
    "嘉峪关": [98.289152, 39.77313],
    "广州": [113.23, 23.16],
    "延安": [109.47, 36.6],
    "太原": [112.53, 37.87],
    "清远": [113.01, 23.7],
    "中山": [113.38, 22.52],
    "昆明": [102.73, 25.04],
    "寿光": [118.73, 36.86],
    "盘锦": [122.070714, 41.119997],
    "长治": [113.08, 36.18],
    "深圳": [114.07, 22.62],
    "珠海": [113.52, 22.3],
    "宿迁": [118.3, 33.96],
    "咸阳": [108.72, 34.36],
    "铜川": [109.11, 35.09],
    "平度": [119.97, 36.77],
    "佛山": [113.11, 23.05],
    "海口": [110.35, 20.02],
    "江门": [113.06, 22.61],
    "章丘": [117.53, 36.72],
    "肇庆": [112.44, 23.05],
    "大连": [121.62, 38.92],
    "临汾": [111.5, 36.08],
    "吴江": [120.63, 31.16],
    "石嘴山": [106.39, 39.04],
    "沈阳": [123.38, 41.8],
    "苏州": [120.62, 31.32],
    "茂名": [110.88, 21.68],
    "嘉兴": [120.76, 30.77],
    "长春": [125.35, 43.88],
    "胶州": [120.03336, 36.264622],
    "银川": [106.27, 38.47],
    "张家港": [120.555821, 31.875428],
    "三门峡": [111.19, 34.76],
    "锦州": [121.15, 41.13],
    "南昌": [115.89, 28.68],
    "柳州": [109.4, 24.33],
    "三亚": [109.511909, 18.252847],
    "自贡": [104.778442, 29.33903],
    "吉林": [126.57, 43.87],
    "阳江": [111.95, 21.85],
    "泸州": [105.39, 28.91],
    "西宁": [101.74, 36.56],
    "宜宾": [104.56, 29.77],
    "呼和浩特": [111.65, 40.82],
    "成都": [104.06, 30.67],
    "大同": [113.3, 40.12],
    "镇江": [119.44, 32.2],
    "桂林": [110.28, 25.29],
    "张家界": [110.479191, 29.117096],
    "宜兴": [119.82, 31.36],
    "北海": [109.12, 21.49],
    "西安": [108.95, 34.27],
    "金坛": [119.56, 31.74],
    "东营": [118.49, 37.46],
    "牡丹江": [129.58, 44.6],
    "遵义": [106.9, 27.7],
    "绍兴": [120.58, 30.01],
    "扬州": [119.42, 32.39],
    "常州": [119.95, 31.79],
    "潍坊": [119.1, 36.62],
    "重庆": [106.54, 29.59],
    "台州": [121.420757, 28.656386],
    "南京": [118.78, 32.04],
    "滨州": [118.03, 37.36],
    "贵阳": [106.71, 26.57],
    "无锡": [120.29, 31.59],
    "本溪": [123.73, 41.3],
    "克拉玛依": [84.77, 45.59],
    "渭南": [109.5, 34.52],
    "马鞍山": [118.48, 31.56],
    "宝鸡": [107.15, 34.38],
    "焦作": [113.21, 35.24],
    "句容": [119.16, 31.95],
    "北京": [116.46, 39.92],
    "徐州": [117.2, 34.26],
    "衡水": [115.72, 37.72],
    "包头": [110, 40.58],
    "绵阳": [104.73, 31.48],
    "乌鲁木齐": [87.68, 43.77],
    "枣庄": [117.57, 34.86],
    "杭州": [120.19, 30.26],
    "淄博": [118.05, 36.78],
    "鞍山": [122.85, 41.12],
    "溧阳": [119.48, 31.43],
    "库尔勒": [86.06, 41.68],
    "安阳": [114.35, 36.1],
    "开封": [114.35, 34.79],
    "济南": [117, 36.65],
    "德阳": [104.37, 31.13],
    "温州": [120.65, 28.01],
    "九江": [115.97, 29.71],
    "邯郸": [114.47, 36.6],
    "临安": [119.72, 30.23],
    "兰州": [103.73, 36.03],
    "沧州": [116.83, 38.33],
    "临沂": [118.35, 35.05],
    "南充": [106.110698, 30.837793],
    "天津": [117.2, 39.13],
    "富阳": [119.95, 30.07],
    "泰安": [117.13, 36.18],
    "诸暨": [120.23, 29.71],
    "郑州": [113.65, 34.76],
    "哈尔滨": [126.63, 45.75],
    "聊城": [115.97, 36.45],
    "芜湖": [118.38, 31.33],
    "唐山": [118.02, 39.63],
    "平顶山": [113.29, 33.75],
    "邢台": [114.48, 37.05],
    "德州": [116.29, 37.45],
    "济宁": [116.59, 35.38],
    "荆州": [112.239741, 30.335165],
    "宜昌": [111.3, 30.7],
    "义乌": [120.06, 29.32],
    "丽水": [119.92, 28.45],
    "洛阳": [112.44, 34.7],
    "秦皇岛": [119.57, 39.95],
    "株洲": [113.16, 27.83],
    "石家庄": [114.48, 38.03],
    "莱芜": [117.67, 36.19],
    "常德": [111.69, 29.05],
    "保定": [115.48, 38.85],
    "湘潭": [112.91, 27.87],
    "金华": [119.64, 29.12],
    "岳阳": [113.09, 29.37],
    "长沙": [113, 28.21],
    "衢州": [118.88, 28.97],
    "廊坊": [116.7, 39.53],
    "菏泽": [115.480656, 35.23375],
    "合肥": [117.27, 31.86],
    "武汉": [114.31, 30.52],
    "大庆": [125.03, 46.58],
}
​
​
def convert_data():
    res = []
    for i in range(len(data)):
        geo_coord = geoCoordMap[data[i][0]]
        geo_coord.append(data[i][1])
        res.append([data[i][0], geo_coord])
    return res
​
​
(
    BMap(init_opts=opts.InitOpts(width="1200px", height="800px"))
    .add(
        type_="effectScatter",
        series_name="pm2.5",
        data_pair=convert_data(),
        symbol_size=10,
        effect_opts=opts.EffectOpts(),
        label_opts=opts.LabelOpts(formatter="{b}", position="right", is_show=False),
        itemstyle_opts=opts.ItemStyleOpts(color="purple"),
    )
    .add_schema(
        baidu_ak="FAKE_AK",
        center=[104.114129, 37.550339],
        zoom=5,
        is_roam=True,
        map_style={
            "styleJson": [
                {
                    "featureType": "water",
                    "elementType": "all",
                    "stylers": {"color": "#044161"},
                },
                {
                    "featureType": "land",
                    "elementType": "all",
                    "stylers": {"color": "#004981"},
                },
                {
                    "featureType": "boundary",
                    "elementType": "geometry",
                    "stylers": {"color": "#064f85"},
                },
                {
                    "featureType": "railway",
                    "elementType": "all",
                    "stylers": {"visibility": "off"},
                },
                {
                    "featureType": "highway",
                    "elementType": "geometry",
                    "stylers": {"color": "#004981"},
                },
                {
                    "featureType": "highway",
                    "elementType": "geometry.fill",
                    "stylers": {"color": "#005b96", "lightness": 1},
                },
                {
                    "featureType": "highway",
                    "elementType": "labels",
                    "stylers": {"visibility": "off"},
                },
                {
                    "featureType": "arterial",
                    "elementType": "geometry",
                    "stylers": {"color": "#004981"},
                },
                {
                    "featureType": "arterial",
                    "elementType": "geometry.fill",
                    "stylers": {"color": "#00508b"},
                },
                {
                    "featureType": "poi",
                    "elementType": "all",
                    "stylers": {"visibility": "off"},
                },
                {
                    "featureType": "green",
                    "elementType": "all",
                    "stylers": {"color": "#056197", "visibility": "off"},
                },
                {
                    "featureType": "subway",
                    "elementType": "all",
                    "stylers": {"visibility": "off"},
                },
                {
                    "featureType": "manmade",
                    "elementType": "all",
                    "stylers": {"visibility": "off"},
                },
                {
                    "featureType": "local",
                    "elementType": "all",
                    "stylers": {"visibility": "off"},
                },
                {
                    "featureType": "arterial",
                    "elementType": "labels",
                    "stylers": {"visibility": "off"},
                },
                {
                    "featureType": "boundary",
                    "elementType": "geometry.fill",
                    "stylers": {"color": "#029fd4"},
                },
                {
                    "featureType": "building",
                    "elementType": "all",
                    "stylers": {"color": "#1a5787"},
                },
                {
                    "featureType": "label",
                    "elementType": "all",
                    "stylers": {"visibility": "off"},
                },
            ]
        },
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="全国主要城市空气质量",
            subtitle="data from PM25.in",
            subtitle_link="http://www.pm25.in",
            pos_left="center",
            title_textstyle_opts=opts.TextStyleOpts(color="#fff"),
        ),
        tooltip_opts=opts.TooltipOpts(trigger="item"),
    )
    .render("air_quality_baidu_map.html")
)

目前还是以熟悉为主,多多借鉴官网上的代码,能够有效提升自己的构图水平!

柱状图构建

1.基础柱状图

掌握构建一个基础的柱状图并能够反转x和y轴

通过Bar构建基础柱状图

from pyecharts.charts import Bar
from pyecharts.options import *
# 构建柱状图对象
bar = Bar()
# 添加x轴数据
bar.add_xaxis(["中国","美国","英国"])
# 添加y轴数据
bar.add_yaxis("GDP",[30, 20, 10])
# 绘图
bar.render("基础柱状图.html")

 如果想要反转x、y轴的话,实际上只需要用到bar.reversal_axis()即可

from pyecharts.charts import Bar
from pyecharts.options import *
# 构建柱状图对象
bar = Bar()
# 添加x轴数据
bar.add_xaxis(["中国","美国","英国"])
# 添加y轴数据
bar.add_yaxis("GDP",[30, 20, 10])
# 反转x、y轴
bar.reversal_axis()
# 绘图
bar.render("基础柱状图.html")

 

 为了将数字标签全都移到右边,我们可以在其中增加相应的label_opts="right"

from pyecharts.charts import Bar
from pyecharts.options import LabelOpts
# 构建柱状图对象
bar = Bar()
# 添加x轴数据
bar.add_xaxis(["中国","美国","英国"])
# 添加y轴数据
bar.add_yaxis("GDP",[30, 20, 10],label_opts=LabelOpts(position="right"))
# 反转x、y轴
bar.reversal_axis()
# 绘图
bar.render("基础柱状图.html")

 2.基础时间线柱状图

Timeline()——时间线

柱状图描述的是分类数据,回答的是每一个分类中「有多少?」这个问题。这是柱状图的主要特点,同时柱状图很难动态的描述一个趋势性的数据.这里pyecharts.为我们提供了一种解决方案——时间线

如果说一个Bar、Line对象是一张图表的话,时间线就是创建一个一维的x轴,轴上每一个点就是一个图表对象。

创建时间线的代码

from pyecharts.charts import Bar, Timeline
from pyecharts.options import *
bar1 = Bar()
bar1.add_xaxis(["中国","美国","英国"])
bar1.add_yaxis("GDP",[30, 20, 10], label_opts=LabelOpts(position="right"))
bar1.reversal_axis()
​
bar2 = Bar()
bar2.add_xaxis(["中国","美国","英国"])
bar2.add_yaxis("GDP",[50, 30, 20], label_opts=LabelOpts(position="right"))
bar2.reversal_axis()
​
bar3 = Bar()
bar3.add_xaxis(["中国","美国","英国"])
bar3.add_yaxis("GDP",[70, 50, 40], label_opts=LabelOpts(position="right"))
bar3.reversal_axis()
​
# 创建时间线对象
timeline = Timeline()
# timeline对象添加bar柱状图
timeline.add(bar1,"2021年GDP")
timeline.add(bar2,"2022年GDP")
timeline.add(bar3,"2023年GDP")
# 通过时间线绘图
timeline.render("基础柱状图-时间线.html")

 下面的时间线可以来回移动,显示2021或者2022的GDP数据。

如果想要添加自动播放功能的话,可以加上下面的设置代码

# 设置自动播放
timeline.add_schema(
    play_interval=1000,# 自动播放的时间间隔,单位毫秒
    is_timeline_show=True,# 是否在自动播放的时候,显示时间线
    is_auto_play=True,# 是否自动播放
    is_loop_play=True# 是否循环自动播放
)

加上主题的话,可以再增加,如下是目前该可视化代码的完整版本啦:

from pyecharts.charts import Bar, Timeline
from pyecharts.options import *
from pyecharts.globals import ThemeType
bar1 = Bar()
bar1.add_xaxis(["中国","美国","英国"])
bar1.add_yaxis("GDP",[30, 20, 10], label_opts=LabelOpts(position="right"))
bar1.reversal_axis()
​
bar2 = Bar()
bar2.add_xaxis(["中国","美国","英国"])
bar2.add_yaxis("GDP",[50, 30, 20], label_opts=LabelOpts(position="right"))
bar2.reversal_axis()
​
bar3 = Bar()
bar3.add_xaxis(["中国","美国","英国"])
bar3.add_yaxis("GDP",[70, 50, 40], label_opts=LabelOpts(position="right"))
bar3.reversal_axis()
​
# 创建时间线对象
timeline = Timeline({"theme":ThemeType.ESSOS})
# timeline对象添加bar柱状图
timeline.add(bar1,"2021年GDP")
timeline.add(bar2,"2022年GDP")
timeline.add(bar3,"2023年GDP")
# 设置自动播放
timeline.add_schema(
    play_interval=1000,# 自动播放的时间间隔,单位毫秒
    is_timeline_show=True,# 是否在自动播放的时候,显示时间线
    is_auto_play=True,# 是否自动播放
    is_loop_play=True# 是否循环自动播放
)
# 通过时间线绘图
timeline.render("基础柱状图-时间线.html")

 3.GDP动态柱状图绘制

列表的sort方法

在前面我们学习过sorted函数,可以对数据容器进行排序。

在后面的数据处理中,我们需要对列表进行排序,并指定排序规则,sorted函数就无法完成了。

我们补充学习列表的sort方法。

使用方式:

列表.sort(key=选择排序依据的函数, reverse=True|False)

参数key,是要求传入一个函数,表示将列表的每一个元素都传入函数中,返回排序的依据

参数reverse,是否反转排序结果,True表示降序,False表示升序

列表的sort方法

带名函数形式

# 准备列表
my_list = [["a",33],["b",55],["c",11]]
# 排序,基于带名函数
# 定义排序的方法
def choose_sort_key(element):
    return element[1]
my_list.sort(key=choose_sort_key, reverse=True)
print(my_list)
[['b', 55], ['a', 33], ['c', 11]]

需求分析

简单分析后,发现最终效果图中需要:

  1. GDP数据处理为亿级

  2. 有时间轴,按照年份为时间轴的点

  3. x轴和y轴反转,同时每一年的数据只要前8名国家

  4. 有标题,标题的年份会动态更改

  5. 设置了主题为LIGHT

首先先编一个GDP数据,存储在记事本上,至于是否合理暂且不论,嘿嘿。

"""
演示第三个图表:GDP动态柱状图开发
"""
from pyecharts.charts import Bar, Timeline
from pyecharts.options import *
​
# 读取数据
f = open("C:/Users/asus/Desktop/C2唐祎敏学习笔记/黑马Python/test文件/1960-2019年全球八国GDP数据.txt","r",encoding="UTF-8")
data_lines = f.readlines()
f.close()
data_lines.pop(0)
# 先定义一个字典对象
data_dict = {}
for line in data_lines:
    year = int(line.split(",")[0])
    country = line.split(",")[1]
    gdp = float(line.split(",")[2])
    # 判断字典key
    try:
        data_dict[year].append([country, gdp])
    except KeyError:
        data_dict[year] = []
        data_dict[year].append([country, gdp])
timeline = Timeline({"theme": ThemeType.LIGHT})
sorted_year_list = sorted(data_dict.keys())
# 排序年份
for year in sorted_year_list:
    data_dict[year].sort(key=lambda element: element[1], reverse=True)
    # 取出本年份前8名国家
    year_data = data_dict[year][0:8]
    x_data = []
    y_data = []
    for country_gdp in year_data:
        x_data.append(country_gdp[0])
        y_data.append(country_gdp[1] / 100000000)
    bar = Bar()
    bar.add_xaxis(x_data)
    bar.add_yaxis("GDP(亿)",y_data,label_opts=LabelOpts(position="right"))
    bar.reversal_axis()
    # 每一年的标题
    bar.set_global_opts(
        title_opts=TitleOpts(title=f"{year}年全球前8GDP数据")
    )
    
    timeline.add(bar, str(year))
# 时间自动播放
timeline.add_schema(
    play_interval=1000,
    is_timeline_show=True,
    is_auto_play=True,
    is_loop_play=False
)
timeline.render("1960~2020全国GDP前8国家.html")

 有亿点点夸张,嘿嘿,但是我们确实实现了这个可视化图像

下面是我捏造的数据:

year,GDP,rate
1960,美国,5.433E+11
1960,英国,73233967692
1960,法国,62225478000
1960,中国,59716467625
1960,日本,44307342950
1960,加拿大,40461721692
1960,意大利,40385288344
1960,印度,37029883875
1960,澳大利亚,18577668271
1960,瑞典,15822585033
1960,巴西,15165569912
1960,土耳其,13995067817
1960,墨西哥,13040000000
1960,荷兰,12276734172
1960,西班牙,12072126075
1960,比利时,11658722590
1960,瑞士,9522746719
1960,委内瑞拉,7779090909
1960,南非,7575396972
1960,菲律宾,6684568805
1960,奥地利,6592693841
1960,丹麦,6248946880
1960,新西兰,5485854791
1960,芬兰,5224102195
1960,挪威,5163271598
1960,希腊,4335186016
1960,孟加拉,4274893913
1960,伊朗,4199134390
1960,尼日利亚,4196092258
1960,智利,4110000000
1960,哥伦比亚,4031152976
1960,韩国,3958190758
1960,巴基斯坦,3749265014
1960,刚果(金),3359404117
1960,葡萄牙,3193200404
1960,泰国,2760747471
1960,阿尔及利亚,2723648551
1960,以色列,2598500000
1960,秘鲁,2571908062
1960,摩洛哥,2037150716
1960,爱尔兰,1939329775
1960,马来西亚,1916241996
1960,波多黎各,1691900000
1970,美国,6.433E+11
1970,英国,83233967692
1970,法国,72225478000
1970,中国,69716467625
1970,日本,54307342950
1970,加拿大,50461721692
1970,意大利,50385288344
1970,印度,47029883875
1970,澳大利亚,28577668271
1970,瑞典,25822585033
1970,巴西,35165569912
1970,土耳其,23995067817
1970,墨西哥,23040000000
1970,荷兰,22276734172
1970,西班牙,12072126075
1970,比利时,19658722590
1970,瑞士,10522746719
1970,委内瑞拉,7979090909
1970,南非,8575396972
1970,菲律宾,7684568805
1970,奥地利,7592693841
1970,丹麦,7248946880
1970,新西兰,6485854791
1970,芬兰,6224102195
1970,挪威,6163271598
1970,希腊,5335186016
1970,孟加拉,5274893913
1970,伊朗,5199134390
1970,尼日利亚,5186092258
1970,智利,4100000000
1970,哥伦比亚,4731152976
1970,韩国,4658190758
1970,巴基斯坦,4749265014
1970,刚果(金),4359404117
1970,葡萄牙,4193200404
1970,泰国,3760747471
1970,阿尔及利亚,3723648551
1970,以色列,3598500000
1970,秘鲁,2501908062
1970,摩洛哥,3037150716
1970,爱尔兰,2939329775
1970,马来西亚,2916241996
1970,波多黎各,2691900000
1980,美国,8.433E+11
1980,英国,73233967692
1980,法国,62225478000
1980,中国,2.971E+11
1980,日本,44307342950
1980,加拿大,40461721692
1980,意大利,40385288344
1980,印度,37029883875
1980,澳大利亚,18577668271
1980,瑞典,15822585033
1980,巴西,15165569912
1980,土耳其,13995067817
1980,墨西哥,13040000000
1980,荷兰,12276734172
1980,西班牙,12072126075
1980,比利时,11658722590
1980,瑞士,9522746719
1980,委内瑞拉,7779090909
1980,南非,7575396972
1980,菲律宾,6684568805
1980,奥地利,6592693841
1980,丹麦,6248946880
1980,新西兰,5485854791
1980,芬兰,5224102195
1980,挪威,5163271598
1980,希腊,4335186016
1980,孟加拉,4274893913
1980,伊朗,4199134390
1980,尼日利亚,4196092258
1980,智利,4110000000
1980,哥伦比亚,4031152976
1980,韩国,3958190758
1980,巴基斯坦,3749265014
1980,刚果(金),3359404117
1980,葡萄牙,3193200404
1980,泰国,2760747471
1980,阿尔及利亚,2723648551
1980,以色列,2598500000
1980,秘鲁,2571908062
1980,摩洛哥,2037150716
1980,爱尔兰,1939329775
1980,马来西亚,1916241996
1980,波多黎各,1691900000
1990,美国,1.433E+12
1990,英国,73233967692
1990,法国,62225478000
1990,中国,8.342E+10
1990,日本,44307342950
1990,加拿大,40461721692
1990,意大利,40385288344
1990,印度,37029883875
1990,澳大利亚,18577668271
1990,瑞典,15822585033
1990,巴西,15165569912
1990,土耳其,13995067817
1990,墨西哥,13040000000
1990,荷兰,12276734172
1990,西班牙,12072126075
1990,比利时,11658722590
1990,瑞士,9522746719
1990,委内瑞拉,7779090909
1990,南非,7575396972
1990,菲律宾,6684568805
1990,奥地利,6592693841
1990,丹麦,6248946880
1990,新西兰,5485854791
1990,芬兰,5224102195
1990,挪威,5163271598
1990,希腊,4335186016
1990,孟加拉,4274893913
1990,伊朗,4199134390
1990,尼日利亚,4196092258
1990,智利,4110000000
1990,哥伦比亚,4031152976
1990,韩国,3958190758
1990,巴基斯坦,3749265014
1990,刚果(金),3359404117
1990,葡萄牙,3193200404
1990,泰国,2760747471
1990,阿尔及利亚,2723648551
1990,以色列,2598500000
1990,秘鲁,2571908062
1990,摩洛哥,2037150716
1990,爱尔兰,1939329775
1990,马来西亚,1916241996
1990,波多黎各,1691900000
2000,美国,1.433E+13
2000,英国,73233967692
2000,法国,62225478000
2000,中国,5.971E+12
2000,日本,44307342950
2000,加拿大,40461721692
2000,意大利,40385288344
2000,印度,37029883875
2000,澳大利亚,18577668271
2000,瑞典,15822585033
2000,巴西,15165569912
2000,土耳其,13995067817
2000,墨西哥,13040000000
2000,荷兰,12276734172
2000,西班牙,12072126075
2000,比利时,11658722590
2000,瑞士,9522746719
2000,委内瑞拉,7779090909
2000,南非,7575396972
2000,菲律宾,6684568805
2000,奥地利,6592693841
2000,丹麦,6248946880
2000,新西兰,5485854791
2000,芬兰,5224102195
2000,挪威,5163271598
2000,希腊,4335186016
2000,孟加拉,4274893913
2000,伊朗,4199134390
2000,尼日利亚,4196092258
2000,智利,4110000000
2000,哥伦比亚,4031152976
2000,韩国,3958190758
2000,巴基斯坦,3749265014
2000,刚果(金),3359404117
2000,葡萄牙,3193200404
2000,泰国,2760747471
2000,阿尔及利亚,2723648551
2000,以色列,2598500000
2000,秘鲁,2571908062
2000,摩洛哥,2037150716
2000,爱尔兰,1939329775
2000,马来西亚,1916241996
2000,波多黎各,1691900000
2010,美国,5.433E+14
2010,英国,73233967692
2010,法国,62225478000
2010,中国,1.971E+14
2010,日本,44307342950
2010,加拿大,40461721692
2010,意大利,40385288344
2010,印度,37029883875
2010,澳大利亚,18577668271
2010,瑞典,15822585033
2010,巴西,15165569912
2010,土耳其,13995067817
2010,墨西哥,13040000000
2010,荷兰,12276734172
2010,西班牙,12072126075
2010,比利时,11658722590
2010,瑞士,9522746719
2010,委内瑞拉,7779090909
2010,南非,7575396972
2010,菲律宾,6684568805
2010,奥地利,6592693841
2010,丹麦,6248946880
2010,新西兰,5485854791
2010,芬兰,5224102195
2010,挪威,5163271598
2010,希腊,4335186016
2010,孟加拉,4274893913
2010,伊朗,4199134390
2010,尼日利亚,4196092258
2010,智利,4110000000
2010,哥伦比亚,4031152976
2010,韩国,3958190758
2010,巴基斯坦,3749265014
2010,刚果(金),3359404117
2010,葡萄牙,3193200404
2010,泰国,2760747471
2010,阿尔及利亚,2723648551
2010,以色列,2598500000
2010,秘鲁,2571908062
2010,摩洛哥,2037150716
2010,爱尔兰,1939329775
2010,马来西亚,1916241996
2010,波多黎各,1691900000
2020,美国,5.433E+14
2020,英国,73233967692
2020,法国,62225478000
2020,中国,5.971E+14
2020,日本,44307342950
2020,加拿大,40461721692
2020,意大利,40385288344
2020,印度,37029883875
2020,澳大利亚,18577668271
2020,瑞典,15822585033
2020,巴西,15165569912
2020,土耳其,13995067817
2020,墨西哥,13040000000
2020,荷兰,12276734172
2020,西班牙,12072126075
2020,比利时,11658722590
2020,瑞士,9522746719
2020,委内瑞拉,7779090909
2020,南非,7575396972
2020,菲律宾,6684568805
2020,奥地利,6592693841
2020,丹麦,6248946880
2020,新西兰,5485854791
2020,芬兰,5224102195
2020,挪威,5163271598
2020,希腊,4335186016
2020,孟加拉,4274893913
2020,伊朗,4199134390
2020,尼日利亚,4196092258
2020,智利,4110000000
2020,哥伦比亚,4031152976
2020,韩国,3958190758
2020,巴基斯坦,3749265014
2020,刚果(金),3359404117
2020,葡萄牙,3193200404
2020,泰国,2760747471
2020,阿尔及利亚,2723648551
2020,以色列,2598500000
2020,秘鲁,2571908062
2020,摩洛哥,2037150716
2020,爱尔兰,1939329775
2020,马来西亚,1916241996
2020,波多黎各,1691900000

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

术数基础背诵口诀整理

物象对应 五行方位天干神兽季节气候星宿生成数脏器木东甲乙青龙春风岁八肝火南丙丁朱雀夏热荧惑七心土中戊己?长夏湿镇五脾金西庚辛白虎秋燥太白九肺水北壬癸玄武冬寒辰六肾 口诀:东方甲乙青龙木,南方丙丁朱雀火,戊己勾陈腾蛇土&…

第一章 Java基础 50 道面试题

文章目录 前言匿名内部类访问的局部变量为什么必须要用final修饰? Java基础1、jdk和jre有什么区别?2、final在Java中有什么作用?3、有常量类了为什么还要使用枚举类?4、为什么使用包装类?5、和equals的区别是什么?6、…

Mysql-最左前缀法则以及索引失效情况

最左前缀法则 如果索引了多列(联合索引),要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。如果跳跃某一列,索引将会部分失效(后面的字段索引失效)。 以 tb_user 表为例&#xff…

前端面试题(持续更新中)

【1】null和undefined的区别 同: 1.都是js的基本类型,保存在栈中,表示“无、没有”的意思。 2.if语句中的null和undefined都是false。 var a undefined var b null if (!a) {console.log(undefined is false); } if (!b) {console.log(null…

YOLOv7如何提高目标检测的速度和精度,基于模型结构、数据增强提高目标检测速度

目录 一、基于模型结构的方法1、多尺度训练和测试2、更细的特征图3、重新设计的损失函数 二、基于数据增强的方法1、随机缩放和裁剪2、随机旋转和翻转3、随机亮度和对比度调整4、随机噪声和模糊处理 三、实验结果与分析1、数据集和实验设置2、实验结果的分析和比较 大家好&…

【VM服务管家】VM4.0软件使用_1.1 环境配置类

目录 1.1.1 驱动配置:图像后台切换但前端界面不变的解决方法1.1.2 驱动缺失:格式化工具打开后消失的解决方法1.1.3 环境配置:VM试用版本激活报错的解决方法1.1.4 模块数限制:修改VM最大模块数量1.1.5 开机自启动:VM运行…

【VM服务管家】VM4.0平台SDK_2.3 控件嵌入类

目录 2.3.1 渲染结果:通过绑定流程或模块获取渲染结果的方法2.3.2 渲染控件:渲染控件加载本地图像的方法2.3.3 渲染控件:渲染控件上自定义图形的方法2.3.4 参数控件:参数配置控件绑定模块的方法2.3.5 控件颜色:控件颜色…

【AGC】质量服务数据分析问题

【关键字】 AGC、质量、数据分析 【问题描述】 开发者反馈在应用中集成了AGC的相关服务,在查看平台数据时遇到了一些问题。具体如下所述: 我发现平台的App卸载量每个月都非常高,卸载量/新下载量近80%,很异常,所以想…

【VM服务管家】VM4.x算子SDK开发_3.2 公用工具类

目录 3.2.1 图像载入:本地图像的载入方法3.2.2 相机取流:相机SDK取流的方法3.2.3 输入图像:给算子模块输入图像数据的方法3.2.4 实时取流:实时取流的实现方法3.2.5 卡尺ROI:卡尺型ROI的生成方法3.2.6 DL算子耗时&#…

【VM服务管家】VM4.2软件使用_5.3 环境配置类

目录 1.1.1 用户权限:普通用户权限使用VM的方法1.1.2 脚本环境:联合OpenCV开发的环境配置方法1.1.3 环境配置:规避流程运行时卡死的方法 1.1.1 用户权限:普通用户权限使用VM的方法 描述 环境:VM4.2 现象:生…

JPA实战

常见 ORM 框架 **Mybatis(ibatis):**一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 …

【深圳】IBM V3500存储维修 更换控制器故障

冠峰科技-爱科技爱分享 今天给大家分享的是深圳.福田区一个电商客户公司一台IBM Storwize v3500存储控制器故障从远程诊断 收集日志 分析结果的实际案例,如图所示通过存储管理口登陆进去后直接看到少了一个控制器, 按照惯例,还是得登陆到服…

linux智能网关4G离散数据采集分析HDMI广告牌

数字城市的4G边缘计算网关是一种具有强大处理能力、智能控制和现场数据采集能力的计算设备。其主要特点包括以下方面: 系统平台:基于Linux或Debian系统,可灵活开发各种应用程序。IO接口:2DI、2DO数字输入输出接口,可以…

JAVASE的全面总结

(未完待续) 五、子类与继承 5.1 子类与父类 继承是一种由已有的类创建新类的机制。利用继承,我们可以先创建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类,新类继承一般类的状态和行为,并…

golang - switch

switch 的使用 switch 语句用于基于不同条件执行不同操作,,直每一个 case 分支都是唯一的,从上到下逐一测试到匹配为止匹配项后面也不需要再加 break switch 表达式 {case 表达式1, 表达式2, ... :语句块1case 表达式2, 表达式3, ... :语句块…

Linux LD链接器 -静、动库编译or链接

文章目录 程序链接动态链接静态链接 目标文件链接打包为动态打包为静态总结 动态链接- 动态链接:在运行、加载时,在内存中完成链接的过程- 动态共享库:用于动态链接的系统库、特性是可以加载无需重定位的代码 got表(Global Offset Table)延时…

SpringBoot核心配置全面总结

目录 1、application. properties核心文件 2、 application.yml配置文件(推荐配置风格) 3、SpringBoot多环境配置 4、SpringBoot自定义配置 1)Value注解 2) ConfigurationProperties 5. 远程配置中心(目前生产…

http协议(一)/应用层

学习目标:⭐理解应用层的作用,理解协议,理解序列化和反序列化,并且实现网络版计算器⭐HTTP协议。⭐手写一个简单的http协议。 应用层 我们写的一个个解决实际问题, 满足我们日常需求的网络程序, 都是在应用层。 协议/序列化与反…

第三节:支持向量机分类预测

0、介绍 监督学习(英语:Supervised learning)是机器学习中最为常见、应用最为广泛的分支之一。本次实验将带你了解监督学习中运用十分广泛的支持向量机,并学会使用 scikit-learn 来构建预测模型,用于解决实际问题。 知…

都什么年代了,还在用Excel和ACCESS做应用系统?快来学Eversheet

表格用的越久,就越头疼 稍微有规模的企业,各种表格都会多如牛毛,一堆堆的,有时候这里一张,那里一张,容易整乱,更容易丢失。不管你是用WPS还是用Excel,有些问题你还是依旧解决不了。…