项目2 数据可视化--- 第十五章 生成数据

news/2025/2/23 1:23:08/

数据分析是使用代码来探索数据内的规律和关联。

数据可视化是通过可视化表示来 探索和呈现数据集内的规律。

好的数据可视化,可以发现数据集中未知的规律和意义。

一个流行的工具是Matplotlib,他是一个数据绘图库;

还有Plotly包,这个包生成的图形非常适合在数字设备上显示——不仅能根据显示设备的尺寸自动调整大小,还具备众多交互特性,如在用户将鼠标指向图形的不同区域时,突出显示数据集的相应特征。

15.1  安装Matplotlib

python -m pip install --user matplotlib

15.2 绘制简单的折线图

fig相当于一个大图片窗口;ax 相当于里面的线 内容。 

  1. fig ,ax =plt.subplots()
  2. plt.plot(数据参数) 
  • #创建窗口和图 subplots()

    fig, ax = plt.subplots()

    #ax图调用plot方法 传入数据参数

    ax.plot(input_values, squares, linewidth=3)

 15.2.1 修改标签文字和线条粗细

1.添加图题并给坐标轴加上标签

import matplotlib.pyplot as pltsquares = [1, 4, 9, 16, 25]fig, ax = plt.subplots()
#linewidth 设置线条粗细
ax.plot(squares, linewidth=3)# 设置图题并给坐标轴加上标签
ax.set_title("Square Numbers", fontsize=24)
ax.set_xlabel("Value", fontsize=14)
ax.set_ylabel("Square of Value", fontsize=14)# 设置刻度标记的样式,将刻度标签字体大小设置为 14
ax.tick_params(labelsize=14)plt.show()

15.2.2 校正绘图

图更清楚了 标题字大了,但是,数据绘制的并不正确。

折线图的终点 4的平方为25。

可给plot同时提供输入值和输出值。

 marker='o')

import matplotlib.pyplot as plt
#相当于给横纵坐标对应的点了
input_values = [1, 2, 3, 4, 5]
squares = [1, 4, 9, 16, 25]#1.调用subplots()函数方法
fig, ax = plt.subplots()
#2.调用plot方法 传入数据列表当做数据参数    marker='o'整个小圆点更容易看出点
ax.plot(input_values, squares, linewidth=3 ,marker='o')# Set chart title and label axes.
ax.set_title("Square Numbers", fontsize=24)
ax.set_xlabel("Value", fontsize=14)
ax.set_ylabel("Square of Value", fontsize=14)# Set size of tick labels.
ax.tick_params(labelsize=14)plt.show()

15.2.3 使用内置样式

 Matplotlib提供很多已经定义好的样式,这些样式包含默认的背景色、网格线、线条粗细、字体和字号等设置,我们无需做太多定制就能有不错的可视化效果。看我们系统中使用的所有样式,可以在终端进入python 再输入:

import matplotlib.pyplot as plt

 

15.2.4 使用scatter()绘制散点图并设置样式

 有时候, 需要绘制散点图并设置各个数据点的样式。

可以想一个颜色显示数值小的数据,另一个颜色显示数值大的数据。

在绘制大数据模型时,还可先对每个点都设置同样的样式,再使用不同的样式重新描绘某些点,突出某些点。

绘制单个点,可以使用scatter()方法,并向它传递该点的xy轴坐标值。

 绘制一系列的散点

15.2.6 自动计算数据

比如计算平方数 

相当于 x轴给值 ,y轴给平方值。

# axis方法设置每个坐标轴的取值范围
# 四个参数分别是 x的最小和最大;y轴的最小和最大值
ax.axis([0, 1100, 0, 1_100_000])

15.2.7 定制刻度标记

没啥用 plain

可以覆盖默认的刻度标记样式

 

15.2.8 定制颜色

15.2.9 使用颜色映射

是一个从起始颜色渐变到结束颜色的颜色序列,在可视化中,颜色映射用于突出数据的规律。

用较浅的颜色来显示较小的值,使用较深的颜色来显示较大的值。

使用颜色映射,可根据精心设计的色标准确的设置所有点的颜色。

ax.scatter(x_values, y_values, s=1,color ='red',marker='o')

ax.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, s=10)

ax.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Reds_r, s=10)

了解其他颜色映射

Matplotlib — Visualization with Python

 

15.2.10 自动保存绘图


import os
# 获取当前脚本所在的目录
script_dir = os.path.dirname(os.path.abspath(__file__))
# 将当前工作目录切换到脚本所在目录
os.chdir(script_dir)import matplotlib.pyplot as pltx_values = range(1, 1001)
y_values = [x**2 for x in x_values]# plt.style.use('seaborn')
plt.style.use('seaborn-v0_8')
fig, ax = plt.subplots()
ax.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, s=10)# Set chart title and label axes.
ax.set_title("Square Numbers", fontsize=24)
ax.set_xlabel("Value", fontsize=14)
ax.set_ylabel("Square of Value", fontsize=14)# Set size of tick labels.
ax.tick_params(labelsize=14)# Set the range for each axis.
ax.axis([0, 1100, 0, 1_100_000])
ax.ticklabel_format(style='plain')# plt.show()
#第一个参数 命名图片         第二个参数 将绘图多余的空白区域裁剪掉
# 这个图片会存储到当前py文件的同目录下
plt.savefig('picture.png',bbox_inches= 'tight')

 路径变成当前目录下!!!!!
import os
# 获取当前脚本所在的目录
script_dir = os.path.dirname(os.path.abspath(__file__))
# 将当前工作目录切换到脚本所在目录
os.chdir(script_dir)

 

 15.3 随机游走

15.4 使用Plotly 模拟掷骰子

使用Plotly来生成交互式图形。

当需要创建在浏览器中显示的图形时,它生成的图形将自动缩放,以适应观看者的屏幕。

交互式:当用户将鼠标指向特定元素,将显示有关该元素的信息。将使用Plotly Express来创建初始图形。

Plotly Express是plotly的子集,使用尽可能少的代码生成绘图。

我们先使用几行代码生成初始绘图,在确定输出正确之后再使用matplotlib那样对绘图进行定制。

15.4.1 安装plotly

python -m pip install --user plotly

Plotly Express依赖于pandas(一个高效处理数据的库),需要再安装pandas

python -m pip install --user pandas

 

1.创建die类 

2.掷筛子 

3. 分析结果 

# Analyze the results.
frequencies = []
poss_results = range(1, die.num_sides+1) #range(1,6)输出的是1 2  3 4 5,所以range要加1
for value in poss_results:frequency = results.count(value) #计算每个点出现的次数frequencies.append(frequency)  #加到空列表里的末尾

 

 4.绘制直方图

 5.定制绘图

# Visualize the results.
title = "Results of Rolling One D6 1,000 Times"
labels = {'x': 'Result', 'y': 'Frequency of Result'}
fig = px.bar(x=poss_results, y=frequencies, title=title, labels=labels)
fig.show()

6. 当条形太多,x轴默认布局没有加上标签

 

6.保存图形 


http://www.ppmy.cn/news/1573173.html

相关文章

Web前端开发练习3

代码&#xff1a; demo01.综合案例 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>综合案例</…

[Spring Boot] Expense API 实现

[Spring Boot] Expense API 实现 项目地址&#xff1a;expense-api 项目简介 最近跟着视频做的一个 spring boot 的项目&#xff0c;包含了比较简单的记账功能的实现&#xff08;只限 API 部分&#xff09;&#xff0c;具体实现的功能有&#xff1a; 记账&#xff08;expen…

25/2/16 <算法笔记> DirectPose

DirectPose 是一种直接从图像中预测物体的 6DoF&#xff08;位姿&#xff1a;6 Degrees of Freedom&#xff09;姿态 的方法&#xff0c;包括平移和平面旋转。它在目标检测、机器人视觉、增强现实&#xff08;AR&#xff09;和自动驾驶等领域中具有广泛应用。相比于传统的位姿估…

springboot+mybatis按条件分页查询多张表

文章目录 背景方案推荐创建 DTO创建 Mapper创建对应 xmlService 代码 背景 假如同 mysql 数据源下有如下几张表&#xff1a; 用户基础信息表用户地址表用户学历信息表 我希望做分页查询用户数据&#xff0c;用户数据为各个表内信息的汇总&#xff0c;并且这个分页查询会根据…

Node.js 异步并发控制:`p-map` 和 `p-limit` 的使用与对比

在 Node.js 中&#xff0c;处理异步任务是开发中非常常见的需求。无论是批量处理数据、调用外部 API&#xff0c;还是操作文件系统&#xff0c;我们经常需要对多个异步任务进行管理。然而&#xff0c;当任务数量较多时&#xff0c;如果不加以控制&#xff0c;并发可能会导致性能…

Windows 图形显示驱动开发-WDDM 2.0 -GPU虚拟寻址概述

Windows 10 开始引入了 WDDM 2.0。 它包括几个新功能和增强功能&#xff0c;旨在提高 Windows 显示驱动程序模型(WDDM)的性能和功能&#xff0c;例如&#xff1a; GPU 虚拟寻址&#xff0c;其中每个进程分配有一个唯一的 GPU 虚拟地址(GPUVA)空间&#xff0c;每个 GPU 上下文都…

DeepSeek-R1使用生存指南

文章目录 1.为什么普通人一定要使用DeepSeek2.DeepSeek的几种使用方式2.1网页端直接使用2.2手机端app使用2.3其他第三方平台 3.网页端按钮的说明4.正确的提问技巧4.1不要定义过程4.2明确受众4.3记忆时间有限4.4输出长度限制4.5如何清除上下文的记忆 5.几个避坑点5.1冗长提示词污…

UDP与TCP

用UDP一定比用TCP快吗&#xff1f; 假设我们需要在a电脑的进程发一段数据到b电脑的进程我们可以选择使用TCP或UDP协议进行通信。 对于TCP这样的可靠性协议每次消息发出后都能明确知道对方有没有收到&#xff0c;就像打电话一样&#xff0c;只要“喂喂"两下对方就能回你个…