跟着高分SCI学画图:GPT教你绘制哑铃图

文摘   2024-08-08 08:40   德国  

    跟着高分SCI学画图:GPT教你绘制哑铃图

哑铃图(Dumbbell Plot),也称为双端点图,是一种用于比较两个时间点或两个不同组的数据的可视化图表。它通过在图表上显示两个点并用线连接这两个点,从而展示数据在两个时间点之间的变化或对比。

哑铃图的特点

  • 双点显示:每个类别有两个数据点,通常是两个不同时间点的数值(如起始和结束值),这两个点通过线连接。
  • 清晰的对比:通过在同一图表中展示两个点,能够清晰地对比它们之间的变化或差异。
  • 排序:通常,哑铃图会根据其中一个数据点(通常是终点数据)对类别进行排序,从而使得变化更为直观。


哑铃图示例

哑铃图的优点

  • 直观的对比:能够直观地展示两个时间点或两个组之间的差异,方便观察数据的变化趋势。
  • 清晰的数据变化:通过线条连接两个数据点,可以清晰地看到数据的变化幅度。
  • 易于理解:由于使用了直观的线条和点,哑铃图通常容易被观众理解,尤其是当比较的数据变化幅度较大时。
  • 适用于对比:适合用于对比同一组数据在不同条件下的表现,例如起始值和结束值、不同时间点的数据等。

哑铃图的缺点

  • 视觉拥挤:当数据类别较多时,哑铃图可能会变得视觉拥挤,难以区分不同类别的数据点和线条。
  • 数据点重复:对于每个类别,哑铃图显示的是两个点,可能会导致信息的冗余,特别是当变化幅度较小时。
  • 不适合所有类型的数据:哑铃图主要适用于对比两个数值点的变化,对于更复杂的多维数据可能不够有效。
  • 排序问题:为了增强可读性,通常需要对数据进行排序,这可能会导致某些数据点的相对位置发生变化,影响对数据变化的直观感知。

应用场景

  • 时间序列对比:适用于对比同一数据在不同时间点的变化。
  • 前后对比:用于展示某个措施或干预前后的效果,例如政策实施前后的变化。
  • 不同组对比:比较两个不同组的数据表现,例如实验组与对照组的差异。

导入环境

import pandas as pd
import matplotlib.pyplot as plt

数据准备

数据小样
# 生成数据
data = {
    'School': ['Yale''UCLA''U.Penn''Tufts''Stanford''SoCal''Princeton''NYU''Notre Dame''MIT',
               'Michigan''Harvard''Georgetown''Emory''Duke''Dartmouth''Cornell''Columbia''Chicago',
               'Brown''Berkeley'],
    'Start Salary': [75, 85, 128, 103, 95, 101, 97, 109, 89, 100, 83, 97, 102, 111, 91, 112, 109, 99, 111, 86, 79],
    'Mid Career Salary': [80, 92, 132, 109, 100, 98, 101, 110, 98, 95, 91, 100, 101, 136, 72, 90, 90, 102,
                          109, 92, 99]
}

df = pd.DataFrame(data)
df = df.sort_values('Mid Career Salary')  # Sorting by Mid Career Salary for better visual alignment

绘图

# 开始绘制哑铃图
fig, ax = plt.subplots(figsize=(10, 8))

# 绘制哑铃图的线
for i, row in df.iterrows():
    ax.plot([row['Start Salary'], row['Mid Career Salary']], [row['School'], row['School']], color='grey', linewidth=2)

# 绘制哑铃图的点
ax.scatter(df['Start Salary'], df['School'], color='red', s=100, label='Start Salary')
ax.scatter(df['Mid Career Salary'], df['School'], color='black', s=100, label='Mid Career Salary')
  • ax.scatter(df['Start Salary'], df['School'], color='blue', s=100, label='Start Salary') 绘制左边的点并将其标为 'Start Salary'
  • ax.scatter(df['Mid Career Salary'], df['School'], color='black', s=100, label='Mid Career Salary') 绘制右边的点并将其标为 ‘Mid Career Salary’

添加图标

# 添加题目
ax.set_xlabel('Annual Salary (in thousands)')
ax.set_ylabel('School')
ax.set_title('Comparison of Start and Mid Career Salaries by School')

# 添加图标
ax.legend()

plt.tight_layout()
plt.show()
  • ax.set_xlabel('Annual Salary (in thousands)') 将X轴命名为 ’Annual Salary (in thousands)‘
  • ax.set_ylabel('School') 将Y轴命名为 ’School‘
  • ax.set_title('Comparison of Start and Mid Career Salaries by School')将整个图表的题目标为 ’Comparison of Start and Mid Career Salaries by School‘

拓展

改变哑铃图两点的颜色

想要更换哑铃图两个点的颜色,我们不需要改变导入环境;准备数据和添加图标,我们只需要改变绘图部分的一行:

绘图

# 绘制哑铃图
fig, ax = plt.subplots(figsize=(10, 8))
...
...
# 绘制哑铃图的点
ax.scatter(df['Start Salary'], df['School'], color='blue', s=100, label='Start Salary')
ax.scatter(df['Mid Career Salary'], df['School'], color='green', s=100, label='Mid Career Salary')
更改颜色后的哑铃图

使用虚线

想要使用虚线代替哑铃图中的实线,我们不需要改变导入环境;准备数据和添加图标,我们也只需要改变绘图部分的一行:

# 绘制哑铃图
fig, ax = plt.subplots(figsize=(10, 8))

# 绘制线图
for i, row in df.iterrows():
    ax.plot([row['Start Salary'], row['Mid Career Salary']], [row['School'], row['School']], color='grey', linewidth=2,, linestyle='--')

...
...
虚线哑铃图

本文作者:徐可


现在:


长按扫码关注:科研生信充电宝


10元赞赏本文,即喜欢作者~


即可直接解锁:


《跟着高分SCI学画图:GPT教你绘制哑铃图》对应资源哦~


看到这里你还不心动吗?


赶紧关注、转发、点赞、分享,领取你的专属福利吧~



好啦,以上就是今天推文的全部内容啦!


版权声明:本文内容由互联网用户自发贡献,版权归作者所有,本公众号不拥有所有权,也不承担相关法律责任。

如果您发现本公众号中有涉嫌抄袭的内容,欢迎发送邮件至:kysxcdb@163.com 进行举报,一经查实,本公众号将立刻删除涉嫌侵权内容。


科研生信充电宝
介绍科研;介绍统计;介绍生信;
 最新文章