plottools

plot_barline

plot_barslines

dramkit.plottools.plot_barline.plot_barslines(df, bar_col_infos_left, line_col_infos_left=None, line_col_infos_right=None, label_bar_data=False, label_line_data=False, figsize=(11, 6), title=None, fontsize=15, fig_save_path=None, xtick_rotation=360)

绘制条形图叠加折线图

bar_col_infos_x格式: {col1: (clor1, lbl1), col2: (clor2, lbl2), ...}
line_col_infos_x格式: {col1: (styl1, lbl1), col2: (styl2, lbl2), ...}

plot_common

plot_series

dramkit.plottools.plot_common.plot_series(data, cols_styl_up_left, cols_styl_up_right={}, cols_styl_low_left={}, cols_styl_low_right={}, cols_to_label_info={}, cols_to_fill_info={}, col_text_up={}, col_text_low={}, yscales=None, xparls_info={}, yparls_info_up=None, yparls_info_low=None, fills_yparl_up=None, fills_yparl_low=None, fills_xparl={}, twinx_align_up=None, twinx_align_low=None, ylabels=None, xlabels=None, grids=False, figsize=(11, 7), title=None, n_xticks=8, xticks_rotation=None, fontsize_label=15, fontsize_title=15, fontsize_text=10, fontsize_legend=15, fontsize_tick=10, fontname=None, markersize=10, legend_locs=None, fig_save_path=None, show=True, logger=None)

对data (pd.DataFrame)进行多列绘图

Note

目前功能未考虑data.index重复情况,若有重复可能会导致部分绘图错误

Parameters:
  • data (pandas.DataFrame) – 待作图数据

  • cols_styl_up_left (dict) –

    指定顶部左轴需要绘制的序列及其线型和图例,格式形如:

    {'col1': ('.-b', 'lbl1', kwargs), 'col2': ...}{'col1': '.-b', 'col2': ...}

    第一种格式中 lbl 设置图例(legend),若为None则默认取列名,为False则不设置图例

    第二种格式只设置线型,legend默认取列名

  • cols_styl_up_right (dict) – 指定顶部右轴需要绘制的序列及其线型和图例,格式同 cols_styl_up_left

  • cols_styl_low_left (dict) – 指定底部左轴需要绘制的序列及其线型和图例,格式同 cols_styl_up_left

  • cols_styl_low_right (dict) – 指定底部右轴需要绘制的序列及其线型和图例,格式同 cols_styl_up_left

  • cols_to_label_info (dict) –

    设置需要特殊标注的列绘图信息,格式形如:

    {col1:
         [[col_lbl1, (v1, v2, ..), (styl1, styl2, ..), (lbl1, lbl2, ..),
           {kwargs, v1: {kwargs1}, v2: {kwargs2}, ...}],
          [col_lbl2, (v1, v2, ..), ...]
         ],
     col2: ...
    }
    

    其中col是需要被特殊标注的列,col_lbl为标签列;v指定哪些标签值对应的 数据用于绘图;styl设置线型;lbl设置图例标签,若为None,则设置为v,若为False, 则不设置图例标签;{kwargs, v1: {kwargs1}, v2: {kwargs2}}设置其他绘图标注参数

  • cols_to_fill_info (dict) –

    需要进行颜色填充的列信息,格式形如(具体参数key参见matplotlib的fill_between函数):

    {col1: {'color': 'c', 'alpha': 0.3}, ...}

  • col_text_up (dict) –

    上图文本标注设置,格式形如(具体参数key参见matplotlib的ax.text函数):

    {col1: (col2, {...}), ...}

  • col_text_low (dict) – 下图文本标注设置,格式同 col_text_up

  • yscales (None, list) – y轴标轴尺度设置,若为None,则默认普通线性坐标, 可设置为list指定每个坐标尺度(参见matplotlib中的set_yscale)

  • xparls_info (dict) –

    设置x轴平行线信息,格式形如:

    {col1: [(yval1, clor1, styl1, width1, kwargs), (yval2, ...)], col2:, ...}

    其中yval指定平行线y轴位置,clor设置颜色,styl设置线型,width设置线宽

  • yparls_info_up (None, list) –

    设置顶部x轴平行线格式信息,格式形如:

    [(xval1, clor1, styl1, width1, kwargs), (xval2, clor2, style2, width2), ...]

    其中xval指定平行线x轴位置,clor设置颜色,styl设置线型,width设置线宽

  • yparls_info_low (None, list) – 设置顶部x轴平行线格式信息,格式同 yparls_info_up

  • fills_yparl_up (None, list) –

    设置上图平行于y轴的填充区域信息,格式形如:

    [([x1, x2], clor1, alpha1, kwargs), (...)]

  • fills_yparl_low (None, list) – 设置下图平行于y轴的填充区域信息,格式同 fills_yparl_up

  • fills_xparl (dict) –

    设置平行于x轴的填充区域信息,格式形如:

    {'col1': [([y1, y2], clor1, alpha1, kwargs), ...], 'col2': ...}

  • twinx_align_up (None, list) – 设置上图双坐标轴两边坐标轴刻度对齐位置,格式如 [v_left, v_right] , 绘图时左轴的 v_left 位置与右轴的 v_right 位置对齐

  • twinx_align_low (None, list) – 设置上图双坐标轴两边坐标轴刻度对齐位置,格式同 twinx_align_up

  • ylabels (None, list) – 设置四个y轴标签文本内容,若为None则不设置标签文本, 若为False则既不设置y轴标签文本内容,也不显示y轴刻度

  • xlabels (None, list) – 置两个x轴标签文本内容,若为None则不设置标签文本, 若为False则既不设置x轴标签文本内容,也不显示x轴刻度

  • grids (boll, list) –

    设置四个坐标轴网格,若grids=True,则在顶部左轴和底部左轴绘制网格; 若grids=False,则全部没有网格;若为列表,则分别对四个坐标轴设置网格

    Caution

    当某个坐标轴设置为不显示刻度时,其对应的网格线也会不显示?

  • legend_locs (None, list) – 设置上下两个图的legend位置,默认设置为[0, 0]

  • fontname (None, str) –

    字体默认设置为None,可替换其他字体 (如 Courier New, Times New Roman)

    Hint

    matplotlib默认字体为 sans-serif

Todo

  • 标签指定值时可以设置为函数(考虑是否有必要)

  • 多重索引处理

  • legend位置增加放在图片外面的设置

  • 不规则区域填充设置

  • 添加堆叠图(面积图)绘制方式

  • 数字文本标注增加自定义设置(可针对文本列统一设置,也可针对单个文本设置)

  • 正常绘制与特殊标注重复绘制问题

  • x轴平行线对应列不一定非要在主图绘制列中选择

  • 平行线图层绘制在主线下面

  • 标注图层绘制在线型图层上面(根据输入顺序绘制图层而不是根据坐标轴区域顺序绘制)

  • 上图和下图的x轴不一定非要都是data的index,设置上下图不同x轴坐标

plot_series_conlabel

dramkit.plottools.plot_common.plot_series_conlabel(data, conlabel_info, del_repeat_lbl=True, **kwargs)

dramkit.plottools.plot_common.plot_series() 基础上添加了连续标注绘图功能

Parameters:
  • data (pandas.DataFrame) – 待作图数据

  • conlabel_info (dict) –

    需要进行连续标注的列绘图信息,格式形如:

    {col: [[lbl_col, (v1, ...), (styl1, ...), (lbl1, ...)]]}

    Note

    (v1, …)中的最后一个值会被当成默认值,其余的当成特殊值 (绘图时为了保证连续会将默认值与特殊值连接起来)

  • del_repeat_lbl (bool) – 当conlabel_info与cols_to_label_info存在重复设置信息时, 是否删除cols_to_label_info中的设置信息

  • **kwargsdramkit.plottools.plot_common.plot_series() 接受的参数

plot_maxmins

dramkit.plottools.plot_common.plot_maxmins(data, col, col_label, label_legend=['Max', 'Min'], figsize=(11, 6), grid=True, title=None, n_xticks=8, markersize=10, fig_save_path=None, **kwargs)
绘制序列数据(data中col指定列)并标注极大极小值点
col_label指定列中值1表示极大值点,-1表示极小值点,0表示普通点
label_legend指定col_label为1和-1时的图标标注
**kwargs为 dramkit.plottools.plot_common.plot_series() 支持的其它参数

plot_histdist

plot_histdist

dramkit.plottools.plot_histdist.plot_histdist(series, bins=None, cumulative=False, width=None, clor='grey', density=False, kde_styl=None, dists={'norm': ('-r', None)}, yparls=None, ylabel_left=None, ylabel_right=None, con_points=10000, xticks_gap=1, figsize=(12, 8), title=None, fontsize=15, fig_save_path=None)

绘制直方图,及分布拟合曲线

Parameters:
  • series (pandas.Series) – 待绘图序列

  • bins (None, int, list) – 指定区间划分方式

  • cumulative (bool) – 是否画累计(概率)图,默认False

  • width (None, float) – 直方图宽度设置

  • clor (str) – 直方图颜色

  • density (bool) – 直方图坐标是否转为改概率密度

  • kde_styl (None, tuple) –

    若为None,则不绘制核密度图kde
    若绘制kde核密度图,则kde_styl格式形如:
    (lnstyl, clor, label),若为None
    其中lnsty设置线型,可为None或str;clor设置颜色,可为None或str; label设置图例内容,可为None或str或False,为None时默认’kde’, 为False时不设置图例

  • dists (None, dict) –

    若为None,不绘制概率分布拟合曲线
    若绘制概率密度分布拟合图,则dists格式形如:
    {disttype: (lnstyl, label)}{disttype: lnstyl}
    其中disttype指定概率密度函数类型;lnstyl设置线型,可为str或None,为None时自动设置线型; 第一种格式中label设置图例内容,可为str或None或False,为None时图例设置为disttype, 为False时不设置图例;第二种格式图例默认设置为disttype

    Note

    disttype目前可选’norm’, ‘lognorm’, ‘weibull’, ‘t’, ‘f’, ‘chi2’

  • con_points (int) – 概率密度曲线拟合时在x轴采样点个数

  • xticks_gap (int) – 设置每xticks_gap个直方图矩形框显示一个x轴刻度

plot_scatter

plot_scatter

dramkit.plottools.plot_scatter.plot_scatter(data, colx, coly, reg_type=None, dotstyl='.k', group_col=None, group_dotstyles={}, regstyl='-b', figsize=(10, 7), title=None, xlabel=None, ylabel=None, fontsize=15, nXticks=8, fig_save_path=None)
散点图绘制
group_dotstyles格式: {-1: ‘ob’, 1: ‘or’, 0: ‘ok’}

utils_plot

twinx_align

dramkit.plottools.utils_plot.twinx_align(ax_left, ax_right, v_left, v_right)

实现左轴(ax_left)在v_left位置和右轴(ax_right)在v_right位置对齐