Matplotlib 柱形图:如何在正值和负值情况下选择颜色

Matplotlib 柱形图:如何在正值和负值情况下选择颜色

在数据可视化中,Matplotlib是Python中最受欢迎的库之一。柱形图是Matplotlib中最基本的图表之一,在呈现定量数据方面非常有用。柱状图用于比较不同组之间的数量或大小的变化。它们通常是最常用的视觉表现形式,以显示数据之间的关联或容易识别的差异。

在柱形图中,颜色是非常重要的,因为它可以提供有关数据的更多信息。特别是,在正和负值之间的区别中,使用不同的颜色可以使数据更加清晰和易于理解。但是,当你的数据中有正和负值且没有明确的分界线时,如何选择颜色非常重要。在这篇文章中,我们将讨论如何在Matplotlib柱形图中选择颜色,以区分正和负值。

阅读更多:Matplotlib 教程

生成柱形图

首先,让我们看一下如何生成Matplotlib柱形图。我们将使用一个简单的数据集来生成以下示例图表。数据集包含有关销售数额的信息。我们将使用以下代码生成柱形图。

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()

# 数据 
data = [56, -68, 74, -22, 11]

# 销售月份,本例中有5个月份
month = np.arange(1,6)

# 新建柱状图,设置参数
bars = ax.bar(month, data, width=0.5)

# 显示图形
plt.show()

如何选择颜色

在我们的主题中,我们将具体讨论如何在正值和负值情况下选择颜色。

选择单一颜色

首先,你可以选择一种固定的颜色,无论是正值还是负值。这可能是一个很好的选择,因为它可以带来简洁明了的视觉效果并使图表易于理解。但是,在某些情况下,你可能希望使用更多的颜色来区分正值和负值。

以下是代码示例:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()

# 数据 
data = [56, -68, 74, -22, 11]

# 销售月份,本例中有5个月份
month = np.arange(1,6)

# 仅使用一个固定颜色
color = 'blue'
bars = ax.bar(month, data, width=0.5, color=color)

# 显示图形
plt.show()

使用双色图表

其次,你可以选择使用双色图表来区分正值和负值。这个策略比单一颜色更加明显,并且可以准确地传达数据集中正和负值之间的差异。双色图表使用不同的颜色来区分正值和负值,例如红色表示负值,绿色代表正值。你可以使用两种方法来生成双色图表。

方法一:

该方法使用循环来迭代数据并分配不同的颜色(红色和绿色)给正值和负值。这个策略比较灵活,并且可以适用于各种数据集。

以下是代码示例:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()

# 数据 
data = [56, -68, 74, -22, 11]

# 销售月份,本例中有5个月份
month = np.arange(1,6)

# 使用循环分配颜色
colors = []
for d in data:
    if d < 0:
        colors.append('red')
    else:
        colors.append('green')

bars = ax.bar(month, data, width=0.5, color=colors)

# 显示图形
plt.show()

方法二:

该方法使用一个很好的技巧——在调用bar函数时,通过设置bottom参数来绘制两组柱状图。

以下是代码示例:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()

# 数据 
data = [56, -68, 74, -22, 11]

# 销售月份,本例中有5个月份
month = np.arange(1,6)

# 使用`bottom`参数绘制两组柱状图
bars1 = ax.bar(month[data < 0], data[data < 0], width=0.5, color='red')
bars2 = ax.bar(month[data >= 0], data[data >= 0], width=0.5, color='green')

# 显示图形
plt.show()

渐变颜色

除了双色图表外,你还可以使用渐变颜色,以便更明显地区分正值和负值。这种方法可能更适用于一些高级数据可视化设计中。

在Matplotlib中,你可以使用colormapNormalize函数来实现渐变颜色的效果。以下是代码示例:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import Normalize

fig, ax = plt.subplots()

# 数据 
data = [56, -68, 74, -22, 11]

# 销售月份,本例中有5个月份
month = np.arange(1,6)

# 获取归一化颜色 - 负值使用红色,正值使用蓝色
norm = Normalize(vmin=min(data), vmax=max(data))
colors = [plt.cm.RdYlBu(norm(value)) for value in data]

bars = ax.bar(month, data, width=0.5, color=colors)

# 显示图形
plt.show()

总结

在选择颜色以区分正值和负值时,你可以选择单一颜色、双色图表或渐变颜色。单一颜色简单明了,双色图表更明显,渐变颜色则更适用于高级数据可视化设计。选择正确的颜色对于有效传达数据非常重要。通过使用上面提到的方法,你可以选择最适合你的数据集的颜色,并清晰地传达您的数据点。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程