Python数据可视化入门指南

Matplotlib和Plotly是两个在Python中广泛使用的数据可视化库,它们具有丰富的API和功能,用于创建各种类型的图表和图形。在本篇博客中,我们将介绍它们的主要特点和基本用法。

Matplotlib

主要特点:

  1. 高度自定义: Matplotlib允许开发人员完全自定义图表的各个方面,包括线条样式、颜色、标签、图例、坐标轴等。
  2. 支持多种图表类型: Matplotlib支持多种类型的图表,包括二维和三维图表,使其适用于各种数据可视化需求。
  3. 交互式绘图: Matplotlib可以嵌入到交互式环境中,如Jupyter Notebook,使用户能够实时交互式地探索数据。
  4. 输出格式多样: 可以将Matplotlib绘制的图表保存为多种输出格式,包括图像文件(如PNG、JPEG)、PDF文件,或直接显示在图形用户界面中。

基本用法:

  1. 导入Matplotlib: 使用 import matplotlib.pyplot as plt 导入Matplotlib库,通常使用 plt 作为别名。
  2. 创建图表: 使用 plt.figure() 创建一个图表对象,可以设置图表的大小、分辨率等属性。
  3. 绘制图形: 使用Matplotlib提供的函数和方法来绘制图形,例如使用 plt.plot() 绘制折线图、plt.scatter() 绘制散点图、plt.bar() 绘制柱状图等。
  4. 设置图表属性: 使用函数如 plt.title()plt.xlabel()plt.ylabel() 来设置图表标题和坐标轴标签,使用 plt.legend() 添加图例,使用 plt.grid() 显示网格等。
  5. 显示图表: 使用 plt.show() 来显示绘制的图表。在Jupyter Notebook等交互式环境中,图表通常会自动显示。

Plotly

Plotly的Python库提供了多个API供用户创建交互式可视化图表。以下是Plotly库的一些主要API和其主要功能:

  1. plotly.graph_objects API: 这是Plotly的核心API,允许用户通过创建 go.Figure 对象来绘制各种类型的图表。

    • go.Figure(): 创建一个新的图表对象。
    • add_trace(): 向图表对象添加数据系列,例如线图、散点图、柱状图等。
    • update_layout(): 设置图表的布局和样式,包括标题、坐标轴标签、图例等。
    • update_xaxes()update_yaxes(): 设置X轴和Y轴的属性,如刻度、范围等。
    • show(): 显示图表。
  2. plotly.express API: 这是一个更高级的API,可以用更少的代码生成常见类型的图表。它适用于快速可视化和探索性数据分析。

    • px.line(), px.scatter(), px.bar(): 创建线图、散点图和柱状图等。
    • px.pie(): 创建饼图。
    • px.choropleth(): 创建地图和轮廓地图。
    • 其他快速可视化函数。
  3. plotly.subplots API: 这个API允许用户创建包含多个子图的复杂布局,用于同时显示多个图表。

    • make_subplots(): 创建包含多个子图的图表布局。
    • add_trace(): 向子图添加数据系列。
    • update_layout(): 设置整个布局的样式。
  4. plotly.offline API: 用于将Plotly图表保存为本地文件或在离线环境中显示图表。

    • plot(): 显示图表并将其保存为HTML文件。
    • init_notebook_mode(): 初始化Jupyter Notebook中的Plotly图表显示。
  5. plotly.io API: 用于导出和显示Plotly图表的方法。

    • write_html(): 将图表导出为HTML文件。
    • write_image(): 将图表导出为图像文件(如PNG、JPEG)。
    • show(): 显示图表。

这些API提供了广泛的选项和功能,允许用户创建各种类型的交互式可视化图表。用户可以根据数据和需求选择适当的API,并使用这些API来定制图表的样式、交互性和显示方式。 Plotly的文档和示例提供了更多关于API的详细信息和用法示例。两者都是非常强大的工具,根据需求选择适当的库来实现数据可视化目标。

样例演示:

使用Matplotlib绘制销售业绩分析图表:

Python
复制代码
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import MultipleLocator
def test01():plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置中文字体x = np.arange(0, 30, 1)y1 = 3 * np.sin(2 * x) + 2 * x + 1y2 = 2 * np.cos(2 * x) + 3 * x + 9plt.figure(figsize=(11, 7))plt.plot(x, y1, linestyle='-.', color='red', linewidth=5.0)plt.plot(x, y2, marker='*', color='green', markersize=10)plt.xlabel('日期', size=16)plt.ylabel('金额', size=16, rotation=90, verticalalignment='center')x_major_locator = MultipleLocator(2)y_major_locator = MultipleLocator(10)ax = plt.gca()ax.xaxis.set_major_locator(x_major_locator)ax.yaxis.set_major_locator(y_major_locator)plt.tick_params(labelsize=16)plt.xlim(0, 30)plt.ylim(0, 100)plt.legend(labels=['利润额', '销售额'], loc='upper left', fontsize=15)plt.title('2020年9月份企业商品销售业绩分析', loc='center', size=20)plt.show()

这个示例代码演示了如何使用Matplotlib库创建销售业绩分析图表,包括自定义样式、标签、刻度等。 这段代码导入了NumPy用于生成数据,Matplotlib库用于绘图,以及用于设置坐标轴刻度间隔的MultipleLocator。

具体实现思路如下:

首先生成销售数据,比如日期、利润额和销售额。这是你需要在图表上展示的数据。这可以通过NumPy来完成,比如:

python
复制代码x = np.arange(0, 30, 1)
profit = 3 * np.sin(2 * x) + 2 * x + 1
sales = 2 * np.cos(2 * x) + 3 * x + 9

接下来,你可以创建一个图表对象。这将是你的绘图画布,你可以在上面绘制图表。设置图表的大小,可以使用下面的代码:

python
复制代码plt.figure(figsize=(11, 7))

然后,你可以使用plt.plot()来绘制销售数据的曲线。你可以自定义线条的样式、颜色和宽度。比如:

python
复制代码plt.plot(x, profit, linestyle='-.', color='red', linewidth=5.0)
plt.plot(x, sales, marker='*', color='green', markersize=10)

接下来,你需要设置坐标轴标签、刻度间隔、刻度标签字体大小和坐标轴范围。这可以使用下面的代码来实现:

python
复制代码plt.xlabel('日期', size=16)
plt.ylabel('金额', size=16, rotation=90, verticalalignment='center')
x_major_locator = MultipleLocator(2)
y_major_locator = MultipleLocator(10)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
ax.yaxis.set_major_locator(y_major_locator)
plt.tick_params(labelsize=16)
plt.xlim(0, 30)
plt.ylim(0, 100)

接着,你可以添加图例以区分不同的曲线,并设置图表的标题:

python
复制代码plt.legend(labels=['利润额', '销售额'], loc='upper left', fontsize=15)
plt.title('2020年9月份企业商品销售业绩分析', loc='center', size=20)

最后,你可以使用plt.show()来显示你的图表:

python
复制代码plt.show()

image.png

用Pyecharts库创建了一个柱状图

Python
复制代码
def test02():from pyecharts.charts import Barfrom pyecharts import options as optsbar = (Bar().add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"]).add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105]).add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49]).set_global_opts(title_opts=opts.TitleOpts(title="商家A和商家B9月份销售数量统计",title_textstyle_opts=opts.TextStyleOpts(font_size=20)),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=16)),yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=16)),toolbox_opts=opts.ToolboxOpts(),legend_opts=opts.LegendOpts(is_show=True, item_width=40, item_height=20,textstyle_opts=opts.TextStyleOpts(font_size=16))).set_series_opts(label_opts=opts.LabelOpts(font_size=16)))bar.render('sales.html')

这段代码是用Pyecharts库创建了一个柱状图,主要展示了两家商家(商家A和商家B)在九月份的销售数量情况。这种图表在比较不同商品销售数据时非常有用。

首先,我们导入所需的库和模块,然后创建一个柱状图对象。我们定义了X轴的标签,这些标签代表不同种类的商品,比如衬衫、毛衣、领带等等。

接下来,我们添加了两个数据系列,分别代表商家A和商家B的销售数据。这些销售数据以列表的形式提供,包括不同商品的销售数量。

然后,我们设置了一些全局选项,如图表的标题、坐标轴标签的字体大小、工具栏选项和图例。标题是"商家A和商家B9月份销售数量统计",为了使标题更醒目,我们将标题字体大小设置为20。坐标轴标签也有一个合适的字体大小,以确保图表易于阅读。

最后,我们还对数据系列进行了一些选项设置,特别是标签的字体大小。

最终,我们使用.render('sales.html')将生成的图表保存为一个HTML文件,文件名为"sales.html"。这个HTML文件可以在浏览器中打开,以查看和分享这个柱状图,从而更好地了解商家A和商家B的销售情况。

效果展示图:

image.png

使用Plotly库来创建一个饼图

Python
复制代码
def test03():import plotly.offline as pyimport plotly.graph_objects as gostore = ['定远店', '东海店', '海恒店', '金寨店', '燎原店', '临泉店', '庐江店', '明耀店', '众兴店']consumer = [30, 22, 20, 28, 16, 30, 24, 18, 12]fig = go.Figure(data=[go.Pie(labels=store, values=consumer, textinfo='label+percent', insidetextorientation='radial')])fig.update_layout(legend_title="客户类型",  # 图例标题文本width=700, height=500,  # 设置图像的大小title=dict(text="2020年第二季度各门店销售业绩分析",x=0.5,xanchor='center',xref='paper'),font=dict(family="Courier New, monospace",  # 标题的字体size=18,  # 标题的大小color="RebeccaPurple"  # 标题的颜色))py.plot(fig, filename='bingtu.html')

段代码使用了Plotly库来创建一个饼图,用于展示不同门店在2020年第二季度的销售业绩情况。饼图是一种很好的方式来比较各部分在整体中的占比情况。

首先,我们导入了所需的库和模块,包括Plotly的offlinegraph_objects。然后,我们定义了两个列表,storeconsumer,它们分别包含了门店名称和对应的销售业绩数据。

接下来,我们创建了一个Figure对象,其中使用go.Pie创建了一个饼图。在饼图中,labels参数代表各门店的名称,values参数代表对应的销售业绩数据。textinfo参数设置了饼图上显示的文本信息,这里是标签和百分比,insidetextorientation参数设置了文本方向。

然后,我们使用update_layout来设置图表的布局和样式。这包括设置图表的标题、宽度和高度,以及标题的字体、大小和颜色。

最后,我们使用py.plot将生成的饼图保存为一个HTML文件,文件名为"bingtu.html"。这个HTML文件可以在浏览器中打开,以查看和分享门店销售业绩的饼图,帮助理解不同门店在总销售中的占比情况。这是一种直观的数据可视化方法。

展示图如下:

image.png

使用 Pyecharts 库来创建一个地图图表

Python
复制代码
from pyecharts import options as opts
from pyecharts.charts import Map# 提供的数据
city_sales = [("长沙市", 184), ("株洲市", 192), ("湘潭市", 171), ("衡阳市", 131), ("邵阳市", 149),("岳阳市", 121), ("常德市", 71), ("张家界市", 83), ("益阳市", 88), ("郴州市", 156),("永州市", 99), ("怀化市", 86), ("娄底市", 65)
]city_profits = [("长沙市", 18.4), ("株洲市", 19.2), ("湘潭市", 17.1), ("衡阳市", 13.1), ("邵阳市", 14.9),("岳阳市", 12.1), ("常德市", 7.1), ("张家界市", 8.3), ("益阳市", 8.8), ("郴州市", 15.6),("永州市", 9.9), ("怀化市", 8.6), ("娄底市", 6.5)
]# 整理数据
city_names = [item[0] for item in city_sales]
profit_data = [item[1] for item in city_profits]# 绘制商品利润额地图
profits_map = (Map().add(series_name="2020年湖南省各地级市商品利润额",  # 添加数据的系列名称data_pair=[(city, profit) for city, profit in zip(city_names, profit_data)],  # 添加地图数据,包括城市名和商品利润额maptype="湖南",  # 地图类型为湖南is_map_symbol_show=True,  # 显示城市名).set_series_opts(label_opts=opts.LabelOpts(is_show=True),  # 设置标签选项,这里是显示标签).set_global_opts(title_opts=opts.TitleOpts(title="2020年湖南省各地级市商品利润额",subtitle="数据来源:湖南省统计局",pos_right="10px",pos_top="20px",),visualmap_opts=opts.VisualMapOpts(max_=max(profit_data)),)
)# 生成 HTML 文件
profits_map.render("湖南省商品利润额地图.html")

这段代码使用了 Pyecharts 库来创建一个地图图表,用于展示湖南省各地级市在2020年的商品利润额情况。以下是代码的口语叙述:

首先,我们导入了所需的库和模块,包括 Pyecharts 的选项模块 opts 和地图图表模块 Map

然后,我们提供了两个数据列表 city_salescity_profits,分别包含了各地级市的销售额和商品利润额数据。这些数据是根据不同城市的统计信息整理而来。

接下来,我们提取了城市名称和商品利润额的数据,以便用于地图图表的绘制。

然后,我们创建了一个地图图表对象 profits_map。在这个图表中,我们使用 .add() 方法添加了地图的系列名称和数据对,其中包括城市名称和商品利润额数据。地图的类型被设置为湖南,表示我们要绘制湖南省的地图,并设置了显示城市名的选项。

接着,我们使用 .set_series_opts() 方法设置了标签选项,以便在地图上显示标签。

最后,我们使用 .set_global_opts() 方法设置了图表的全局选项,包括标题、副标题、位置等信息,并使用 visualmap_opts 设置了可视化地图的选项,以便调整颜色映射和范围。

最后,我们使用 .render() 方法生成了一个 HTML 文件,文件名为 “湖南省商品利润额地图.html”。这个 HTML 文件包含了绘制的地图图表,可以在浏览器中打开以查看湖南省各地级市的商品利润额分布情况。这是一种直观的数据可视化方法,帮助用户更好地理解不同城市的商品利润情况。

效果展示图:

2023-10-16 (2).png

题外话

在此疾速成长的科技元年,编程就像是许多人通往无限可能世界的门票。而在编程语言的明星阵容中,Python就像是那位独领风 骚的超级巨星, 以其简洁易懂的语法和强大的功能,脱颖而出,成为全球最炙手可热的编程语言之一。


Python 的迅速崛起对整个行业来说都是极其有利的 ,但“人红是非多”,导致它平添了许许多多的批评,不过依旧挡不住它火爆的发展势头。

如果你对Python感兴趣,想要学习pyhton,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉CSDN大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓

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

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

相关文章

赋能制造业高质量发展,释放采购数字化新活力——企企通亮相武汉2023国际智能制造创新论坛

摘要 “为应对成本上升、供应端不稳定、供应链上下游协同困难、决策无数据依据等问题,利用数字化手段降本增效、降低潜在风险十分关键。在AI等先进技术发展、供应链协同效应和降本诉求等机遇的驱动下,采购供应链数字化、协同化成为企业激烈竞争的优先选…

省钱兄短剧短视频视频滑动播放模块源码支持微信小程序h5安卓IOS

# 开源说明 开源省钱兄短剧系统的播放视频模块(写了测试弄了好久才弄出来、最核心的模块、已经实战了),使用uniapp技术,提供学习使用,支持IOSAndroidH5微信小程序,使用Hbuilder导入即可运行 #注意&#xff…

远程IO在激光行业:实现高效、精准控制的解决方案

激光机简介 激光机是激光雕刻机、激光切割机和激光打标机的总称。激光机利用其高温的工作原理作用于被加工材料表面,同时根据输入到机器内部的图形,绘制出客户要求的图案、文字等。激光机根据用途可分为激光切割机和激光雕刻机。其中,激光切割…

arcpy.AddIDMessage

描述 使用 AddIDMessage 函数编写任何标准错误或警告消息。 示例 代码 def _raise_conda_import_error():#使用 AddIDMessage 函数编写任何标准错误或警告消息。arcpy.AddIDMessage("ERROR", 260005)exit(260005) #检测导入的包是否存在错误,如果导入…

Python爬虫实战案例——第七例

文章中所有内容仅供学习交流使用,不用于其他任何目的!严禁将文中内容用于任何商业与非法用途,由此产生的一切后果与作者无关。若有侵权,请联系删除。 目标:LI视频采集 地址:aHR0cHM6Ly93d3cucGVhcnZpZGVv…

顺序表练习

顺序表练习 图解插入与删除,详见相关内容:顺序存储结构的插入与删除 //顺序表的定义、创建、插入、删除、查找 //定义:结构体中数组、表长 //创建:输入元素,表长 //插入:判断表是否已满、判断位序合法性 //插入位序k…

51单片机晶体管数字编码

51单片机 单片机型号:STC86C52RC/LE52RC 晶体管 数字编码 数字P0P1P2P3P4P5P6P7011111100101100000211011010311110010401100110510110110610111110711100000811111110911110110 00011 11110x3F10000 01100x0620101 10110x5B30100 11110x4F40110 01100x6650110 110…

微服务框架SpringcloudAlibaba+Nacos集成RabbiMQ

目前公司使用jeepluscloud版本,这个版本没有集成消息队列,这里记录一下,集成的过程;这个框架跟ruoyi的那个微服务版本结构一模一样,所以也可以快速上手。 1.项目结构图: 配置类的东西做成一个公共的模块 …

win11系统自带便利签

步骤如下: 在搜索框输入 便笺 2. 打开及用。

CGAL+QT

先安装CGAL和QT 安装完QT其中MSVC 这两个没配置 1、x32配置选择的是 x64配置选择的是 2、CGAL 5.4.5 - Manual: Using CGAL on Windows (with Visual C) 参数文章配置一些环境变量 3、 测试 新建build 进行cmake QT、Boost、CGAL都自动匹配上了(环境变量已经配…

Tigger绕过激活锁/屏幕锁隐藏工具,支持登入iCloud有消息通知,支持iOS12.0-14.8.1。

绕过激活锁工具Tigger可以用来帮助因为忘记自己的ID或者密码而导致iPhone/iPad无法激活的工具来绕过自己的iPhone/iPad。工具支持Windows和Mac。 工具支持的功能: 1.Hello界面两网/三网/无基带/乱码绕过,可以完美重启,支持iCloud登录、有消…

PCL setCameraPosition 参数讲解

setCameraPosition 的原型如下void setCameraPosition (double pos_x, double pos_y, double pos_z,double view_x, double view_y, double view_z,double up_x, double up_y, double up_z, int viewport 0);pos_x pos_y pos_z为相机所在的位置view_x view_y view_z 是焦点所…