1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| 1. pandas 绘图 - pd.date_range('2018/12/28', periods=10) # 产生日期格式, 以2018/12/28为起始产生以天为单位的日期时间list - pandas绘图需要把横坐标作为index,之后再画图 - 折线图绘制需要注意各列幅度,否则数值不明显 - df.plot.bar() # barplot, stacked=True, 堆叠 - df.plot.barh() # 绘制水平的barplot - df.plot.hist(bins = 20) # 绘制直方图,单维度 - df.plot.box() # 对每列去看一些分布outlier - df.plot.area # 堆叠区域图 - df.plot.scatter(x='a', y='b') # 散点图 - df.plot.pie(subplots=True) # 绘制带图例的饼图 2. matplotlib 绘图 - plt.rcParams['figure.figsize'] = (12,8) / plt.figure(figsize=(12,8)) # 设置画布大小 - ax = plt.plot(x,y,color='green', linewidth='-', marker='./*/x', label=r'$y=cos{x}$'/r'$y=sin{x}$'/r'$y=sqrt{x}$') # 绘图 - ax.spines['right'].set_color('none') # 去掉右边的边框 - ax.xaxis.set_ticks_position('bottem') # ?????????????? - plt.xticks([2,4,6], [r'a',r'b',r'c']) # 设置坐标轴刻度 - ax.spines['bottem'].set_position('data', 0) # 设置坐标轴从0开始 - plt.xlim(1,3) # 设置坐标位置 - plt.title() # 标题 - plt.xlabel(r'xxx', fontsize=18, labelpad=12.5) # 绘制label, r值的是不转义的,$$值的是markdown格式 - plt.text(0.8, 0.9, r'$$', color='k', fontsize=15) # 进行注解 - plt.scatter([8], [8], 50, color='m') # 在某个位置,点有多大,颜色是什么 - plt.annotate(r'$xxx$', xy=(8,8), xytext=(8.2, 8.2), fontsize=16, color='m', arrowprops=dict(arrowstyle='->', connectionstyle='arc3, rad=0.1', color='m')) # 对某个点进行注解, 进行加箭头等等 - plt.grid(True) # 网格线 - plt.plot(x, y) # xy应为np array,如果是pandas那么可以通过values进行取值转换 3. matplotlib 绘图case - 文件解压 x = zipfile.ZipFile(xxx, 'r') # 解压文件夹 x.extractall('xxxdir') # 解压到某个文件夹下 x.close() # 记得关闭 - matplotlib.rc('figure', figsize=(14,7)) # 设置一下图片尺寸 - matplotlib.rc('font', size=14) # 设置字体 - matplotlib.rc('axes.spines', top=False, right=False) # 设置边线 - matplotlib.rc('axes', grid=False) # 设置网格 - matplotlib.rc('axes', facecolor='white') # 设置颜色 - fig,ax含义 fig,ax = plt.subplots() # 创建绘图对象之后对ax进行操作,相当于先fig=plt.figure()再ax=fig.add_subplot(1,1,1) https://blog.csdn.net/htuhxf/article/details/82986440 - ax.fill_between(x, low, upper, alpha=) # 对回归进行置信度绘制 - ax2 = ax1.twinx() # 共享同一个x轴 - ax2.spines['right'].set_visible(True) # 对右侧坐标轴进行设置,得到相应的图 - 图的使用 关联分析:散点图,曲线图,置信区间曲线图,双坐标曲线图 分布分析:堆叠直方图, 密度图 组间分析:柱状图(带errorbar),boxplot,这个需要多看看, 4. seaborn 绘图 - 引入seaborn的同时也要引入matplotlib因为,是底层 - 颜色设置 sns.set(color_codes=True) # 一些集成的颜色 https://seaborn.pydata.org/tutorial/color_palettes.html - sns.displot(x, kde=True, bins=20, rug=True, fit=stats.gamma) # histgram加密度线,样本分布情况, 拟合某些分布fit - sns.kdeplot # 类似于上面的,kde是每个样本用正态分布画,如果样本多,高度就高,之后再做归一化 - sns.jointplot(x,y,data) # 绘制带有histgram以及散点图的图,两个变量 - sns.pairplot(df) # 直接绘制各个列之间的散点图以及对应的histgram,多个变量 - scatter plot的密度版 with sns.axes_style('ticks'): sns.jointplot(x,y,data, kind='hex'/'kde',color='m') #相当于对点很多的时候,六角箱图就能体现出点的多少,kde是等高线,密度联合分布 - 多图绘制1 g = sns.PairGrik(df) # 各个列混合,产出n*n个格子 g.map_diag(sns.kdeplot) # 对角线绘制 g.map_offdiag(sns.kdeplot, cmap='Blues_d', n_levels=20) # 绘制对角线是kde密度图其他为等高线的图 - 多图绘制2 g = FaceGrid(row=[..],aspect=1.5, data=) g.map(sns.boxplot, x, y, hue, hue_order=[], ...) - 多图绘制3 g = sns.PairGrid(data, x_vars=[], y_vars=[], aspect=0.5, size=3.5) g.map(sns.violinplot, palette='bright') # x_vars数量*y_vars数量个子图,然后每个子图都绘制violinplot - 关联分析 sns.lmplot · sns.lmplot(x, y, data) # 散点图+线性回归,95%置信区间,适用于连续值 · sns.lmplot(x, y, data, x_jitter=0.08) # 左右抖动, 点如果离得近,会把点左右抖动开,适用于离散值 · sns.lmplot(x, y, data, x_estimator=np.mean, ci=95, scatter_kws={'s':80}, order=2, robust=True) # 对于离散值还可以这样操作,先求均值和95置信区间,之后再进行拟合, scatter_kws对点进行操作,order是说对数据点进行二次方的分布,而不是线性分布,robust打开的作用是踢除异常点,然后再进行绘制图 · sns.lmplot(x, y, data, x_estimator=np.mean, ci=95, scatter_kws={'s':80}, order=1, robust=True, logistic=True) # 相当于是说对二值化的数据进行logistic回归拟合,sigmoid拟合 · sns.lmplot(x, y, data, hue, col, row, col_wrap, aspect=0.5) # 散点图.线性回归,95%置信区间,适用于连续值,hue进行分组类似于pandas里面的groupby, hue变量一定是个离散变量, col也可以加一个变量,可以把图分成多列,row可以多行,如果row,col以及hue都指定,那么相当于在pandas里面groupby三个内容,col_wrap用于之指定每个col中的绘图数量 - sns.residplot() # 残差图 - sns.barplot(x,y,hue,ci=None) # 是否打开置信区间 - sns.stripplot(x, y, data, jitter =True) # 基于x为离散数据的,类似于散点图的boxplot - sns.swarmplot(x, y, data) # 蜂群图,类似于小提琴图的点版 - sns.boxplot() - sns.violinplot(bw) # 属于kde以及boxplot的组合,既看了单变量分布,也看了各变量之间的差异 - sns.violinplot(split=True, hue, inner='stick') # split将hue为两个类型的进行拼接绘制小提琴图,stick,每个样本绘制竖线 - sns.countplot(x, data) # 绘制离散变量数量分布,类似于value_counts(),类似于barplot但是使用的统计量是数量 - sns.pointplot(x, y, hue) # 查看离散变量x以及hue在离散变量y上的差别,使用均值,画点 - sns.factorplot(x, y, hue, col, data, kind='swarm') # 是一种泛化的绘图函数 - a.savefig('xx') # 进行图片存储 plt函数
|