Matplotlib数据可视化实战-2绘制折线图(2)

2.11营业额可视化

已知某学校附近一个烧烤店2022年每个月的营业额如下图所示。编写程序绘制折线图对该烧烤店全年营业额进行可视化,使用红色点画线连接每个月的数据,并在每个月的数据处使用三角形进行标记。

烧烤店营业额
月份123456789101112
营业额/万元5.22.75.85.77.39.218.715.620.518.01.86.9

运行结果如下:

import matplotlib.pyplot as plt# 月份和每月营业额
month = range(1, 13)
money = [5.2, 2.7, 5.8, 5.7, 7.3, 9.2, 18.7, 15.6, 20.5, 18.0, 7.8, 6.9]plt.plot(month, money, 'r-.v', mfc='b', mec='y')
plt.xlabel('月份', fontproperties='simhei', fontsize=14)
plt.ylabel('营业额(万元)', fontproperties='simhei', fontsize=14)
plt.title('烧烤店2022年营业额变化趋势图', fontproperties='simhei', fontsize=18)
# 紧缩四周空白,扩大绘图区域可用面积
plt.tight_layout()plt.show()

参数mfc(marker face color)用来设置散点符号内部颜色

参数mec(marker edge color)设置散点符号边线颜色 

 

2.12绘制折线图模拟连续信号与数字信号

import numpy as np
import matplotlib.pyplot as pltt = np.arange(0, 6*np.pi, 0.05)
# 连续信号与数字信号的函数值
t_sin = np.sin(t)
t_digital1 = np.piecewise(t_sin, [t_sin>0, t_sin<0], [1,-1])
t_digital2 = np.round_(t_sin)plt.plot(t, t_sin, label='$sin(x)$', color='red', lw=1)
plt.plot(t, t_digital1, 'b--', label='digital1')
plt.plot(t, t_digital2, 'g-.', label='digital2')
plt.ylim(-2.0, 2.0)
plt.legend()plt.show()

 

2.13在第一象限中,任意反比例函数xy=k与任意矩形OABC的两个交点的连线始终与矩形的对角线平行,请编写程序验证这一点。

import numpy as np
import matplotlib.pyplot as pltk = 1                                          # 反比例函数xy=k的常数k
m, n = 6, 3                                    # 矩形右上角坐标(m,n)
x = np.arange(0.1, m+0.5, 0.02)                # 第一象限中反比例函数曲线上顶点的x坐标
y = k / x                                      # 根据反比例函数xy=k计算顶点y坐标
plt.plot(x, y, 'b')                            # 绘制第一象限指定区间内的反比例函数图像plt.plot([0,m,m,0,0], [0,0,n,n,0], 'r')        # 绘制矩形,从左下角出发,向右、上、左、下
plt.plot([0,m], [n,0], 'g')                    # 矩形对角线
plt.plot([k/n,m], [n,k/m], 'g')                # 矩形与反比例函数的交点连线for x, y, ch in zip([0,m,m,0,k/n,m], [0,0,n,n,n,k/m], 'OABCDE'):plt.text(x, y+0.02, ch)                    # 绘制顶点与交点的符号
plt.xlim(-0.1, m+1)                            # 设置坐标轴跨度
plt.ylim(-0.1, n+1)
plt.title(f'k={k},m={m},{n=}', fontsize=20)   # 设置图形标题
plt.gca().set_aspect(True)                     # 设置图形纵横比相等plt.show()                                     # 显示图形

2.14绘制函数曲线,计算并标记极值 

import numpy as np
import matplotlib.pyplot as plt# 函数自变量取值范围区间
start, end = 0, 10
# 计算所有采样点的x坐标、y坐标,绘制折线图
x = np.arange(start, end, 0.01)
y = 3*np.sin(x) + 5*np.cos(3*x)
s, = plt.plot(x, y, 'r-')
# 设置子区间长度,在每个子区间(不包含端点)内寻找极值
# 调整区间大小时会影响极值数量,应使得每个子区间内都包含波峰和波谷
span = 66for start in range(0, len(y), span):# 每个子区间的自变量与函数值sectionY = y[start:start+span]sectionX = x[start:start+span]# 局部最大值和局部最小值localMax = sectionY.max()localMin = sectionY.min()# 方案一:# 按值大小升序排序的索引argsort_result = sectionY.argsort()# 区间内所有最大值的索引和所有最小值的索引args_max = argsort_result[-len(sectionY[sectionY==localMax]):]args_min = argsort_result[:len(sectionY[sectionY==localMin])]# 去除子区间端点args_max = list(set(args_max)-{0,span-1})if args_max:s1 = plt.scatter(sectionX[args_max], sectionY[args_max], marker='*', c='b')args_min = list(set(args_min)-{0,span-1})if args_min:s2 = plt.scatter(sectionX[args_min], sectionY[args_min], marker='*', c='g')# 方案二:
##    for index, yy in enumerate(sectionY):
##        if yy==localMax and index not in (0, span-1):
##            # 在极大值处绘制一个蓝色五角星
##            s1 = plt.scatter(sectionX[index], yy, marker='*', c='b')
##        elif yy==localMin and index not in (0, span-1):
##            # 在极小值处绘制一个绿色五角星
##            s2 = plt.scatter(sectionX[index], yy, marker='*', c='g')# 创建图例
plt.legend([s,s1,s2], ['curve','local max','local min'])
#显示绘制的结果
plt.show()

2.15使用折线图可视化角谷猜想

角谷猜想,也被称为“冰雹猜想”或“3n+1猜想”,是一个数学上的未解问题。这个猜想的内容是,对于任意一个正整数,如果是奇数,则乘3再加1,如果是偶数,则除以2,这样得到的结果再按照上述规则重复处理,最终总能够得到1。

角谷猜想的名称来源于其在不同地方的流传历史。它首先在美国流传开来,然后传播到欧洲。后来,一位名叫角谷的日本人将其带到亚洲,因此得名“角谷猜想”。而“冰雹猜想”的名称则来源于这个猜想处理数字时数字上上下下的变化过程,就像冰雹在高空中形成并落下的过程一样。

尽管角谷猜想自提出以来已经经过了许多数学家的研究,但至今仍然没有找到证明或反证。这个猜想在数学界引起了广泛的关注,甚至有一些数学家悬赏求解。

from random import choice, seed
import matplotlib.pyplot as pltdef check(num):times = 0         # 变为1所需要的次数numbers = [num]   # 变为1的过程中的所有数字while True:times = times + 1if num%2 == 0:num = num // 2else:num = num*3 + 1numbers.append(num)if num == 1:# 变为1时结束循环breakreturn range(times+1), numbersseed(20220702)
for _ in range(6):num = choice(range(1, 9999))plt.plot(*check(num), label=str(num))plt.legend()
plt.show()

 2.16角谷猜想中正整数最终变为1所需要的计算次数

 

from random import randrange, seed
import matplotlib.pyplot as pltdef check(num):times = 0while True:times = times + 1if num%2 == 0:num = num // 2else:num = num*3 + 1if num == 1:breakreturn timesticks = []
seed(20220702)
for _ in range(6):num = randrange(1, 9999)tick = check(num)ticks.append(tick)# 第一个参数表示y坐标,表示每个柱的位置,对应变为1所需要的次数# 第二个参数表示长度,对应要变为1的数字plt.barh(tick, num, label=str(num))
# 在每个柱对应的位置显示刻度
plt.yticks(ticks)
plt.legend()plt.show()

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

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

相关文章

Claude 3被玩出自我意识了?AI社区轰动,我们买会员来了次实测

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了人工智能中文站 每天给大家更新可用的国内可用chatGPT资源​ 更多资源欢迎关注 ​ Anthropic 发布了新一代大模型系列 Claude 3&#xff0c;遥遥领先快一年之久的 GPT-4 终于迎来了强劲的对手。 ​ Claude 3 …

yolov8 pose keypoint解读

yolov8进行关键点检测的代码如下&#xff1a; from ultralytics import YOLO# Load a model model YOLO(yolov8n.pt) # pretrained YOLOv8n model# Run batched inference on a list of images results model([im1.jpg, im2.jpg]) # return a list of Results objects# Pr…

UE4_官方动画内容示例1.2_动画蓝图——使用蓝图告知Actor播放动画

展示了两个示例&#xff1a;在其中一个示例中&#xff0c;使用蓝图告知Actor播放动画&#xff0c;在另外一个示例中&#xff0c;展示了告知Actor播放动画的动画蓝图&#xff08;例如&#xff0c;此示例展示了如何将变量从蓝图传递给动画蓝图&#xff0c;并演示了如何将现有姿势…

Wireshark使用相关

1.wireshark如何查看RST包 tcp.flags.reset1 RST表示复位&#xff0c;用来异常的关闭连接&#xff0c;在TCP的设计中它是不可或缺的。发送RST包关闭连接时&#xff0c;不必等缓冲区的包都发出去&#xff08;不像上面的FIN包&#xff09;&#xff0c;直接就丢弃缓存区的包发送R…

PostgreSQL FDW(外部表) 简介

1、FDW: 外部表 背景 提供外部数据源的透明访问机制。PostgreSQL fdw(Foreign Data Wrapper)是一种外部访问接口,可以在PG数据库中创建外部表,用户访问的时候与访问本地表的方法一样,支持增删改查。 而数据则是存储在外部,外部可以是一个远程的pg数据库或者其他数据库(…

Excel 十字交叉聚光灯查询,再也不用担心看串行与列

当Excel表格行列较多时&#xff0c;要想跟条件找到目标数据可以用查找引用函数自动调取&#xff0c;如果又想让找出来的结果突出显示&#xff0c;有什么好办法呢&#xff1f; 先来看一个做好的案例效果&#xff0c;用户选择查询条件后&#xff0c;结果突出显示。 当查询条件变…

蓝桥题目集

1.关于你的欢迎语 这个题目要求修改bug 在未修改时是运行显示的是它的案例。 这里的想法采用模板字符串&#xff0c;将我们获取到的输入内容放入模板中进行替换。 首先就要通过id获取相关内容 再通过获取输出栏的id将我们用模板字符串拼接好的内容进行输出。 首先&#xff…

llama模型c语言推理@FreeBSD

llama中文名羊驼&#xff0c;Meta AI推出的一款大型语言模型&#xff0c;其性能在多个自然语言处理任务上表现优异是一个非常棒的自然语言生成模型。 llama.cpp是一个使用c语言推理llama的软件包&#xff0c;它支持FreeBSD、Linux等多种平台。 GitHub - ggerganov/llama.cpp:…

Web漏洞--WAF绕过+堆叠查询

Stacked injections(堆叠注入)从名词的含义就可以看到应该是一堆 sql语句(多条)一起执行。而在真实的运用中也是这样的&#xff0c;我们知道在mysql 中&#xff0c;主要是命令行中&#xff0c;每一条语句结尾加;表示语句结束。这样我们就想到了是不是可以多句一起使用。这个叫做…

[论文精读]BrainVGAE: End-to-End Graph Neural Networks for Noisy fMRI Dataset

论文网址&#xff1a;BrainVGAE: End-to-End Graph Neural Networks for Noisy fMRI Dataset | IEEE Conference Publication | IEEE Xplore 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现…

【字节二面】SpringBoot可以同时处理多少请求

目录 一、示例代码二、那么springboot可以处理多少请求&#xff1f;三、maxConnections、maxThreads、acceptCount的关系 一、示例代码 RestController Slf4j public class RequestController {GetMapping("/test")public String test(HttpServletRequest request) …

【详细讲解React 快速入门教程】

&#x1f525;博主&#xff1a;程序员不想YY啊&#x1f525; &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f4ab; &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 &#x1f308;希望本文对您有所裨益&#xff0c;如有…