【Python】—— 如果使用matplotlib做数据可视化

简介: 【Python】—— 如果使用matplotlib做数据可视化

相关知识

掌握matplotlib的基本使用方法

     Matplotlib 是一个用于绘制二维图形的 Python 库,广泛用于数据可视化。它提供了一个类似于 MATLAB 的绘图接口,使得用户可以轻松地创建各种静态、动态、交互式的图形。

以下是 Matplotlib 的一些主要特点和组件:

  1. 简单易用: Matplotlib 提供了一个简单的 API,使得用户可以轻松创建图形,而无需深入了解图形学或复杂的绘图原理。
  2. 多种图形类型: Matplotlib 支持各种常见的图形类型,包括线图、散点图、柱状图、饼图、等高线图等。
  3. 定制性强: 用户可以对图形的各个方面进行精细的定制,包括线型、颜色、标签、标题等。
  4. 支持 LaTeX: Matplotlib 支持使用 LaTeX 标记在图形中添加数学公式。
  5. 多平台支持: Matplotlib 可以在多个平台上运行,包括 Windows、Linux 和 macOS。
  6. 图形导出: 用户可以将图形以多种格式导出,包括 PNG、PDF、SVG 等。
  7. 面向对象的接口: Matplotlib 提供了一个面向对象的接口,允许用户更灵活地控制图形的各个元素。

     Matplotlib 的强大之处在于它的灵活性和广泛的应用领域,从简单的图形到复杂的数据可视化,都可以通过 Matplotlib 轻松实现。

     以下是 Matplotlib 的一些主要功能:

1. 折线图

     使用 plot 函数可以创建折线图,用于表示数据的趋势和变化。

import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)
plt.show()

2. 散点图

     使用 scatter 函数可以创建散点图,用于显示两个变量之间的关系。

import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.scatter(x, y)
plt.show()

3. 柱状图

     使用 barbarh 函数可以创建垂直或水平的柱状图,用于比较不同类别的数据。

import matplotlib.pyplot as plt
categories = ['A', 'B', 'C', 'D']
values = [3, 7, 2, 5]
plt.bar(categories, values)
plt.show()

4. 饼图

     使用 pie 函数可以创建饼图,用于显示各部分在整体中的占比。

import matplotlib.pyplot as plt
sizes = [30, 20, 25, 15, 10]
plt.pie(sizes, labels=['A', 'B', 'C', 'D', 'E'])
plt.show()

5. 直方图

     使用 hist 函数可以创建直方图,用于显示数据的分布情况。

import matplotlib.pyplot as plt
data = [1, 2, 2, 3, 3, 3, 4, 4, 5]
plt.hist(data, bins=5)
plt.show()

6. 等高线图

     使用 contour 函数可以创建等高线图,用于表示二维数据的等高线。

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))
plt.contour(X, Y, Z, cmap='viridis')
plt.show()

7. 图形定制

     用户可以定制图形的各个方面,包括颜色、线型、标签、标题等。

import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y, color='red', linestyle='--', marker='o', label='Line A')
plt.title('Customized Line Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend()
plt.show()

     这些只是 Matplotlib 的一小部分功能,该库还支持更多高级的功能,如图形的注释、图形的嵌套、3D 图形、动画等。Matplotlib 的文档和示例库是学习和探索更多功能的好资源。

     访问以下链接https://matplotlib.org/stable/gallery/index.html可以了解到更多功能并获取官方教程。

掌握数据处理的基本方法

1. 数据筛选

使用 Pandas 进行数据筛选,例如选择满足某个条件的行。

import pandas as pd
# 假设 df 是一个数据框
filtered_data = df[df['column'] > 10]

2. 缺失值处理

处理缺失值,可以使用 Pandas 的 dropna()fillna() 方法。

import pandas as pd
# 删除包含缺失值的行
df.dropna()
# 使用特定值填充缺失值
df.fillna(0)

3. 异常值处理

识别和处理异常值,可以通过统计方法或可视化方法来检测异常值。

import pandas as pd
# 使用描述性统计分析识别异常值
mean = df['column'].mean()
std = df['column'].std()
threshold = mean + 3 * std
# 删除超过阈值的异常值
df = df[df['column'] < threshold]

理解数据可视化的原则和方法

1. 选择合适的图表类型

     根据数据的特性和目标,选择合适的图表类型,例如使用折线图表示趋势,柱状图比较类别等。

2. 避免数据混淆

     确保图表清晰易懂,避免使用过于复杂的图表或颜色,以防止数据混淆。

3. 突出重要信息

     通过调整图表的样式,突出重要的数据信息,如使用颜色或标签来强调关键数据点。

能够根据实际需求选择合适的图表类型

    选择适当的图表类型,考虑数据的结构和目标,例如使用散点图展示相关性,饼图表示比例,柱状图比较类别等。

能够根据实际需求调整图表的属性和样式

    根据图表的目标和观众,调整图表的属性和样式,包括颜色、线型、标签、标题等,以提高图表的可读性和美观性。

内容

1、从网站中选取三个国家的从1960-2022年的GDP值,绘制一幅折线图。


方法1

部分代码截图:

运行结果(折线图):

方法2

部分代码截图:

运行结果(折线图):

2、在一幅图中绘制四幅子图

  • 反映国内或者国际上主要手机品牌在某年或者某季度的销量的饼图。
  • 反映广东省各市的GDP。横
  • 广州市房价平均值的柱状图。
  • 绘制广东省2022年的高考一分段的散点图。

部分代码截图:

image.png

运行结果:

附录

  1. 从网站中选取三个国家的从1960-2022年的GDP值,绘制一幅折线图。:

方法1:

import os
import matplotlib.pyplot as plt
import pandas as pd
# 设置支持中文的Matplotlib字体
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 读取数据
file_path = os.path.abspath('GDP.csv')
data = pd.read_csv(file_path, encoding='gbk')
# 提取数据
years = data['年份']
usa_gdp = data['美国GDP(万亿)']
uk_gdp = data['英国GDP(万亿)']
china_gdp = data['中国GDP (万亿)']
# 绘制折线图
fig, ax = plt.subplots()
ax.plot(years, usa_gdp, Label='美国')
ax.plot(years, uk_gdp, Label='英国')
ax.plot(years, china_gdp, label='中国')
ax.set_xlabel('年份')
ax.set_ylabel('GDP (万亿)')
ax.set_title('1960-2022年各国GDP')
ax.Tegend()
plt.show()

方法2:

import urllib.request
import re
import pandas as pd
import csv
import matplotlib.pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")
#网页数据分析
def getdata(url):
    req = urllib.request.Request(url)
    req.add_header('User-Agent',
                   ' Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36')#设置请求头信息
    data = urllib.request.urlopen(req).read().decode('utf-8')
    str1 = str(data)
    pat = '''<tr>
                                    <td>(.*?)</td>
                                    <td>(.*?)</td>
                                    <td>(.*?)</td>
                                    <td>(.*?)\(.*?</td>
                                        <td>.*?</td>
                                </tr>'''#网页分析进行选定内容,正则表达
    result = re.compile(pat).findall(str1)
    return result
#网页数据存储
def datastorage():
    for i in range(1960, 2023):
        print('正在收集第%d年数据' % i)
        rank = []
        country = []
        zhou = []
        total = []
        url = 'https://www.kuaiyilicai.com/stats/global/yearly/g_gdp/' + str(i) + '.html'
        data = getdata(url)
        for j in range(0, len(data)):
            rank.append(data[j][0])#当页排名
            country.append(data[j][1])#国家
            zhou.append(data[j][2])#所在州
            total.append(data[j][3])#GDP
        dataframe = pd.DataFrame({'排名': rank, '国家/地区': country, '所在洲': zhou, 'GDP(美元计)': total})
        dataframe.to_csv(str(i) + "年世界gdp排名.csv", index=False, sep=',', encoding="utf_8_sig", mode="a+")
        print(i, '年数据收集完成')
datastorage()
#文字转数字
def str2value(valueStr):
    valueStr = re.sub(r'亿', '00000000', valueStr)  # 将"亿"替换为8个零
    valueStr = re.sub(r'万', '0000', valueStr)  # 将"万"替换为4个零
    valueStr = re.sub(r'\.|,', '', valueStr)  # 去除小数点和逗号
    return int(valueStr)
timegdp = list(range(1960,2023))
zhongdata = []
meidata = []
yingdata = []
print("打开文件,搜索需要内容中.....")
for i in range(1960,2023):
    csv_reader = csv.reader(open(str(i) + "年世界gdp排名.csv",encoding="utf-8"))
    for row in csv_reader:
        if row[1]=='中国':
            zhongdata.append(row[3])
        if row[1]=='美国':
            meidata.append(row[3])
        if row[1]=='英国':
            yingdata.append(row[3])
result = [str2value(valueStr) for valueStr in zhongdata]
result1 = [str2value(valueStr) for valueStr in meidata]
result2 = [str2value(valueStr) for valueStr in yingdata]
# 画图
plt.plot(timegdp, result, 'b*--', alpha=0.5, linewidth=1, label='PRC')
plt.plot(timegdp, result1, 'rs--', alpha=0.5, linewidth=1, label='USA')
plt.plot(timegdp, result2, 'go--', alpha=0.5, linewidth=1, label='UK')
plt.legend()  # 显示上面的label
plt.xlabel('时间')
plt.ylabel('GDP')  # accuracy
# plt.ylim(-1,1)#仅设置y轴坐标范围
plt.show()
  1. 在一幅图中绘制四幅子图
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
matplotlib.use('TkAgg')
# 设置Matplotlib的默认字体,并忽略警告
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
phone_brands = ['Apple(苹果)', 'samsung(三星)', 'Xiaomi(小米)', 'OPPO(欧珀)', 'vivo(维沃)', '其他']
phone_sales = [19, 22, 13, 9, 9, 28]
cities = ['深圳', '广州', '佛山', '东莞', '惠州', '珠海', '茂名', '江门', '湛江', '中山', '汕头', '肇庆', '揭阳',
          '清远', '韶关', '阳江', '汕尾', '梅州', '潮州', '河源', '云浮']
gdp_values = [32387.68, 28839, 12698.39, 11200.32, 5401.24, 4045.45, 3904.63, 3773.41, 3712.56, 3631.28, 3017.44,
              2705.05, 2260.98, 2032.02, 1563.93, 1535.02, 1322.02, 1318.21, 1312.98, 1294.57, 1162.43]
districts = ['天河区', '越秀区', '海珠区', '荔湾区', '白云区', '番禺区', '黄埔区', '南沙区', '增城区', '花都区',
             '从化区']
house_prices = [74723, 72121, 58268, 50631, 49639, 38788, 28890, 23567, 21942, 19420, 16160]
# 柱状图
fig, axes = plt.subplots(2, 2, figsize=(18, 10))
# 饼图 - 手机销量
axes[0, 0].pie(phone_sales, labels=phone_brands, autopct='%1.1f%%', startangle=90)
axes[0, 0].set_title('2022 年全年手机市场销售份额')
# 柱状图 - GDP
axes[0, 1].bar(cities, gdp_values, color='skyblue')
axes[0, 1].set_title('2022年广东省21市GDP排名')
axes[0, 1].set_xlabel('城市')
axes[0, 1].set_ylabel('GDP (亿元)')
# 柱状图 - 房价
axes[1, 0].barh(districts, house_prices, color='salmon')
axes[1, 0].set_title('广州市各区平均房价')
axes[1, 0].set_xlabel('房价 (元/平方米)')
axes[1, 0].set_ylabel('区域')
# 散点图 - 高考一分段
df = pd.read_excel('分数.xlsx', engine='openpyxl')
# # 显示数据
# print(df)
# 提取需要绘制的数据列
province_scores = df['分数']  # np.random.randint(400, 700, 100)
province_ranks = df['人数']  # np.random.randint(1, 101, 100)
axes[1, 1].scatter(province_scores, province_ranks, color='green', alpha=0.4)
axes[1, 1].set_title('广东省2022年历史类一分一段统计')
axes[1, 1].set_xlabel('分数')
axes[1, 1].set_ylabel('人数')
# 设置X轴刻度位置和标签
xticks = np.arange(0, 800, 50)
axes[1, 1].set_xticks(xticks)
axes[1, 1].set_xticklabels([str(x) for x in xticks])
# 设置Y轴刻度位置和标签
yticks = np.arange(0, 1300, 100)
axes[1, 1].set_yticks(yticks)
axes[1, 1].set_yticklabels([str(y) for y in yticks])
plt.tight_layout()
plt.show()


目录
相关文章
|
1月前
|
机器学习/深度学习 数据可视化 搜索推荐
基于python的汽车数据可视化、推荐及预测系统
本研究围绕汽车数据可视化、推荐及预测系统展开,结合大数据与人工智能技术,旨在提升用户体验与市场竞争力。内容涵盖研究背景、意义、相关技术如 Python、ECharts、协同过滤及随机森林回归等,探讨如何挖掘汽车数据价值,实现个性化推荐与智能预测,为汽车行业智能化发展提供支持。
|
22天前
|
数据采集 Web App开发 自然语言处理
新闻热点一目了然:Python爬虫数据可视化
新闻热点一目了然:Python爬虫数据可视化
|
1月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
1月前
|
数据采集 搜索推荐 数据可视化
基于python大数据的商品数据可视化及推荐系统
本系统基于Python、Django与ECharts,构建大数据商品可视化及推荐平台。通过爬虫获取商品数据,利用可视化技术呈现销售趋势与用户行为,结合机器学习实现个性化推荐,助力电商精准营销与用户体验提升。
|
1月前
|
数据可视化 大数据 数据挖掘
基于python大数据的招聘数据可视化分析系统
本系统基于Python开发,整合多渠道招聘数据,利用数据分析与可视化技术,助力企业高效决策。核心功能包括数据采集、智能分析、可视化展示及权限管理,提升招聘效率与人才管理水平,推动人力资源管理数字化转型。
|
2月前
|
搜索推荐 算法 数据可视化
基于python大数据的招聘数据可视化及推荐系统
本研究聚焦于基于协同过滤的就业推荐系统设计与实现。随着就业压力增大和信息技术发展,传统求职方式面临挑战。通过分析用户行为与职位特征,协同过滤技术可实现个性化职位推荐,提升求职与招聘效率。研究涵盖系统架构、数据采集、算法实现及可视化展示,旨在优化就业匹配,促进人才与岗位精准对接,助力就业市场智能化发展。
|
4月前
|
数据可视化 算法 数据挖掘
Python 3D数据可视化:7个实用案例助你快速上手
本文介绍了基于 Python Matplotlib 库的七种三维数据可视化技术,涵盖线性绘图、散点图、曲面图、线框图、等高线图、三角剖分及莫比乌斯带建模。通过具体代码示例和输出结果,展示了如何配置三维投影环境并实现复杂数据的空间表示。这些方法广泛应用于科学计算、数据分析与工程领域,帮助揭示多维数据中的空间关系与规律,为深入分析提供技术支持。
140 0
Python 3D数据可视化:7个实用案例助你快速上手
|
5月前
|
人工智能 数据可视化 数据挖掘
如何使用Python进行数据可视化
Python是一种强大的编程语言,广泛应用于数据分析与可视化。常见的可视化库有Matplotlib、Seaborn和Plotly等。数据可视化通常包括以下步骤:准备数据(如列表或从文件读取)、选择合适的工具、绘制图表、优化样式(如标题和标签)以及保存或分享结果。例如,使用Matplotlib可通过简单代码绘制线图并添加标题和轴标签。实际应用中,可通过调整颜色、样式等进一步优化图表,甚至使用交互式工具提升效果。总之,Python的丰富工具为数据可视化提供了强大支持。
191 5
|
10月前
|
数据可视化 数据挖掘 开发者
Pandas数据可视化:matplotlib集成(df)
Pandas 是 Python 中强大的数据分析库,Matplotlib 是常用的绘图工具。两者结合可方便地进行数据可视化,帮助理解数据特征和趋势。本文从基础介绍如何在 Pandas 中集成 Matplotlib 绘制图表,如折线图、柱状图等,并深入探讨常见问题及解决方案,包括图表显示不完整、乱码、比例不合适、多子图布局混乱、动态更新图表等问题,提供实用技巧和代码示例。掌握这些方法后,你将能更高效地处理数据可视化任务。
328 9
|
10月前
|
数据可视化 数据挖掘 DataX
Python 数据可视化的完整指南
Python 数据可视化在数据分析和科学研究中至关重要,它能帮助我们理解数据、发现规律并以直观方式呈现复杂信息。Python 提供了丰富的可视化库,如 Matplotlib、Seaborn、Plotly 和 Pandas 的绘图功能,使得图表生成简单高效。本文通过具体代码示例和案例,介绍了折线图、柱状图、饼图、散点图、箱形图、热力图和小提琴图等常用图表类型,并讲解了自定义样式和高级技巧,帮助读者更好地掌握 Python 数据可视化工具的应用。
595 3

热门文章

最新文章

  • 1
    Python零基础爬取东方财富网股票行情数据指南
    214
  • 2
    解析Python爬虫中的Cookies和Session管理
    166
  • 3
    Python日志模块配置:从print到logging的优雅升级指南
    123
  • 4
    【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
    92
  • 5
    (Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
    106
  • 6
    (Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
    200
  • 7
    (numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
    75
  • 8
    (numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
    202
  • 9
    (Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
    59
  • 10
    (Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
    92
  • 推荐镜像

    更多