南昌网站建设技术托管,网站建设关键词排名,wordpress数据表更换域名,wordpress 结构化数据插件2.11营业额可视化
已知某学校附近一个烧烤店2022年每个月的营业额如下图所示。编写程序绘制折线图对该烧烤店全年营业额进行可视化#xff0c;使用红色点画线连接每个月的数据#xff0c;并在每个月的数据处使用三角形进行标记。 烧烤店营业额 月份123456789101112营业额/万…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, mfcb, mecy)
plt.xlabel(月份, fontpropertiessimhei, fontsize14)
plt.ylabel(营业额万元, fontpropertiessimhei, fontsize14)
plt.title(烧烤店2022年营业额变化趋势图, fontpropertiessimhei, fontsize18)
# 紧缩四周空白扩大绘图区域可用面积
plt.tight_layout()plt.show()参数mfcmarker face color用来设置散点符号内部颜色
参数mecmarker 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_sin0, t_sin0], [1,-1])
t_digital2 np.round_(t_sin)plt.plot(t, t_sin, label$sin(x)$, colorred, lw1)
plt.plot(t, t_digital1, b--, labeldigital1)
plt.plot(t, t_digital2, g-., labeldigital2)
plt.ylim(-2.0, 2.0)
plt.legend()plt.show()2.13在第一象限中任意反比例函数xyk与任意矩形OABC的两个交点的连线始终与矩形的对角线平行请编写程序验证这一点。
import numpy as np
import matplotlib.pyplot as pltk 1 # 反比例函数xyk的常数k
m, n 6, 3 # 矩形右上角坐标(m,n)
x np.arange(0.1, m0.5, 0.02) # 第一象限中反比例函数曲线上顶点的x坐标
y k / x # 根据反比例函数xyk计算顶点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, y0.02, ch) # 绘制顶点与交点的符号
plt.xlim(-0.1, m1) # 设置坐标轴跨度
plt.ylim(-0.1, n1)
plt.title(fk{k},m{m},{n}, fontsize20) # 设置图形标题
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:startspan]sectionX x[start:startspan]# 局部最大值和局部最小值localMax sectionY.max()localMin sectionY.min()# 方案一# 按值大小升序排序的索引argsort_result sectionY.argsort()# 区间内所有最大值的索引和所有最小值的索引args_max argsort_result[-len(sectionY[sectionYlocalMax]):]args_min argsort_result[:len(sectionY[sectionYlocalMin])]# 去除子区间端点args_max list(set(args_max)-{0,span-1})if args_max:s1 plt.scatter(sectionX[args_max], sectionY[args_max], marker*, cb)args_min list(set(args_min)-{0,span-1})if args_min:s2 plt.scatter(sectionX[args_min], sectionY[args_min], marker*, cg)# 方案二
## for index, yy in enumerate(sectionY):
## if yylocalMax and index not in (0, span-1):
## # 在极大值处绘制一个蓝色五角星
## s1 plt.scatter(sectionX[index], yy, marker*, cb)
## elif yylocalMin and index not in (0, span-1):
## # 在极小值处绘制一个绿色五角星
## s2 plt.scatter(sectionX[index], yy, marker*, cg)# 创建图例
plt.legend([s,s1,s2], [curve,local max,local min])
#显示绘制的结果
plt.show()2.15使用折线图可视化角谷猜想
角谷猜想也被称为“冰雹猜想”或“3n1猜想”是一个数学上的未解问题。这个猜想的内容是对于任意一个正整数如果是奇数则乘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(times1), numbersseed(20220702)
for _ in range(6):num choice(range(1, 9999))plt.plot(*check(num), labelstr(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, labelstr(num))
# 在每个柱对应的位置显示刻度
plt.yticks(ticks)
plt.legend()plt.show()