柱状图+散点图

例:以10岁为间隔
分别画每个区间ASD和HC的delta age均值的柱状图 + 所有delta age值的散点图

在这里插入图片描述

import pandas as pd
import numpy as np
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt

#以每10岁为区间,画ASD+HC散点图+柱状图
# Load ASD age data
age_df_asd = pd.read_excel('C:\\Users\\wyf98\\Desktop\\scale\\ASD\\ASD_age2.xlsx')
asd_age = age_df_asd['age'].values

# Load ASD predicted age data
pre_df_asd = pd.read_excel('C:\\Users\\wyf98\\Desktop\\scale\\ASD\\data_pre_sensorimotor.xlsx')
pre_age_asd = pre_df_asd['age'].values
delta_age_asd = pre_age_asd - asd_age

# Load HC age data
age_df_hc = pd.read_excel('C:\\Users\\wyf98\\Desktop\\control_age.xlsx')
control_age = age_df_hc['age'].values

# Load HC predicted age data
age_df_audi_hc = pd.read_excel('C:\\Users\\wyf98\\Desktop\\scale\\HC\\data_pre_sensorimotor.xlsx')
audi_pre_age_hc = age_df_audi_hc['age'].values
delta_age_hc = audi_pre_age_hc - control_age

# Define age group bins
#以几岁为间隔就改这里的值
bins = np.arange(0, max(asd_age)+10, 10)
group_names = [f'{i}-{i+9}' for i in range(0, int(max(asd_age)), 10)]

# Categorize ASD and HC data into age groups
cats_asd = pd.cut(asd_age, bins, labels=group_names, right=False)
cats_hc = pd.cut(control_age, bins, labels=group_names, right=False)

# Calculate mean delta age for ASD and HC groups per age group
grouped_asd = pd.DataFrame({'delta_age': delta_age_asd, 'age_group': cats_asd}).groupby('age_group', observed=False).mean()
grouped_hc = pd.DataFrame({'delta_age': delta_age_hc, 'age_group': cats_hc}).groupby('age_group', observed=False).mean()

# Plotting
bar_width = 0.35
plt.bar(np.arange(len(grouped_asd.index)), grouped_asd['delta_age'], bar_width, label='ASD', color='blue', edgecolor='gray')
plt.bar(np.arange(len(grouped_hc.index)) + bar_width, grouped_hc['delta_age'], bar_width, label='HC', color='red', edgecolor='gray')

plt.xlabel('Age Group')
plt.ylabel('Mean Delta Age')
plt.xticks(np.arange(len(grouped_asd.index)) + bar_width / 2, grouped_asd.index)
plt.legend()

# Automatically adjust x-axis limits
plt.xlim(-0.5, len(grouped_asd.index) - 0.5)

# Calculate the x-coordinates for the scatter plot for ASD data
scatter_x_asd = [grouped_asd.index.get_loc(cat) for cat in cats_asd]
# Add scatter plot for ASD data
plt.scatter(scatter_x_asd, delta_age_asd, s=10, label='ASD Data', color='blue', alpha=0.5)

# Calculate the x-coordinates for the scatter plot for HC data
scatter_x_hc = [grouped_hc.index.get_loc(cat) for cat in cats_hc if cat in grouped_hc.index]
# Add scatter plot for HC data
plt.scatter(np.array(scatter_x_hc) + bar_width, delta_age_hc, s=10, label='HC Data', color='red', alpha=0.5)

# plt.savefig("G:\\brainage_picture\\sensorimotor.tiff", dpi=300,format="tiff")

plt.show()
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值