构造50个0到1之间数据不等的10个区间数据,然后根据每个区间数据频数的不同画出直方图和折线图

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import pearsonr

# 生成两组数据
# 定义区间和每个区间的数据点数量
intervals_1 = [
    (0, 0.1, 1),
    (0.1, 0.2, 2),
    (0.2, 0.3, 5),
    (0.3, 0.4, 8),
    (0.4, 0.5, 9),
    (0.5, 0.6, 9),
    (0.6, 0.7, 8),
    (0.7, 0.8, 5),
    (0.8, 0.9, 2),
    (0.9, 1.0, 1)
]

# intervals_1 = [
#     (0, 0.1, 1),
#     (0.1, 0.2, 1),
#     (0.2, 0.3, 2),
#     (0.3, 0.4, 8),
#     (0.4, 0.5, 13),
#     (0.5, 0.6, 12),
#     (0.6, 0.7, 10),
#     (0.7, 0.8, 1),
#     (0.8, 0.9, 1),
#     (0.9, 1.0, 1)
# ]

# 初始化数据列表
data1 = []

# 循环遍历每个区间并生成相应的数据点
for interval in intervals_1:
    # 生成数据点
    for _ in range(interval[-1]):
        data1.append(np.random.uniform(interval[0], interval[1]))

intervals_2 = [
    (0, 0.1, 1),
    (0.1, 0.2, 2),
    (0.2, 0.3, 5),
    (0.3, 0.4, 7),
    (0.4, 0.5, 10),
    (0.5, 0.6, 11),
    (0.6, 0.7, 6),
    (0.7, 0.8, 5),
    (0.8, 0.9, 2),
    (0.9, 1.0, 1)
]

# intervals_2 = [
#     (0, 0.1, 1),
#     (0.1, 0.2, 2),
#     (0.2, 0.3, 2),
#     (0.3, 0.4, 9),
#     (0.4, 0.5, 11),
#     (0.5, 0.6, 12),
#     (0.6, 0.7, 8),
#     (0.7, 0.8, 2),
#     (0.8, 0.9, 2),
#     (0.9, 1.0, 1)
# ]

# 初始化数据列表
data2 = []

# 循环遍历每个区间并生成相应的数据点
for interval in intervals_2:
    # 生成数据点
    for _ in range(interval[-1]):
        data2.append(np.random.uniform(interval[0], interval[1]))


data1 = np.array(data1)
data2 = np.array(data2)
print(sorted(data1))
print(len(data1))
print(sorted(data2))
print(len(data2))

# 打乱数据顺序以确保随机性
# np.random.shuffle(data1)
# np.random.shuffle(data2)
# print(data1)
# print(len(data1))
# print(data2)
# print(len(data2))

corr, p = pearsonr(data1, data2)

print(f'皮尔森相关系数: {corr}  p值:{p}')

# 设置直方图的 bin 间隔为0.1
bins = np.arange(0, 1.1, 0.1)

# 绘制直方图
plt.hist(data1, bins=bins, alpha=0.5, label='Data 1', color='blue', edgecolor='black')
plt.hist(data2, bins=bins, alpha=0.5, label='Data 2', color='orange', edgecolor='black')

# 绘制折线图
plt.plot(bins[:-1] + 0.05, np.histogram(data1, bins=bins)[0], marker='o', linestyle='-', label='Data 1 Line', color='blue')
plt.plot(bins[:-1] + 0.05, np.histogram(data2, bins=bins)[0], marker='o', linestyle='-', label='Data 2 Line', color='orange')

# 添加图例、标签等
plt.legend()
plt.title('Histogram and Line Plot of Two Data Sets')
plt.xlabel('Values')
plt.ylabel('Frequency')

# 显示图形
plt.show()


  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值