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




目录
相关文章
|
1月前
|
数据可视化 数据挖掘 API
数据可视化秘籍:用Matplotlib和Seaborn创建洞察力图表
【4月更文挑战第12天】本文介绍了Python中的数据可视化库Matplotlib和Seaborn,它们是数据分析中的强大工具。Matplotlib是基础绘图库,提供面向对象的API,可绘制多种图表。Seaborn基于Matplotlib,提供更美观和易用的界面,支持复杂的数据可视化技术。文中展示了如何使用这两个库创建线图、散点图、条形图、饼图和直方图,以帮助理解数据并展示发现。
|
2月前
|
机器学习/深度学习 数据可视化 数据处理
Python数据可视化:探索Matplotlib库的强大功能
本文将深入探讨Python中用于数据可视化的重要工具之一——Matplotlib库。通过介绍Matplotlib库的基本概念、常用功能和实际应用案例,帮助读者更好地了解如何利用Matplotlib创建各种吸引人的数据图表。
|
2月前
|
数据可视化 数据挖掘 数据处理
Python数据可视化库Matplotlib介绍与实践
本文深入介绍了Python中常用的数据可视化库Matplotlib,包括其基本概念、核心功能和实际运用。通过详细的示例和解释,帮助读者更好地理解Matplotlib的用法和优势,为数据分析和可视化提供技术支持。
|
13天前
|
数据采集 Web App开发 数据可视化
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
|
24天前
|
数据可视化 数据挖掘 定位技术
Python 基于 Matplotlib 实现数据可视化(二)
Python 基于 Matplotlib 实现数据可视化(二)
25 0
|
24天前
|
数据可视化 数据挖掘 开发者
Python 基于 Matplotlib 实现数据可视化(一)
Python 基于 Matplotlib 实现数据可视化
25 0
|
25天前
|
数据可视化 Python
Matplotlib动画效果制作:让数据可视化更生动
【4月更文挑战第17天】本文介绍了如何使用Python的Matplotlib库创建动态数据可视化动画。通过`animation`模块的`FuncAnimation`类,可以实现数据随时间变化的动态展示。基础动画制作涉及创建Figure对象、定义更新帧的函数,然后调用`FuncAnimation`。文章还分享了自定义动画速度、循环播放、添加标题和标签的方法,以及处理多个动态对象、应用条件逻辑和创建交互式动画的高级技巧。通过这些方法,可以提升数据可视化的生动性和吸引力。
|
25天前
|
数据采集 数据可视化 算法
利用Matplotlib进行复杂数据可视化
【4月更文挑战第17天】本文介绍了如何使用Python的Matplotlib库进行复杂数据可视化,包括数据预处理(如清洗、降维)、定制图表(选择图表类型、调整样式和布局、添加注释)以及交互式可视化。通过实例展示了如何使用PCA进行降维并绘制散点图,以及如何增强图表的可读性。文章强调了在复杂数据可视化中,预处理和定制化的重要性,并提到了交互式功能以提升用户体验。
|
25天前
|
数据可视化 搜索推荐 数据挖掘
Matplotlib入门:数据可视化基础
【4月更文挑战第17天】这篇文章是Matplotlib的入门教程,介绍了如何使用Python的Matplotlib库进行数据可视化。内容包括Matplotlib的基本概念、安装与导入、绘制线图、定制图形标题和标签、以及散点图、柱状图和饼图的绘制。通过本文,读者可以掌握数据可视化的基础,为进一步探索Matplotlib的高级功能打下基础。
|
2月前
|
数据可视化 数据挖掘 Python
Python中的数据可视化工具Matplotlib简介与实践
在本文中,我们将介绍Python中常用的数据可视化工具Matplotlib,包括其基本概念、常用功能以及实际应用。通过学习Matplotlib,读者可以更好地理解和运用数据可视化技术,提升数据分析与展示的能力。