热力图和子图的绘制
作业:尝试对着心脏病数据集绘制热力图和单特征分布的大图(包含几个子图)
知识点: 1.介绍了热力图的绘制方法 2.介绍了enumerate()函数 3.介绍了子图的绘制方法
mport pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
data = pd.read_csv(r'C:\Users\许兰\Desktop\打卡文件\python60-days-challenge-master\heart.csv')
continuous_features = ['age', 'sex', 'cp', 'trestbps', 'chol','fbs', 'restecg', 'thal', 'exang','oldpeak', 'slope', 'ca', 'thal', 'target']
correlation_matrix = data[continuous_features].corr()
plt.rcParams['figure.dpi'] =300
plt.figure(figsize = (12,8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', annot_kws={'size': 3}, vmin=-1, vmax=1)
plt.title('Correlation Heatmap of Continuous Features')
plt.xticks(rotation=45, ha='right', fontsize=5)
plt.yticks(fontsize=5)
plt.show()
过程:定义库,读取数据并且提取出连续变量名称,然后计算相关系数矩阵,设置图片清晰度,画布大小,输入数据,定标题。(做完后发现图片乱七八糟,然后还自学美化了一下图片,哈哈)

但是学艺不精,右边那条带子我怎么都缩小不了。
然后是子图的绘制
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv(r'C:\Users\许兰\Desktop\打卡文件\python60-days-challenge-master\heart.csv')
features =['age', 'trestbps', 'exang', 'thal']
for i, feature in enumerate(features):
print(i, feature)
plt.rcParams['figure.dpi'] = 300
fig,axes = plt.subplots(2, 2, figsize=(12,10))
for i in range(len(features)):
row = i // 2
col = i % 2
feature = features[i]
axes[row,col].boxplot(data[feature].dropna())
axes[row,col].set_title(f'Boxplot of {feature}')
axes[row,col].set_ylabel(feature)
grid_spec_kw = {'wspace':0.9, 'hspace':0.9, 'top':0.88, 'bottom':0.5, 'left':0.5, 'right':0.88}
plt.tight_layout(pad=5.0)
plt.savefig('output.png', dpi=300, bbox_inches='tight')
plt.show()
过程;读取数据,将特征赋予给数组axes,for循环实现子图,但是不知道为什么我的子图特别丑,挤到了一块,我问ai尝试了多种方法都没有将其分开,我真的要崩溃了!!!
真的崩溃了,尤其是我还追求完美主义,但是截止时间马上到了,无奈,明天再试试吧,我也是头昏眼花,这破电脑现在热的也可以煮熟鸡蛋。。。。@浙大疏锦行
147

被折叠的 条评论
为什么被折叠?



