如何放大Python中大数据框的相关图并调大字体?
解决Pandas散点矩阵的图表大小与字体问题
我懂你碰到的这个问题——6列数据的散点矩阵默认布局确实挤得难受,子图小到细节看不清,字体也跟着缩水。下面给你一套直接能用的调整方案,结合带相关系数的散点矩阵代码来修改:
一、放大图表+优化子图布局
核心是通过画布尺寸设置和子图间距调整,让每个子图更宽敞:
- 调用
scatter_matrix时直接传入figsize参数,6列数据推荐设置(15,12),觉得不够大可以继续调大(比如(18,15)) - 用
plt.tight_layout()自动优化子图间距,避免坐标轴标签重叠;如果需要更精细的控制,也可以用plt.subplots_adjust(wspace=0.3, hspace=0.3)手动调整子图间的宽/高间距
二、调大字体
有两种灵活的调整方式,选适合你的:
方式1:全局统一设置字体
一次性修改所有图表元素的字体大小,省事高效:
import matplotlib.pyplot as plt # 全局字体参数设置 plt.rcParams.update({ 'font.size': 12, # 全局基础字体大小 'axes.labelsize': 14, # 坐标轴标签字体大小 'xtick.labelsize': 10, # x轴刻度字体大小 'ytick.labelsize': 10, # y轴刻度字体大小 })
方式2:单独调整散点矩阵的字体
如果不想影响其他图表的字体风格,可以单独给散点矩阵的元素设置字体:
- 遍历子图时,给坐标轴标签、相关系数文本单独指定
fontsize参数
完整代码示例
结合你的1000行6列数据,整合所有调整逻辑:
import pandas as pd import numpy as np import matplotlib.pyplot as plt from scipy.stats import pearsonr # 生成你的示例数据 df = pd.DataFrame(np.random.randn(1000, 6), columns=['a', 'b', 'c', 'd','e','f']) # 可选:全局字体设置,跳过的话用下方单独调整的逻辑 plt.rcParams.update({ 'font.size': 12, 'axes.labelsize': 14, 'xtick.labelsize': 10, 'ytick.labelsize': 10 }) # 创建散点矩阵,指定画布大小 fig, axes = pd.plotting.scatter_matrix(df, figsize=(15, 12), alpha=0.2) # 遍历子图添加相关系数,同时设置文本字体大小 for i in range(len(df.columns)): for j in range(len(df.columns)): if i != j: # 计算皮尔逊相关系数 corr, _ = pearsonr(df.iloc[:, i], df.iloc[:, j]) # 在子图中心添加相关系数文本,设置字体大小 axes[i, j].text(0.5, 0.5, f'{corr:.2f}', transform=axes[i, j].transAxes, ha='center', va='center', fontsize=12) # 可选:单独设置坐标轴标签字体(未开启全局设置时用) # axes[i, j].xaxis.label.set_fontsize(14) # axes[i, j].yaxis.label.set_fontsize(14) # 优化子图布局,避免标签重叠 plt.tight_layout() plt.show()
你可以根据自己的屏幕尺寸,灵活调整figsize的数值和字体大小参数,直到达到满意的显示效果~
内容的提问来源于stack exchange,提问作者Tom_Hanks
相关产品推荐
相关产品推荐

