是大数据管理研究的作业,虽然我大部分都是抄的我们课代表的,但是也从中学到了不少画图技巧。所以特地开一个帖子记下来:
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import os #---------读取数据-----------# names = 'Sex,Length,Diameter,Height,Whole weight,Shucked weight,Viscera weight,Shell weight,Rings'.split(',') abalone = pd.read_csv('abalone.txt', names=names) #---------------------------# #---------绘图设定-----------# #风格 sns.set(style='darkgrid') #字体 plt.rcParams['font.family'] = 'SimHei' #存储格式 plt.rcParams["savefig.format"] = 'png' #存储路径 path = os.path.dirname(__file__) + '/charts/' if not os.path.exists(path): os.makedirs(path) #---------------------------# #--------性别比例饼图---------# f = plt.figure(figsize=(7,5)) label = ['M', 'I', 'F'] explode = [0.01, 0.01, 0.01] M_I_F = abalone['Sex'].value_counts().values.tolist() plt.pie(M_I_F, explode=explode, labels=label, autopct='%.2f') plt.legend() title = '性别比例饼图' plt.title(title) plt.savefig(path + title) #---------------------------# #------性别-参数-箱线图-------# f, axes = plt.subplots(3,3, figsize=(13, 13)) for i in range(1, len(abalone.columns)): r = (i-1)//3 c = (i-1)%3 sns.boxplot(y=abalone.columns[i], x='Sex', hue='Sex', data=abalone, ax=axes[r, c], fliersize=1) axes[r,c].get_legend().remove() axes[r,c].set_title(abalone.columns[i]) axes[r,c].set_xlabel('') axes[r,c].set_ylabel('') f.subplots_adjust(wspace=0.4, hspace=0.4) handles, labels = axes[0,0].get_legend_handles_labels() axes[0,2].legend(handles, labels, loc='upper right', bbox_to_anchor=(1.15, 1.15)) title = '性别-参数-箱线图' f.suptitle(title) plt.savefig(path + title) #---------------------------# #------性别-参数-直方图-------# M = abalone[abalone['Sex'] == 'M'] F = abalone[abalone['Sex'] == 'F'] I = abalone[abalone['Sex'] == 'I'] f, axes = plt.subplots(3,3, figsize=(13,13)) for i in range(1, len(abalone.columns)): r = (i-1)//3 c = (i-1)%3 ylabel = abalone.columns[i] x = [M[ylabel], F[ylabel], I[ylabel]] axes[r, c].hist(x, label=list("MFI")) axes[r, c].set_title(ylabel) f.subplots_adjust(wspace=0.4, hspace=0.4) handles, labels = axes[2,1].get_legend_handles_labels() axes[0,2].legend(handles, labels, loc='upper right', bbox_to_anchor=(1.15, 1.15)) title = '性别-参数-直方图' f.suptitle(title) plt.savefig(path + title) #---------------------------# #----Sex-Based-PairGrid-----# pg = sns.PairGrid(abalone, hue='Sex', palette='Set2') pg.map_diag(plt.hist, bins=20, alpha=0.5) pg.map_offdiag(plt.scatter, s=1, alpha=0.5) pg.add_legend() title = 'Sex-Based-PairGrid' pg.fig.suptitle(title) plt.savefig(path + title) #---------------------------# #------性别-参数-散点图-------# #Length vs Diameter fg = sns.FacetGrid(abalone, col='Sex', hue='Sex', palette="Set2", height=3, aspect=1) fg.map(plt.scatter, 'Diameter', 'Length', s=1) fg.fig.subplots_adjust(top=0.8) title = 'Length vs Diameter' pg.fig.suptitle(title) plt.savefig(path + title) #Height vs Diameter fg = sns.FacetGrid(abalone, col='Sex', hue='Sex', palette="Set2", height=3, aspect=1) fg.map(plt.scatter, 'Diameter', 'Height', s=1) fg.fig.subplots_adjust(top=0.8) title = 'Height vs Diameter' pg.fig.suptitle(title) plt.savefig(path + title) #Length vs Whole weight fg = sns.FacetGrid(abalone, col='Sex', hue='Sex', palette="Set2", height=3, aspect=1) fg.fig.subplots_adjust(top=0.8) fg.map(plt.scatter, 'Whole weight', 'Length', s=1) title = 'Length vs Whole weight' pg.fig.suptitle(title) plt.savefig(path + title) #Rings vs Diameter fg = sns.FacetGrid(abalone, col='Sex', hue='Sex', palette="Set2", height=3, aspect=1) fg.fig.subplots_adjust(top=0.8) title = 'Rings vs Diameter' fg.map(plt.scatter, 'Diameter', 'Rings', s=1) pg.fig.suptitle(title) plt.savefig(path + title) #Rings vs Whole weight fg = sns.FacetGrid(abalone, col='Sex', hue='Sex', palette="Set2", height=3, aspect=1) fg.fig.subplots_adjust(top=0.8) title = 'Rings vs Whole weight' fg.map(plt.scatter, 'Rings', 'Whole weight', s=1) pg.fig.suptitle(title) plt.savefig(path + title) #Rings vs Shucked weight fg = sns.FacetGrid(abalone, col='Sex', hue='Sex', palette="Set2", height=3, aspect=1) fg.fig.subplots_adjust(top=0.8) title = 'Rings vs Shucked weight' fg.map(plt.scatter, 'Rings', 'Shucked weight', s=1) pg.fig.suptitle(title) plt.savefig(path + title) #Rings vs Viscera weight fg = sns.FacetGrid(abalone, col='Sex', hue='Sex', palette="Set2", height=3, aspect=1) fg.fig.subplots_adjust(top=0.8) title = 'Rings vs Viscera weight' fg.map(plt.scatter, 'Rings', 'Viscera weight', s=1) pg.fig.suptitle(title) plt.savefig(path + title) #Rings vs Shell weight fg = sns.FacetGrid(abalone, col='Sex', hue='Sex', palette="Set2", height=3, aspect=1) fg.fig.subplots_adjust(top=0.8) title = 'Rings vs Shell weight' fg.map(plt.scatter, 'Rings', 'Shell weight', s=1) pg.fig.suptitle(title) plt.savefig(path + title)
Comments | NOTHING