Matplotlib数据可视化进阶(二)

简介: 本文其实属于:Python的进阶之道【AIoT阶段一】的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍Matplotlib数据可视化进阶,读本文之前,如果没有 Matplotlib基础建议先看博客:Matplotlib数据可视化入门,Matplotlib数据可视化高级。

1.4 直方图

🚩绘制的直方图其实就是一个概率分布,直方图可以看成很多个柱子的柱状图

import numpy as np
import matplotlib.pyplot as plt
mu = 100 # 平均值
sigma = 15 # 标准差
x = np.random.normal(loc = mu, scale = 15, size = 10000)
fig, ax = plt.subplots()
# 直方图一般用于描述统计性的数据
# 数据量比较大,通过绘制直方图,看出数据内部的关系
# density = True 统计的是概率
# density = False 统计数字在某个范围内的次数
n, bins, patches = ax.hist(x, 200, density = True) # 直方图
# 概率密度函数
y = ((1 / (np.sqrt(2 * np.pi) * sigma)) *
     np.exp(-0.5 * (1 / sigma * (bins - mu)) ** 2))
plt.plot(bins, y, '--')
plt.xlabel('Smarts')
plt.ylabel('Probability density')
plt.title(r'Histogram of IQ: $\mu=100$, $\sigma=15$')
# 紧凑布局
fig.tight_layout()

21.png

1.5 箱形图

import numpy as np
import matplotlib.pyplot as plt
# 正态分布
data = np.random.normal(size = (500, 4)) 
lables = ['A', 'B', 'C', 'D']
# 用Matplotlib画箱线图
# 黄色的线就是中位数,红色的圆点是异常值
_ = plt.boxplot(data, 1, 'ro', labels = lables) 

image.png

1.6 散点图

import numpy as np
import matplotlib.pyplot as plt
data = np.random.randn(100, 2)
s = np.random.randint(100, 300, size = 100)
color = np.random.randn(100)
plt.scatter(data[:, 0], # 横坐标
            data[:, 1], # 纵坐标
            s = s, # 尺寸
            c = color, # 颜色
            alpha = 0.5) # 透明度

image.png

1.7 饼图

1.7.1 一般饼图

import numpy as np
import matplotlib.pyplot as plt
# 解决中文字体乱码的问题
plt.rcParams['font.sans-serif'] = 'KaiTi' 
labels = ["五星", "四星", "三星", "二星", "一星"] # 标签
percent = [95, 261, 105, 30, 9] # 某市星级酒店数量
# 设置图片大小和分辨率
fig = plt.figure(figsize = (5, 5), dpi = 120)
# 偏移中心量,突出某一部分
# 0.1 表示 10%,自身高度的10%,是一个相对值
explode = (0, 0.1, 0, 0, 0) 
# 绘制饼图:autopct显示百分比,这里保留一位小数;shadow控制是否显示阴影
_ = plt.pie(x = percent,         # 数据
        explode = explode,   # 偏移中心量
        labels = labels,     # 显示标签
        autopct = '%0.1f%%', # 显示百分比
        shadow = True)      # 阴影,3D效果

22.png

1.7.2 甜甜圈

import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize = (6, 6))
# 甜甜圈原料
recipe = ["225g flour",
          "90g sugar",
          "1 egg",
          "60g butter",
          "100ml milk",
          "1/2package of yeast"]
# 原料比例
data = [225, 90, 50, 60, 100, 5]
wedges, texts = plt.pie(data, startangle = 40)
bbox_props = dict(boxstyle = "square,pad=0.3", fc = "w", ec = "k", lw = 0.72)
kw = dict(arrowprops = dict(arrowstyle = "-"),
          bbox = bbox_props, va = "center")
for i, p in enumerate(wedges):
    ang = (p.theta2 - p.theta1) / 2. + p.theta1 # 角度计算
    # 角度转弧度----->弧度转坐标
    y = np.sin(np.deg2rad(ang))
    x = np.cos(np.deg2rad(ang))
    ha = {-1 :  "right", 1 : "left"}[int(np.sign(x))] # 水平对齐方式
    connectionstyle = "angle,angleA=0,angleB={}".format(ang) # 箭头连接样式
    kw["arrowprops"].update({"connectionstyle" : connectionstyle}) # 更新箭头连接方式
    plt.annotate(recipe[i], xy=(x, y), xytext = (1.35 * np.sign(x), 1.4 * y),
                 ha = ha, **kw, fontsize = 18, weight = 'bold')
plt.title("Matplotlib bakery: A donut", fontsize = 18, pad = 25)
plt.tight_layout()

23.png

1.8 热力图

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
# 标签
vegetables = ["cucumber", "tomato", "lettuce", "asparagus", "potato", "wheat", "barley"]
farmers = list('ABCDEFG')
# 创建数据,随机数
harvest = np.random.randn(7, 7) * 5 # 农民丰收数据
plt.rcParams['font.size'] = 18
plt.rcParams['font.weight'] = 'heavy'
plt.figure(figsize = (9, 9))
# imshow() 显示图片,因为数值不同,所以图片颜色不同
im = plt.imshow(harvest) 
plt.xticks(np.arange(len(farmers)), farmers, rotation = 45, ha = 'right')
plt.yticks(np.arange(len(vegetables)), vegetables)
# 绘制文本
for i in range(len(vegetables)):
    for j in range(len(farmers)):
        text = plt.text(j, i, round(harvest[i, j], 1),
                       ha = "center", va = "center", color = 'r')
plt.title("Harvest of local farmers (in tons/year)", pad = 20)

24.png

1.9 面积图

import matplotlib.pyplot as plt
plt.figure(figsize = (9, 6))
days = [1, 2, 3, 4, 5]  
sleeping = [7, 8, 6, 11, 7]
eating = [2, 3, 4, 3, 2]
working = [7, 8, 7, 2, 2]
playing = [8, 5, 7, 8, 13]   
plt.stackplot(days, sleeping, eating, working, playing)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Stack Plot', fontsize = 18)
plt.legend(['Sleeping', 'Eating', 'Working', 'Playing'],
           fontsize = 18)

25.png

1.10 蜘蛛图

import numpy as np
import matplotlib.pyplot as plt
# 画图数据
plt.rcParams['font.family'] = 'KaiTi'
labels = np.array(["个人能力", "IQ", "服务意识",
                   "团队精神", "解决问题能力", "持续学习"])
y = [83, 61, 95, 67, 76, 88]
x = np.linspace(0, 2 * np.pi, len(labels), endpoint = False)
# 首位相接,我们要把 "持续学习" 和 "个人能力相连起来"
y = np.concatenate((y, [y[0]]))  # 首尾相接
x = np.concatenate((x, [x[0]]))  # 首尾相接
# 用Matplotlib画蜘蛛图
fig = plt.figure(figsize = (6, 6))
ax = fig.add_subplot(111, polar = True)   
# 连线
# o:表示形状,圆形
# -:表示实线
# o-:属性连用
ax.plot(x, y, 'o-', linewidth = 2) 
ax.fill(x, y, alpha = 0.25) # 填充颜色
# 设置角度
ax.set_thetagrids(x[:-1] * 180 / np.pi,# 角度值
# 由于首位相接时候相当于给x增加了一个元素,现在需要切片去掉这个元素
                  labels,
                  fontsize = 18)
_ = ax.set_rgrids([20, 40, 60, 80], fontsize = 18)

26.png




目录
相关文章
|
数据可视化 数据挖掘 Linux
震撼发布!Python数据分析师必学,Matplotlib与Seaborn数据可视化实战全攻略!
在数据科学领域,数据可视化是连接数据与洞察的桥梁,能让复杂的关系变得直观。本文通过实战案例,介绍Python数据分析师必备的Matplotlib与Seaborn两大可视化工具。首先,通过Matplotlib绘制基本折线图;接着,使用Seaborn绘制统计分布图;最后,结合两者在同一图表中展示数据分布与趋势,帮助你提升数据可视化技能,更好地讲述数据故事。
433 1
|
数据可视化 数据挖掘 开发者
Pandas数据可视化:matplotlib集成(df)
Pandas 是 Python 中强大的数据分析库,Matplotlib 是常用的绘图工具。两者结合可方便地进行数据可视化,帮助理解数据特征和趋势。本文从基础介绍如何在 Pandas 中集成 Matplotlib 绘制图表,如折线图、柱状图等,并深入探讨常见问题及解决方案,包括图表显示不完整、乱码、比例不合适、多子图布局混乱、动态更新图表等问题,提供实用技巧和代码示例。掌握这些方法后,你将能更高效地处理数据可视化任务。
555 9
|
移动开发 数据可视化 数据挖掘
利用Python实现数据可视化:以Matplotlib和Seaborn为例
【10月更文挑战第37天】本文旨在引导读者理解并掌握使用Python进行数据可视化的基本方法。通过深入浅出的介绍,我们将探索如何使用两个流行的库——Matplotlib和Seaborn,来创建引人入胜的图表。文章将通过具体示例展示如何从简单的图表开始,逐步过渡到更复杂的可视化技术,帮助初学者构建起强大的数据呈现能力。
|
数据可视化 数据挖掘 API
Python中的数据可视化利器:Matplotlib与Seaborn对比解析
在Python数据科学领域,数据可视化是一个重要环节。它不仅帮助我们理解数据,更能够让我们洞察数据背后的故事。本文将深入探讨两种广泛使用的数据可视化库——Matplotlib与Seaborn,通过对比它们的特点、优劣势以及适用场景,为读者提供一个清晰的选择指南。无论是初学者还是有经验的开发者,都能从中找到有价值的信息,提升自己的数据可视化技能。
1006 3
|
数据可视化 数据挖掘 开发者
数据可视化新纪元!Python + Matplotlib + Seaborn,让你的数据故事生动起来!
在这个数据可视化的新纪元,让我们充分发挥 Python 的优势,用精彩的图表讲述数据背后的故事,为决策提供有力的支持,为交流带来清晰的视角。
204 4
|
数据可视化 数据挖掘 API
使用Python进行数据可视化:探索Matplotlib和Seaborn库
【9月更文挑战第19天】在数据科学领域,将复杂的数据集转换成直观、易懂的图形是一项基本而关键的技能。本文旨在通过Python编程语言介绍两个强大的数据可视化库——Matplotlib和Seaborn,以及它们如何帮助数据分析师和研究人员揭示数据背后的故事。我们将从基础概念讲起,逐步深入到高级技巧,确保无论读者的背景如何,都能获得必要的知识和启发,以在自己的项目中实现有效的数据可视化。
|
数据可视化 数据挖掘 Python
惊呆了!Python数据分析师如何用Matplotlib、Seaborn秒变数据可视化大师?
在数据驱动时代,分析师们像侦探一样在数字海洋中寻找线索,揭示隐藏的故事。数据可视化则是他们的“魔法棒”,将复杂数据转化为直观图形。本文将带你探索Python数据分析师如何利用Matplotlib与Seaborn这两大神器,成为数据可视化大师。Matplotlib提供基础绘图功能,而Seaborn在此基础上增强了统计图表的绘制能力,两者结合使数据呈现更高效、美观。无论是折线图还是箱形图,这两个库都能助你一臂之力。
342 4
|
机器学习/深度学习 数据可视化 数据挖掘
数据可视化大不同!Python数据分析与机器学习中的Matplotlib、Seaborn应用新视角!
在数据科学与机器学习领域,数据可视化是理解数据和优化模型的关键。Python凭借其强大的可视化库Matplotlib和Seaborn成为首选语言。本文通过分析一份包含房屋面积、卧室数量等特征及售价的数据集,展示了如何使用Matplotlib绘制散点图,揭示房屋面积与售价的正相关关系;并利用Seaborn的pairplot探索多变量间的关系。在机器学习建模阶段,通过随机森林模型展示特征重要性的可视化,帮助优化模型。这两个库在数据分析与建模中展现出广泛的应用价值。
342 2
|
机器学习/深度学习 数据采集 监控
Pandas与Matplotlib:Python中的动态数据可视化
Pandas与Matplotlib:Python中的动态数据可视化
|
数据可视化 定位技术 Python
Python数据可视化--Matplotlib--入门
Python数据可视化--Matplotlib--入门
229 0