Python绘图系列|(1)如何用Python绘制双向渐变柱状图

文摘   2024-07-24 22:40   德国  

Python绘图系列|(1)如何用Python绘制双向渐变柱状图

双向渐变柱状图是一种柱状图的变体,其中柱子在两个方向上都应用了渐变效果。这种图表可以用来展示两个方向的数据变化,比如一个柱子可以从中心向两边渐变,或者上下两个方向的渐变。这种类型的图表常用于需要对比两个数据集或显示数据在两个维度上的变化的场景。

在本文中,我们将教大家如何使用Python绘制双向渐变柱状图。双向渐变柱状图是一种直观的可视化工具,可以有效地展示数据的对比和变化趋势。我们将使用matplotlib库来实现这一目标,通过简单的步骤,您将能够创建出美观且富有表现力的图表。接下来,我们将逐步介绍所需的代码和实现方法。

本文示例|双向渐变柱状图

双向渐变柱状图特点介绍

双向渐变柱状图的特点

  • 双重渐变:与单向渐变柱状图相比,双向渐变柱状图在两个方向上都使用渐变色,这使得数据的对比和变化更加明显。
  • 视觉层次感:双向渐变可以增强柱子的立体感和深度,使图表看起来更加生动。
  • 突出对比:适用于展示需要强调两个方面变化的情况,比如比较两个不同时间段的统计数据。

双向渐变柱状图的优点

  • 视觉吸引力:双向渐变柱状图的渐变效果使图表更具视觉冲击力和吸引力,有助于吸引观众的注意力。

  • 增强数据对比:双向渐变可以帮助突出柱状图的不同部分,增强数据对比,特别是在需要强调多个维度或变化趋势时。

  • 层次感和深度:渐变色彩可以为柱子添加层次感和深度,使图表看起来更加立体和生动。

  • 突出数据变化:在需要强调数据在两个方向上的变化时(例如正负变化或两个相关数据集),双向渐变可以有效地展示这些变化。

三维双向渐变柱状图
双向渐变柱状图的优点

双向渐变柱状图的缺点

  • 视觉复杂性:渐变色彩可能使图表显得复杂,对某些观众来说可能不易理解,特别是在渐变效果过于强烈或复杂的情况下。

  • 颜色混淆:如果多个柱子使用类似的渐变色彩,可能会导致颜色混淆,特别是在色盲或视力不佳的观众中。

  • 数据阅读困难:由于渐变效果,某些细节可能会被掩盖,导致数据阅读和比较变得更加困难,特别是在渐变色与背景色接近时。

  • 生成和编辑复杂性:与传统柱状图相比,双向渐变柱状图的创建和编辑可能更加复杂,尤其是在使用编程工具时,需要更多的设置和调整。

双向渐变柱状图的缺点

双向渐变柱状图代码分享

导入环境

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

准备数据

# Generating a sample dataset similar to the provided plot

data = {
    'Cancer Type': [f'Cancer{i}' for i in range(1, 20)],
    'Log2FC': np.random.uniform(-0.6, 0.4, 19),
    '-Log10_q-Value': np.random.uniform(1, 2.5, 19)
}

整理数据

# Creating a DataFrame
df = pd.DataFrame(data)
df.sort_values(by='Log2FC', inplace=True)  # Sorting by Log2FC for better visual alignment

将准备好的数据绘制成图

# Plotting the data
fig, ax = plt.subplots(figsize=(10, 8))

制作渐变效果

# Color mapping based on -Log10_q-Value
norm = plt.Normalize(df['-Log10_q-Value'].min(), df['-Log10_q-Value'].max())
sm = plt.cm.ScalarMappable(cmap="Reds", norm=norm)  # Change colormap to 'Reds'
sm.set_array([])
bars = ax.barh(df['Cancer Type'], df['Log2FC'], color=plt.cm.Reds(norm(df['-Log10_q-Value'])))

完善成图

# Adding color bar
cbar = plt.colorbar(sm, ax=ax)
cbar.set_label('-Log10_q-Value')

# Adding labels and title
ax.set_xlabel('Log2FC (9p21–Loss vs 9p21–WT)')
ax.set_ylabel('Cancer Type')
ax.set_title('TCR Shannon Entropy')

# Adding vertical line for FC = -1.2 (example value)
plt.axvline(x=-0.2, color='grey', linestyle='--')
plt.text(-0.2, len(df)-1, 'FC<-1.2', ha='right', va='center', color='grey')

plt.tight_layout()
plt.show()
通过代码生成的双向渐变柱状图

现在:


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

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


即可直接解锁:


Python绘图系列|(1)如何用Python绘制双向渐变柱状图》源文件


看到这里你还不心动吗?


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



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



今天的分享就到这里啦~


另外,本公众号建立了R语言和Python学习分享群,联系后台,拉您入群。


或直接添加小编,拉您入群:




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

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

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