python一张图画多个变量
时间: 2023-07-01 15:14:36 浏览: 171
在Python中,可以使用Matplotlib库来绘制图表。如果要在一张图中画多个变量,可以使用subplot函数来实现。
下面是一个简单的例子,展示如何使用subplot函数画多个变量的图表:
```python
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.arange(0, 10, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
# 绘制图表
fig, axs = plt.subplots(2, 1, figsize=(8, 6))
axs[0].plot(x, y1, label='sin(x)')
axs[0].legend()
axs[1].plot(x, y2, label='cos(x)')
axs[1].legend()
plt.show()
```
这个例子中,我们先生成了两个变量y1和y2,分别表示sin(x)和cos(x)的值。然后使用subplot函数创建了一个2行1列的图表,并将每个变量的图像分别绘制到不同的子图中。最后使用plt.show()函数显示图表。
你可以根据自己的需求修改代码,来实现不同的图表布局和样式。
相关问题
python离散随机变量可能的取值为10个汉字,其中包含本人的姓名中的字(将姓名作为多个字处理)。 自行设置10个汉字对应的分布律,然后对其进行1000次采样,输出采样结果,即1000个汉字。 用直方图画出采样所得汉字各自出现的次数,与第1步中设置的分布律进行比较
在Python中,我们可以使用`random.choices`函数来生成离散随机变量的样本,同时利用`collections.Counter`来统计每个汉字出现的频率。首先,我们需要确定一个由10个汉字组成的列表,包含您的姓名中的字,假设姓名是"张三":
```python
import random
from collections import Counter
# 假设您的姓名是"张三"
name = "张三"
# 将名字拆分为单个汉字
name_chars = list(name)
# 设置分布律,这里可以手动设定权重,例如均匀分布
weights = [1] * len(name_chars)
# 如果需要非均匀分布,例如特定汉字更可能出现
# weights = [0.2, 0.3, 0.4, 0.1 for _ in name_chars]
# 进行1000次采样
sample_size = 1000
samples = random.choices(name_chars, weights=weights, k=sample_size)
# 统计每个汉字出现的次数
counter = Counter(samples)
# 输出采样结果
print("采样结果:", samples[:5], "... (共1000个字符)")
# 画出直方图并与分布律比较
import matplotlib.pyplot as plt
plt.figure(figsize=(8, 6))
plt.hist(counter.values(), bins=len(weights), align='left', rwidth=0.9)
plt.xticks(range(1, len(weights) + 1), name_chars)
plt.xlabel('汉字')
plt.ylabel('出现次数')
plt.title('采样次数分布与原始分布比较')
plt.show()
# 对比分析部分
original_distribution = {char: weights.index(weight) + 1 for char, weight in zip(name_chars, weights)}
difference = [counter[char] - original_distribution[char] if char in counter else 0 for char in name_chars]
print("差异情况:", difference[:5])
```
这个脚本首先创建了指定姓名的汉字列表,并设置了一个简单的均匀分布(所有汉字都有相同的概率出现)。然后进行1000次采样,并绘制直方图。你可以根据需要修改权重,使得某些汉字更有可能出现。
注意:由于实际姓名隐私保护,此处示例仅用于演示目的,实际应用中请替换为实际姓名并调整权重。
离散随机变量的采样: 离散随机变量可能的取值为10个汉字,其中包含本人的姓名中的字(将姓名作为多个字处理)。 自行设置10个汉字对应的分布律,然后对其进行1000次采样,输出采样结果,即1000个汉字。 用直方图画出采样所得汉字各自出现的次数,与第1步中设置的分布律进行比较
离散随机变量的采样是指从给定的概率分布中抽取样本,这种抽样通常基于概率理论。假设我们有一个由10个汉字组成的离散随机变量,比如你的姓名“张三”分解成“张”,“三”,这两个字,再加入其他8个随机汉字,形成一个分布律,每个汉字都有特定的概率。
例如,我们可以设定这样的分布:
1. 张 - 25%
2. 三 - 20%
3. 李 - 15%
4. 王 - 10%
5. 赵 - 10%
6. 马 - 7%
7. 刘 - 7%
8. 孙 - 5%
9. 郭 - 5%
10. 周 - 3%
接下来,我们进行1000次采样,每次从中随机选择一个汉字,并统计每个汉字出现的次数。这个过程可以用编程语言如Python的random模块来完成:
```python
import random
from collections import Counter
# 分布律
probabilities = {"张": 0.25, "三": 0.20, ..., "周": 0.03}
# 创建Counter用于记录采样结果
samples = Counter()
for _ in range(1000):
samples[random.choices(list(probabilities.keys()), weights=list(probabilities.values()))] += 1
# 输出采样结果和绘制直方图
print("采样结果:", samples)
# 可以使用matplotlib库绘制直方图
import matplotlib.pyplot as plt
plt.hist(samples.values(), bins=range(1, len(probabilities) + 2), align='left', rwidth=0.8)
plt.xticks(range(1, len(probabilities) + 1), probabilities.keys())
plt.xlabel('汉字')
plt.ylabel('频率')
plt.title('采样次数与分布律对比')
plt.show()
```
在这个例子中,最后会得到一张直方图,显示了每个汉字在1000次采样中实际出现的次数与预设的分布律相比是否一致。如果两者接近,说明我们的模拟有效并且理解了分布律。
阅读全文