Python绘图

54 阅读5分钟

Matplotlib模块

导入模块import matplotlib.pyplot as plt

  1. x轴标题: plt.xlabel(xlable:str,fontdict:dict[str,any],labelpad:float,loc:Literal)
  • xlabel:x轴标签
  • fontdict:字体
  • labelpad:轴标签与轴刻度的距离
  • loc:['left', 'center', 'right'],标签位置
  1. y轴标题: plt.ylabel(ylable:str,fontdict:dict[str,any],labelpad:float,loc:Literal)
  • xlabel:y轴标签
  • fontdict:字体
  • labelpad:轴标签与轴刻度的距离
  • loc:['bottom', 'center', 'top'],标签位置
  1. 图表标题: plt.title(lable:str,fontdict:dict[str,any],loc:Literal,pad:float,y:float)
  • label,fontdict,loc和xlable的参数一样,pad控制标签与图表顶层的距离
  1. fontdict:修改字体 fontdict={"family":"","style":"","color":""}
  • family:sans-serif,serif
  • color:"red","green"
  1. 设置画布
  • plt.figure(dip:int,figsize=(width,height)):画布分辨率和画布大小
  • plt.xticks(rotation=90)/plt.yticks():x轴/y轴标签旋转

绘制多个图表

  1. plt.subplot(nrows,ncols,index):生成nrows行ncols列的多个图表,index表示第几个,从上到下,从左到右表示1到n。
    • plt.suptitle():总标题
  2. fig,ax=plt.subplots(nrows,ncols):生成nrows行ncols列的多个图表,ax[0,0]表示第1个;ax[nrows-1,ncols-1]表示最后一个。

plt绘制线图和散点图

  1. 画单条线 plot([x],y,[fmt],*,data=None,**kwargs)
  2. 画多条线 plot([x],y,[fmt],[x2],y2,[fmt2],...,**kwargs)
  • plot(x, y, 'bo')  # 创建 y 中数据与 x 中对应值的二维线图,使用蓝色实心圈绘制
  • plot(y, 'r+')     # 使用红色 + 号

颜色字符: 'b' 蓝色,'m' 洋红色,'g' 绿色,'y' 黄色,'r' 红色,'k' 黑色,'w' 白色,'c' 青绿色,'#008000' RGB 颜色符串。多条曲线不指定颜色时,会自动选择不同颜色。

线型参数: '‐' 实线,'‐‐' 破折线,'‐.' 点划线,':' 虚线。

标记字符: '.' 点标记,',' 像素标记(极小点),'o' 实心圈标记,'v' 倒三角标记,'^' 上三角标记,'>' 右三角标记,'<' 左三角标记...等等。

plt.plot(x,y)
plt.show()

plt绘制散点图

scatter()

plt绘制垂直条形图和水平条形图

bar()

plt绘制直方图

hist()

plt绘制饼图

pie()

plt绘制图像

imshow() subplots():创建子图

Seaborn模块

sns.set_style()

import matplotlib.pyplot as plt
import seaborn as sns

# 显示正负号与中文不显示问题
plt.rcParams['axes.unicode_minus'] = False
sns.set_style('darkgrid', {'font.sans-serif':['SimHei', 'Arial']})

# 去除部分warning
import warnings
warnings.filterwarnings('ignore')
## seaborn绘制柱状图

seaborn绘制柱状图

1. 语法

ax=seaborn.barplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,\
                estimator=<function mean>,ci=95, n_boot=1000, units=None, orient=None,\
                color=None, palette=None, saturation=0.75,\
                errcolor='.26', errwidth=None, capsize=None, dodge=True, ax=None, **kwargs)

sns.barplot会返回一个matplotlib的Axes对象,它代表图表的区域,在这个区域内可以绘制图形、设置坐标轴、刻度、标签等。 2. 参数详解

  • x,y,hue:<data中的变量名词或者向量>。data中用于绘制图表的变量名。hue可以理解成图例。
  • data:<DataFrame,数组,数组列表>。用于绘图的数据集。
  • order,hue_order:<字符串列表>。绘制类别变量的顺序,若没有,则会从数据对象中推断绘图顺序。
  • estimator:<映射向量,标量>。统计函数用于估计每个分类条形中的值
  • ci:<float or "sd" or None>。估计值周转的置信区间大小,若输入的是sd,会跳过bootstrapping的过程,只绘制数据的标准差。
  • n_boot: < int >。计算置信区间需要的boostrap迭代次数。
  • units:<data中的变量名词或向量>。采样单元的标识符,用于执行多级bootstrap并解释重复测量设计。
  • orient:<"v" 或 "h">。绘图的方向(垂直或水平)。这通常是从输入变量的数据类型推断出来的,但是可以用来指定“分类”变量是数字还是宽格式数据。
  • color: < matplotlib color >。作用于所有元素的颜色,或者渐变色的种子。
  • palette:<palette name,list or dict>。不同级别的hue变量的颜色。颜色要能被【color_palette()】解释。(seaborn.color_palette.html#seaborn.color_palette "seaborn.color_palette"),或者一个能映射到matplotlib颜色的字典。
  • saturation:< float > 原始饱和度与绘制颜色的比例。大的色块通常在稍微不饱和的颜色下看起来更好,但是如果希望打印颜色与输入颜色规格完全匹配,请将其设置为1。
  • errcolor:< matplotlib color >。表示置信区间的线的颜色。
  • errwidth:< float >。误差条的线的厚度。
  • capsize:< float >。误差条端部的宽度。
  • dodge:< bool >。当使用色调嵌套时,元素是否应该沿分类轴移动。
  • ax:< matplotlib Axes >指定一个axes用于绘图,如果不指定,则使用当前的axes。
  • kwargs:<key,value mappings> 。其他的关键词参数在绘图时通过 plt.bar传入。

3. 示例

seaborn内置模块数据
tips=sns.load_dataset("tips")
print(tips)
#默认计算每个x类别(day)的y轴变量(total_bill)的平均值,hue:图例
sns.barplot(x='day',y='total_bill',data=tips,hue='sex',ci=None)
#如果统计中位数据,参数estimator=np.median

Axes对象的方法

Patch是二维形状的,比如圆形、矩形、多边形

ax.annotate()添加注释
ax.annotate(text,xy,xytext)
text:str 要添加的注释
xy:tuple(float,float) 要注释的位置
xytext:tuple(float,float) position 注释本文的位置,如果没提供,则默认xy的位置
ha/va=center 水平/垂直居中
textcoords='offset points':表示xytest的坐标将被理解为相对于xy指定的数据点的偏移量,偏移量是以点为单位(1/72英寸)
rotation:标签放置角度
#遍历每个条形并添加标签
for p in ax.patches:
    ax.annotate(format(p.get_height(), '.2f'), 
                (p.get_x() + p.get_width() / 2.,p.get_height()), 
                ha = 'center', va = 'center', xytext = (0, 10), 
                 textcoords = 'offset points',rotation=45)
  1. ax.set_xlabel(str),ax.set_ylabel(str),ax.set_title(str):设置x轴,y轴标题,图表标签。
  2. ax.set_xticklabels(labels,rotation):x轴标签列表和旋转
  3. patch.get_x()/get_width()/get_y()/get_height():条形的x坐标,宽度,y坐标,高度

seaborn绘制折线图

1. 语法

seaborn.lineplot(x=None,y=None,hue=None,size=None,style=None,data=None,
palette=None,hue_order=None,hue_norm=None,sizes=None,size_order=None,
size_norm=None,dashes=True,markers=None,style_order=None,units=None,
estimator='mean',ci=95,n_boot=1000,sort=True,err_style='band',
err_kws=None,legend='brief',ax=None,**kwargs)