matplotlib生成一组[-2,2]之间的随机数列表,一共45个浮点数
时间: 2024-09-19 17:18:10 浏览: 39
可以使用Python的matplotlib库结合numpy库来生成一组[-2, 2]之间的随机数列表。首先需要安装这两个库,如果尚未安装,可以使用pip install matplotlib numpy命令进行安装。
下面是一个示例代码片段:
```python
import matplotlib.pyplot as plt
import numpy as np
# 生成45个随机浮点数,范围在[-2, 2]
random_numbers = np.random.uniform(-2, 2, 45)
# 打印生成的随机数列表
print("生成的随机数列表:", random_numbers)
# 可视化这些随机数,这里仅作展示,实际可以根据需求绘制直方图、散点图等
plt.hist(random_numbers, bins=20) # 绘制直方图
plt.xlabel('数值')
plt.ylabel('频率')
plt.title('[-2,2]之间随机数分布')
plt.show()
```
这段代码首先生成了一个长度为45的随机数列表,然后通过matplotlib的hist函数将其可视化为直方图。你可以根据需要调整数字的个数和绘图样式。
相关问题
matplotlib生成0-40内固定的30个随机数
下面是使用Python的random模块和matplotlib库生成0-40内固定的30个随机数并绘制成直方图的代码:
```python
import random
import matplotlib.pyplot as plt
# 生成30个0-40内的随机数
random_list = [random.uniform(0, 40) for _ in range(30)]
# 绘制直方图
plt.hist(random_list, bins=10, range=(0, 40))
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Random numbers')
plt.show()
```
解释一下代码:
- `random.uniform(0, 40)` 用于生成0-40内的随机浮点数。
- `range(30)` 用于生成包含30个元素的列表,每个元素都是一个随机数。
- `plt.hist()` 可以将列表中的数据绘制成直方图,其中 `bins` 表示直方图的柱子个数,`range` 表示数据的范围。
- `plt.xlabel()` 和 `plt.ylabel()` 分别用于设置X轴和Y轴的标签。
- `plt.title()` 用于设置图表的标题。
- `plt.show()` 用于显示图表。
(一)使用matplotlib模块对数学函数进行可视化,所要画出的数学函数有如下6个: y=sinx**2+x y=cosx**3+2 y=e**(-x)+x**2+1 y=tan|x|+3 y=sinx y=cosx X轴上点的分布范围为,a是取值范围为[-aΠ,aΠ]的随机浮点数,小数点后取两位,该随机数通过交互界面中的按钮1进行实现;每个函数中分布点的个数n为一个整型随机数,该随机数的取值范围为[100,300],该数通过交互界面中的按钮2进行实现。生成图像的要求: 1、六个函数生成多轴域图,按照的分布形式进行显示(每一行每一列中都有三张函数图); 2、每个函数图的线条颜色都不相同; 3、每个函数图中都应具有该函数的图例,即显示出所对应线条的函数公式; 4、函数图像的生成需通过交互界面中按钮3进行实现。
以下是实现该功能的Python代码,使用了matplotlib模块:
```python
import random
import matplotlib.pyplot as plt
import numpy as np
a = None
n = None
fig, axs = plt.subplots(2, 3, figsize=(12, 8))
def generate_data():
global a, n
a = round(random.uniform(-1, 1) * np.pi, 2)
n = random.randint(100, 300)
def plot_func(func, ax):
x = np.linspace(-a*np.pi, a*np.pi, n)
y = func(x)
color = np.random.rand(3,)
ax.plot(x, y, color=color)
ax.legend([f"${func.__name__}(x)$"])
def plot_all_funcs():
plot_func(lambda x: np.power(np.sin(x), 2) + x, axs[0, 0])
plot_func(lambda x: np.power(np.cos(x), 3) + 2, axs[0, 1])
plot_func(lambda x: np.exp(-x) + np.power(x, 2) + 1, axs[0, 2])
plot_func(lambda x: np.tan(np.abs(x)) + 3, axs[1, 0])
plot_func(np.sin, axs[1, 1])
plot_func(np.cos, axs[1, 2])
plt.show()
generate_data()
btn1 = widgets.Button(description='Generate Data')
btn1.on_click(lambda btn: generate_data())
display(btn1)
btn2 = widgets.Button(description='Plot Functions')
btn2.on_click(lambda btn: plot_all_funcs())
display(btn2)
```
在这个实现中,我们首先定义了一个`generate_data()`函数,用于生成随机的`a`和`n`值,这个函数会在点击“Generate Data”按钮时被调用。
然后,我们定义了一个`plot_func()`函数,用于根据给定的函数绘制图像,并将其添加到指定的子图中。在这个函数中,我们首先根据`a`和`n`生成一组`x`和`y`的值,然后使用`np.random.rand()`函数生成一个随机的RGB颜色,最后使用`ax.plot()`函数绘制函数图像,并将其添加到指定的子图中。
最后,我们定义了一个`plot_all_funcs()`函数,用于绘制所有的函数图像。在这个函数中,我们分别调用`plot_func()`函数绘制六个函数的图像,并将它们添加到指定的子图中。然后,我们使用`plt.show()`函数显示所有的子图。
最后,我们创建了两个按钮,一个用于生成随机数据,另一个用于绘制函数图像。这两个按钮都是使用`ipywidgets`模块创建的,可以在Jupyter Notebook中直接显示和使用。
阅读全文