python数据分析中数据可视化简单入门

1.折线图表

首先引入相关包pyecharts,如果没下载可以先下载

pip install pyecharts

python 复制代码
from pyecharts.charts import Line


line = Line()
# 添加x轴
line.add_xaxis(['呱了个呱','羊村','牟多','蜂地','喵帕斯'])
# 添加y轴
line.add_yaxis("GDP",['50','30','40','34','63','22'])

# 生成图表
line.render()

程序运行,在项目根目录生成了一个render.html文件,打开它,就能看到表格了

接下来再学习一些常用的全局设置参数

引入新的包

复制代码
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts,VisualMapOpts,LabelOpts

在line.render()生成表格之前配置全局配置才能生效

python 复制代码
# 设置全局变量
line.set_global_opts(
    title_opts=TitleOpts(title="该图表为GDP展示",pos_left="center",pos_bottom="1%"), #设置标题,居中,并置于距离底部1%的位置
    legend_opts=LegendOpts(is_show=True),   #似乎是数据线条的分类
    toolbox_opts=ToolboxOpts(is_show=True),     #工具箱设置,True为打开
    visualmap_opts=VisualMapOpts(is_show=True)      #虚拟图例设置,True为打开
)

运行结果:

2.地图数据可视化

老规矩一样需要引入包

python 复制代码
from pyecharts.charts import Map

# 定义地图对象
map = Map()

# 配置地图的数据(省市是否需要在不同版本的python下要求不一样,建议加上省市)
data = [("北京市",199),
        ("上海市",344),
        ("湖南省",1255),
        ("台湾省",341),
        ("广东省",5234),
        ("海南省",242),
        ("江苏省",3548),
        ("福建省",5872),
        ("湖北省",2345),]

# 添加数据
map.add("测试地图",data,"china")

map.render()

其中map.add()方法下,第一个参数是表格的名称,第二个参数是数据源,第三个则是使用哪国地图,默认是china(必须要求和数据源给的省市要对的上,例如如果你不写china,而改成其他国家是不会生成地图的,另外国家名也必须以小写字母开头,或者你还可以写成省,就会变成省单位的地图,当然,数据源也需要修改)

运行结果,地图可以放大,这样文字看起来就不会过于拥挤,下图为原始模样,可以看到,将鼠标置于湖南省上悬浮,可以看到对应的参数

当然这样的图表并不能很好地呈现数据,接下来对其进行一些全局配置,使其能够变成给人类能方便阅读的模样

老规矩引入包,将全局配置写在map.render()前才能生效

复制代码
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts,VisualMapOpts,LabelOpts
python 复制代码
# 设置全局选项
map.set_global_opts(
        title_opts=TitleOpts(title="测试数据",is_show=True),
        visualmap_opts=VisualMapOpts(
                is_show=True,
                is_piecewise=True, #开启自定义校准数据样式
                pieces=[
                        {"min":0,"max":300,"label":"0-100","color":"#CCFFFF"},
                        {"min":301,"max":500,"label":"301-500","color":"#4EEE94"},
                        {"min":501,"max":1000,"label":"501-1000","color":"#AFEEEE"},
                        {"min":1001,"max":3000,"label":"1001-3000","color":"#FFD700"},
                        {"min":3001,"max":10000,"label":"3001-10000","color":"#FF3030"},
                ])
)

设置中设置了图表标题,图例设置为开启,并进一步对图例进行自定义设置(键值对)

"min"代表最小值,"max"代表最大值(当数据在这区间内,就会执行后面的效果,比如说定义的color)

"label"表示图例的标签,是给人看的,下图左下角那个就是label模块

"color"则表示处于这个数据区间的改用什么颜色来填充

运行结果,这样至少好看了点

3.柱状图

3.1常规柱状图

老规矩,导包

复制代码
from pyecharts.charts import Bar

其他的跟折线图基本没大有差异

python 复制代码
from pyecharts.charts import Bar

# 创建表格对象
bar = Bar()

# 定义x,y轴数据
bar.add_xaxis(['羊村','喵帕斯','牟多'])
bar.add_yaxis("GDP",[324,634,425])

# 将x,y轴数据反转
bar.reversal_axis()

# 创建表格
bar.render()

运行结果:

3.1基于时间线柱状图

导包

复制代码
from pyecharts.charts import Bar,Timeline
from pyecharts.globals import ThemeType

额外引入了主题包,不需要的可以不用导入

跟基础柱状图差不多,就是生成了多张表,然后通过时间轴来播放

python 复制代码
from pyecharts.charts import Bar,Timeline
from pyecharts.globals import ThemeType
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts,VisualMapOpts,LabelOpts

# 创建表格对象1
bar1 = Bar()
bar1.add_xaxis(['羊村','喵帕斯','牟多'])
bar1.add_yaxis("GDP",[324,634,425],label_opts=LabelOpts(position="right"))
bar1.reversal_axis()
# 创建表格对象2
bar2 = Bar()
bar2.add_xaxis(['羊村','喵帕斯','牟多'])
bar2.add_yaxis("GDP",[673,823,729],label_opts=LabelOpts(position="right"))
bar2.reversal_axis()
# 创建表格对象3
bar3 = Bar()
bar3.add_xaxis(['羊村','喵帕斯','牟多'])
bar3.add_yaxis("GDP",[958,1123,1735],label_opts=LabelOpts(position="right"))
bar3.reversal_axis()

# 构建时间线对象
timeLine = Timeline({"theme":ThemeType.LIGHT})
# 在时间线内添加柱状图对象
timeLine.add(bar1,"点1")
timeLine.add(bar2,"点2")
timeLine.add(bar3,"点3")

# 自动播放配置
timeLine.add_schema(
    play_interval=1000,     #自动播放时间间隔,单位毫秒
    is_timeline_show=True,
    is_auto_play=True,
    is_loop_play=True
)
# 通过时间线来制作表格,而不再是bar123对象
timeLine.render("时间线柱状图.html")

add_schema()方法参数的意思是:

复制代码
play_interval=1000,     #自动播放时间间隔,单位毫秒
is_timeline_show=True,     #是否显示时间线
is_auto_play=True,        #是否自动播放
is_loop_play=True        #是否循环播放

主题参数:

练习------绘制1960年至2019年世界各国GDP前八名柱状动图

太难了,我自己都搞不懂,直接上代码吧,消化了再做解析

以下是csv部分数据

python 复制代码
from pyecharts.charts import Bar,Timeline
from pyecharts.options import LabelOpts,global_options,TitleOpts
from pyecharts.globals import ThemeType

f = open("data/1960-2019全球GDP数据.csv",encoding="GB2312")
data_line = f.readlines()
# 删除csv文件中第一行无用内容
data_line.pop(0)

# 定义字典对象
data_dict = {}
timeLine = Timeline({"theme":ThemeType.LIGHT})
#从下面开始降回比较难以理解
for line in data_line:
    year = int(line.split(",")[0])
    country = str(line.split(",")[1])
    gdp = float(line.split(",")[2])
    #判断字典中key是否是空的(因为一开始字典里是没有key的,如果强行获取key会报错)
    try:
        data_dict[year].append([country,gdp])
    except KeyError:
        data_dict[year] = []
        data_dict[year].append([country,gdp])

# sorted_year_list = sorted(data_dict.keys())
# print(type(sorted_year_list))
# print(sorted_year_list)
# print(type(data_dict.keys()))
# print(data_dict.keys())
for year in data_dict.keys():
    data_dict[year].sort(key=lambda element: element[1],reverse=True)
    #取出本年度前八的国家
    year_data = data_dict[year][0:8]
    # 定义x,y轴空列表
    x_data = []
    y_data = []
    # 将数据存入xy轴列表中
    for country_gdp in year_data:
        x_data.append(country_gdp[0])
        y_data.append(country_gdp[1]/1000000000)    #单位是亿,所以除一下
    bar = Bar()
    # 数据进行反转,如果不翻转,GDP最大的会出现在底部而不是顶上第一条
    x_data.reverse()
    y_data.reverse()
    bar.add_xaxis(x_data)
    bar.add_yaxis("GDP(亿)",y_data,label_opts=LabelOpts(position="right"))   #原y轴数据以及单位说明,并设置数据放置在柱子右侧
    # 设置每年的标题
    bar.set_global_opts(
        title_opts=TitleOpts(title=f"第{year}年GDP排名前八情况",is_show=True,pos_left=True)
    )
    # 将x,y轴进行反转,令GPD数值放到x轴,国家参数放到y轴去
    bar.reversal_axis()
    # 给时间轴添加节点名称,每个节点代表一个年份表格
    timeLine.add(bar,str(year))
# 柱状图自动播放设置
timeLine.add_schema(
    is_loop_play=True,
    is_timeline_show=True,
    is_auto_play=True,
    play_interval=500
)
timeLine.render("1960-2019年全球GDP前八柱状图.html")
f.close()

以上内容源自黑马程序员python基础课程学习笔记,仅供学习与参考

相关推荐
EterNity_TiMe_2 分钟前
【论文复现】(CLIP)文本也能和图像配对
python·学习·算法·性能优化·数据分析·clip
Suyuoa14 分钟前
附录2-pytorch yolov5目标检测
python·深度学习·yolo
CV学术叫叫兽1 小时前
一站式学习:害虫识别与分类图像分割
学习·分类·数据挖掘
好看资源平台1 小时前
网络爬虫——综合实战项目:多平台房源信息采集与分析系统
爬虫·python
进击的六角龙2 小时前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python
檀越剑指大厂2 小时前
【Python系列】浅析 Python 中的字典更新与应用场景
开发语言·python
湫ccc2 小时前
Python简介以及解释器安装(保姆级教学)
开发语言·python
孤独且没人爱的纸鹤2 小时前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
羊小猪~~2 小时前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
lzhlizihang2 小时前
python如何使用spark操作hive
hive·python·spark