提供一个函数,可以获取matplotlib绘制直方图后返回的数据并整理到表格中,方便用户使用其它工具进行美化作图。

def getDataFromHistPlot(res:tuple, xname:str, yname:str)->pd.DataFrame:
    """
    res: plt.hist作图后返回的对象
    此函数用于获取直方图的数据,方便用户使用其它软件进行作图美化
    xname: x轴名称
    yname: y轴名称
    """
    ys = res[0]  # n_bins
    xs = res[1]  # n_bins + 1
    xs2 = [(xs[n-1]+xs[n])/2 for n in range(len(xs)) if n>0]
    df = pd.DataFrame()
    df[xname] = xs2
    df[yname] = ys
    return df

使用方法如下面这个例子:

plt.figure(figsize=(4, 3))
res = plt.hist(data['frame'],
         bins=50, range=[0,500],
         ec='white',
        )
df = getDataFromHistPlot(res, xname='Frame', yname='Localizations')
plt.xlabel("Frame",fontdict={'font':'Arial', 'fontsize':12})
plt.xticks()
plt.xlim(0, 500)
plt.ylabel("Localizations",fontdict={'font':'Arial', 'fontsize':12})
plt.yticks([1000*x for x in range(4)])
plt.ylim(0, 3200)
plt.show()

2025-04-28T03:57:01.png

绘制直方图的数据就整理到变量 df 中,通过 df.to_csv 的方式就可以保存到csv文件,使用其它软件比如 OriginLab绘制最简单的bar图(注意控制间距)就可以快速复原作图了,可以免去设定 bins 数量等操作。

PS: 作图涉及到个人审美,每个人多少喜欢自己作图美化。所以与人合作的时候,一般情况下只需要提供最基础的数据可视化效果,然后再把稍微整理后的数据(无需再进行数据计算整理,可以直接绘制常见图表)导出为表格发送给对方就可以了。所以python编程在数据可视化方面,其适用范围主要是:1)自己用;2)非常规图表或者高度自定义分析结果展示。

最后修改:2025 年 04 月 28 日
请大力赞赏以支持本站持续运行!