📜  如何在Python使用 Matplotlib 反转颜色图?

📅  最后修改于: 2022-05-13 01:55:09.343000             🧑  作者: Mango

如何在Python使用 Matplotlib 反转颜色图?

先决条件: Matplotlib

Matplotlib 有许多内置的颜色图。颜色图只不过是将整数数据/数字映射到颜色的字典。颜色图用于区分或区分特定图中的数据。使用颜色图的原因是,通过与数值相比具有不同颜色的绘图,人类更容易将数据与其他数据区分开来。

颜色图根据用途分为四类,要求如下:

  • 顺序的
  • 发散
  • 定性
  • 各种各样的

在本文中,我们将使用 Matplotlib 库反转颜色图。

反转颜色图意味着反转绘图的颜色图。例如,如果绘图的较高值显示为深蓝色,而较低的值显示为黄色,则在反转颜色图后,绘图的较高值显示为黄色,而较低的值显示为深蓝色。



我们可以借助两种方法来反转绘图的颜色图:

  1. 通过使用 reversed()函数来反转颜色图。
  2. 通过在颜色图名称末尾使用“_r”。

循序渐进的方法:

  • 导入必要的库。
  • 创建或导入数据集以制作绘图。
  • 我们可以使用上面讨论的两种方法来反转绘图的颜色图。
  • 通过使用第一种方法:
    • 首先,我们必须使用 cm.get_cmap(“name_of_cmap”) 获取颜色图,并将其存储在名为“orig_map”的变量中。
    • 然后我们必须反转原始颜色图,因为我们使用 reversed()函数反转颜色图,我们将编写 orig_map.reversed(),由此我们将获得反转颜色图,让它存储在名为“reversed”的变量中。
    • 现在,通过传递值来绘制散点图, c代表颜色,cmap=reversed 获得反转的颜色图。
  • 通过使用第二种方法:
    • 与第一种方法相比,这种方法要简单得多,在这种方法中制作散点图并通过将值传递给绘图,用于颜色的c通过添加_r cmap=” nameofcmap_r ” 来传递颜色图的名称以获得反转颜色地图。
  • 现在使用 xlabel() 和 ylabel()函数为 X 轴和 Y 轴命名,使用 colorbar()函数可视化值到颜色的映射的颜色条,并使用 title()函数为绘图指定标题由 matplotlib 提供。
  • 现在使用 matplotlib 库提供的 show()函数可视化绘图。

在本文中,颜色图的反转是通过制作散点图来完成的。让我们做一些例子来更好地理解这个主题。

示例 1:使用 matplotlib 库在不反转的情况下使用默认颜色图绘制散点图。

Python
# importing the necessary libraries
import matplotlib.pyplot as plt
import numpy as np 
  
# creating the array to plot
x=np.arange(15)
y=[1, 2, 3, 4, 5, 6, 7, 8, 9, 12,
   15, 17, 19, 21, 23]
  
# making the scatter plot for x and y values
# giving color to the plot with respect to y
plt.scatter(x, y, c = y)
  
# naming the x axis and
# y axis using xlabel() and ylabel() function 
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
  
# visualizing the mapping from values to colors
plt.colorbar()
  
# giving title to the plot using plt.title() function
plt.title("Scatter Plot with Default colormap")
  
# visualizing the plot
plt.show()


Python
# importing the necessary libraries
import matplotlib.pyplot as plt
import numpy as np 
  
# creating the array to plot
x=np.arange(15)
y=[1, 2, 3, 4, 5, 6, 7,
   8, 9, 12, 15, 17, 19, 21, 23]
  
# getting the original colormap using cm.get_cmap() function
orig_map=plt.cm.get_cmap('viridis')
  
# reversing the original colormap using reversed() function
reversed_map = orig_map.reversed()
  
# making the scatter plot on x and y  
# giving color to the plot with respect
# to y and passing cmap=reversed_map to reverse the colormap
plt.scatter(x, y, c = y, cmap = reversed_map)
  
# giving name to X and Y axis
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
  
# visualizing the mapping from values to colors
plt.colorbar()
  
# giving title to the plot
plt.title("Scatter Plot with Default colormap")
  
# visualizing the plot using show() function
plt.show()


Python
# importing the necessary libraries
import numpy as np
import matplotlib.pyplot as plt 
  
# creating the array to plot
x=np.arange(20)
y=[ 21, 24, 56, 78, 43, 23, 20, 28, 30,
   4, 6, 5, 7, 89, 20, 12, 72, 51, 58, 18]
  
# making the scatter plot on x and y values and giving color w.r.t y
# passing cmap in cmap add _r at the end of colormap name to reverse the colormap
plt.scatter(x, y, c = y, cmap = 'viridis_r')
  
# giving name to X and Y axis
plt.xlabel("X")
plt.ylabel("Y")
  
# visualizing the mapping from values to colors
plt.colorbar()
  
# giving title to the plot
plt.title("Scatter Plot with Reveresed Viridis colormap")
  
# visualizing the plot using show() function
plt.show()


Python
# importing the necessary libraries
import numpy as np
import matplotlib.pyplot as plt 
  
# creating the array to plot
x=np.arange(20)
y=[21, 24, 56, 78, 43, 23, 20,
   28, 30, 4, 6, 5, 7, 89, 20, 12, 72,
   51, 58, 18]
  
# making the scatter plot on x and y values and giving color w.r.t y
# passing cmap in cmap add _r at
# the end of colormap name to reverse the colormap
plt.scatter( x, y,c = y, cmap = 'plasma_r')
  
# giving name to X and Y axis
plt.xlabel("X")
plt.ylabel("Y")
  
# visualizing the mapping from values to colors
plt.colorbar()
  
# giving title to the plot
plt.title("Scatter Plot with Reversed Plasma colormap")
  
# visualizing the plot using show() function
plt.show()


输出:

这是具有默认颜色图的散点图。在这个例子中,虽然绘图没有通过 cmap=”viridis” 参数,因为散点图使用 viridis 颜色图作为默认颜色图。现在让我们反转颜色图,看看它看起来如何。

示例 2:通过使用 reversed()函数反转颜色图来绘制散点图。



Python

# importing the necessary libraries
import matplotlib.pyplot as plt
import numpy as np 
  
# creating the array to plot
x=np.arange(15)
y=[1, 2, 3, 4, 5, 6, 7,
   8, 9, 12, 15, 17, 19, 21, 23]
  
# getting the original colormap using cm.get_cmap() function
orig_map=plt.cm.get_cmap('viridis')
  
# reversing the original colormap using reversed() function
reversed_map = orig_map.reversed()
  
# making the scatter plot on x and y  
# giving color to the plot with respect
# to y and passing cmap=reversed_map to reverse the colormap
plt.scatter(x, y, c = y, cmap = reversed_map)
  
# giving name to X and Y axis
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
  
# visualizing the mapping from values to colors
plt.colorbar()
  
# giving title to the plot
plt.title("Scatter Plot with Default colormap")
  
# visualizing the plot using show() function
plt.show()

输出:

在示例一中,较高的值显示为黄色,较低的值显示为紫色,而在示例二中,我们可以观察到在反转颜色图后,较高的值显示为紫色,而较低的值显示为黄色。

让我们看看如何使用第二种方法反转颜色图,即在颜色图名称的末尾使用 _r。

示例 3:通过使用 _r函数反转颜色图来绘制散点图。

Python

# importing the necessary libraries
import numpy as np
import matplotlib.pyplot as plt 
  
# creating the array to plot
x=np.arange(20)
y=[ 21, 24, 56, 78, 43, 23, 20, 28, 30,
   4, 6, 5, 7, 89, 20, 12, 72, 51, 58, 18]
  
# making the scatter plot on x and y values and giving color w.r.t y
# passing cmap in cmap add _r at the end of colormap name to reverse the colormap
plt.scatter(x, y, c = y, cmap = 'viridis_r')
  
# giving name to X and Y axis
plt.xlabel("X")
plt.ylabel("Y")
  
# visualizing the mapping from values to colors
plt.colorbar()
  
# giving title to the plot
plt.title("Scatter Plot with Reveresed Viridis colormap")
  
# visualizing the plot using show() function
plt.show()

输出:

示例 4:使用 Matplotlib 绘制反向等离子体颜色图的散点图。

Python

# importing the necessary libraries
import numpy as np
import matplotlib.pyplot as plt 
  
# creating the array to plot
x=np.arange(20)
y=[21, 24, 56, 78, 43, 23, 20,
   28, 30, 4, 6, 5, 7, 89, 20, 12, 72,
   51, 58, 18]
  
# making the scatter plot on x and y values and giving color w.r.t y
# passing cmap in cmap add _r at
# the end of colormap name to reverse the colormap
plt.scatter( x, y,c = y, cmap = 'plasma_r')
  
# giving name to X and Y axis
plt.xlabel("X")
plt.ylabel("Y")
  
# visualizing the mapping from values to colors
plt.colorbar()
  
# giving title to the plot
plt.title("Scatter Plot with Reversed Plasma colormap")
  
# visualizing the plot using show() function
plt.show()

输出:

在上面的例子中,第一个图显示了没有反转颜色图的图,而第二个图显示了反转颜色图的图。在第一个图中,较高的值以黄色显示,而较低的值以深蓝色显示,而在反转颜色图后的第二个图中,较高的值以深蓝色显示,较低的值以黄色显示。 matplotlib 库中存在许多自定义颜色图,例如 inferno、cividis、magma、plasma 等。