棒棒糖图(Lollipop Chart)作为柱状图和点图的一种变体,因其简洁和清晰的特点在科学研究中越来越受欢迎。这种图表巧妙地结合了柱状图和散点图的优势,提供了一种视觉上更为吸引人的数据表示方式。

棒棒糖图介绍

在棒棒糖图中,每个数据点通过一个“棒棒糖”来表示,包含一条线(棒)和线末端的一个圆点(糖果)。线的长度表示数值的大小,而圆点则突出了具体的数据点。这种格式特别适合比较有限数量的类别或时间点,使其成为生物学、医学和环境科学等领域数据可视化的优秀选择。

棒棒糖图的主要优点在于其能够清晰地传达信息而不使观众感到困惑。通过将注意力集中在单个数据点上,棒棒糖图减少了视觉杂乱,使观众更容易区分不同类别之间的差异。这在向包括研究人员、从业者和政策制定者在内的广泛受众展示复杂数据集时尤为有用。

此外,棒棒糖图可以通过颜色编码、注释和其他图形元素进行自定义,以增强可解释性。例如,不同颜色可以代表各种实验条件,而注释可以为特定数据点提供上下文。这些特性使棒棒糖图成为突出关键发现和趋势的多功能工具。

Python代码绘图

首先我们假设有这么的一组数据, 细胞类型’ILC2’, ‘B cell’, ‘Neutrophil’, ‘Macrophage’, ‘NK NKT’, ‘T cell’, ‘Dendritic cell’, ‘Mast cell’, ‘Monocyte’,绘图时通过线段加上散点图的形式叠加得到,上代码

import matplotlib.pyplot as plt

# 设置数据
cell_types = ['ILC2', 'B cell', 'Neutrophil', 'Macrophage', 'NK NKT', 'T cell', 'Dendritic cell', 'Mast cell', 'Monocyte']
shared_tissues = [7, 6, 4, 4, 3, 2, 1, 1, 0]
colors = ['red', 'lightblue', 'yellow', 'orange', 'blue', 'green', 'brown', 'pink', 'grey']

# 开始绘图
fig, ax = plt.subplots()

# 绘制水平线
for i, (ct, st) in enumerate(zip(cell_types, shared_tissues)):
    ax.hlines(y=ct, xmin=0, xmax=st, color=colors[i], linewidth=2, label=ct)

# 散点
scatter = ax.scatter(shared_tissues, cell_types, s=100, c=colors, edgecolors='black')

# 添加数值
for i, txt in enumerate(shared_tissues):
    ax.annotate(txt, (shared_tissues[i], cell_types[i]), xytext=(5, -5), textcoords='offset points')

ax.set_xlabel('Cells ')
ax.set_ylabel('')
ax.grid(True, which='both', color='gray', linestyle='--', linewidth=0.5)
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))

plt.tight_layout(rect=[0, 0, 0.85, 1])
plt.savefig('lolipython.webp', bbox_inches='tight')

结果 python棒棒糖图

总结

总体而言,棒棒糖图是一种强大且灵活的可视化技术,能够有效地传达科学数据,促进更好的理解,并支持研究及其他领域的知情决策。 本文通过使用matplotlib库,通过线条加上散点的方式叠加生成了棒棒糖图,实现了美观的科研图。另外,新版的Chatgpt真的太强了,可以直接上传代码让其修改代码,简直不要太方便。