Seaborn热图教程–综合教程

时间:2020-02-23 14:41:50  来源:igfitidea点击:

在本文中,我们将讨论通过Seaborn Heatmaps进行数据可视化。

了解Seaborn库中的热图

Python提供了各种模块来以可视化的形式准备和呈现数据,以便更好地了解所构建的数据模型。

Python Seaborn模块用于可视化数据并以图形格式浏览数据的各个方面。
它建立在Python Matplotlib模块之上,该模块也提供了以多种方式绘制数据的功能。

Seaborn不能被视为Matplotlib的替代品,但实际上可以被视为数据探索和可视化的辅助功能。

Seaborn具有多个内置功能来构建用于数据可视化的图形。
HeatMaps是数据探索和可视化方向上的重要功能之一。

Seaborn热图以二维格式表示数据。
热图使数据可视化,并通过图形/彩色图以摘要的形式表示。

它使用各种调色板和不同的参数为图形添加更多的可视化功能,从而有效地增加了对数据的探索。

为了开始使用Heatmaps,我们需要使用以下语法安装Seaborn模块:

语法:

pip install seaborn

Seaborn要求事先安装以下模块:

  • 大Pandas
  • NumPy
  • Matplotlib

1.创建一个热图

让我们使用以下语法创建一个基本的"热图",以创建提供给它的数据的可视化图表。

语法:

seaborn.heatmap(data)

例:

import numpy as np
import seaborn as sn
import matplotlib.pyplot as plt
data_plot = np.random.rand(6,5)
map = sn.heatmap(data_plot)
plt.show()

在上面的代码片段中,我们使用了" numpy.random.rand(m,n)函数"来随机生成一些具有6行5列的数据以馈入热图。
此外," pyplot.show()函数"用于以正确的格式表示热图。

2.删除HeatMap中的标签

从上面的热图表示中可以看出,由x轴和y轴表示的值/数据点被称为刻度标签。
它们代表使用热图绘制和可视化的数据的比例。

勾号标签具有以下类型:

  • X-tick标签
  • y-tick标签

从HeatMap移除y标签

默认情况下,刻度标签出现在热图中。
为了删除y-tick,我们可以使用以下语法:

seaborn.heatmap(data,yticklabels=False)

例:

import numpy as np
import seaborn as sn
import matplotlib.pyplot as plt
data_plot = np.random.rand(6,5)
map = sn.heatmap(data_plot,yticklabels=False)
plt.show()

从HeatMap移除x标签

要删除x-tick标签刻度,请使用以下语法:

seaborn.heatmap(data,xticklabels=False)

例:

import numpy as np
import seaborn as sn
import matplotlib.pyplot as plt
data_plot = np.random.rand(6,5)
map = sn.heatmap(data_plot,xticklabels=False)
plt.show()

3.在HeatMap中设置标签

为了给热图增加更好的价值和理解,可以添加有助于理解可视化数据的更多标签。

1.设置x标签

使用matplotlib内置函数,可以使用以下语法将文本标签添加到x-tick轴:

pyplot.xlabel("label")

例:

import numpy as np
import seaborn as sn
import matplotlib.pyplot as plt
data_plot = np.random.rand(6,5)
map = sn.heatmap(data_plot)
plt.xlabel("Numbers")
plt.show()

2.设置y-label

以类似的方式,可以灌输以下语法以将文本标签添加到y-tick轴:

pyplot.ylabel("label")

例:

import numpy as np
import seaborn as sn
import matplotlib.pyplot as plt
data_plot = np.random.rand(6,5)
map = sn.heatmap(data_plot)
plt.ylabel("Range")
plt.show()

4.将文本值添加到HeatMap

我们可以使用以下语法添加由Heatmap的二维格式表示的值,该值将为更好地理解表示的数据增加价值:

seaborn.heatmap(data,annot=True)

" annot参数"设置为True,以显示由热图绘制的数据。

示例1:使用热图将文本值添加到随机生成的数据

import numpy as np
import seaborn as sn
import matplotlib.pyplot as plt

data_plot = np.random.rand(6,5)

map = sn.heatmap(data_plot,annot=True)

plt.xlabel("Numbers")
plt.ylabel("Range")
plt.show()

示例2:从数据集中添加数据值以在热图中表示

import pandas as pd
import seaborn as sn
import matplotlib.pyplot as plt

data = pd.read_csv("C:/Python_edwisor/mtcars.csv")
data_set = pd.DataFrame(data.iloc[1:5,1:5])
map = sn.heatmap(data_set,annot=True)
plt.show()

5. Seaborn HeatMaps中的ColorMaps

色彩图有助于有效地了解热图所显示的数据。
色图表示数据的分布,其中我们可以根据色条中颜色表示的最小值和最大值来分析数据。

1.顺序色图

当数据经历数据/人口值的逐渐线性增长时,将使用顺序色图。
因此,顺序色图可分别用于表示从低值到高值的线性上升。

我们可以通过将cmap attribute设置为'cubehelix'来实现顺序色图

语法:

seaborn.heatmap(data,cmap='cubehelix')

例:

import pandas as pd
import seaborn as sn
import matplotlib.pyplot as plt

data = pd.read_csv("C:/Python_edwisor/mtcars.csv")
data_set = pd.DataFrame(data.iloc[1:5,1:5])

map = sn.heatmap(data_set,annot=True,cmap="cubehelix")
plt.show()

2.分散调色板

发散调色板会创建一个颜色图,作为两种颜色之间发散的组合。

语法:

cmap = seaborn.diverging_palette(h_neg and h_pos, sep=value, l=value, as_cmap=True)

  • h_neg和h_pos:地图的正负扩展值。
    范围介于0-359之间。

  • l:用于在地图的两个范围内增加亮度。
    范围介于0到100之间。

  • sep:sep参数代表热图中数据中间区域的大小。

  • as_cmap:一个布尔参数,当设置为True时,它代表matplotlib颜色图对象。

例:

import pandas as pd
import seaborn as sn
import matplotlib.pyplot as plt

data = pd.read_csv("C:/Python_edwisor/mtcars.csv")
data_set = pd.DataFrame(data.iloc[1:5,1:5])
cmap = sn.diverging_palette(320, 40, sep=40, as_cmap=True)
map = sn.heatmap(data_set,annot=True,cmap=cmap)
plt.show()

3.明暗调色板colorMap

使用seaborn热图,我们可以获得混合了亮或者暗值的色图,以更好的方式可视化数据。

混合色图的类型:

  • Light Palette Colormap:它将给定的颜色从浅到深混合,代表从低到高的总体数据。

  • "深色调色板颜色图":它将给定的颜色从暗到亮混合在一起,代表从低到高的数据。

语法:调色板

cmap = seaborn.light_palette("color-code",as_cmap=True)

示例1:调色板

import pandas as pd
import seaborn as sn
import matplotlib.pyplot as plt

data = pd.read_csv("C:/Python_edwisor/mtcars.csv")
data_set = pd.DataFrame(data.iloc[1:5,1:5])
cmap = sn.light_palette("#3fdd01", as_cmap=True)
map = sn.heatmap(data_set,annot=True,cmap=cmap)
plt.show()

语法:深色调色板

seaborn.dark_palette("color-code",as_cmap=True)

示例2:深色调色板

import pandas as pd
import seaborn as sn
import matplotlib.pyplot as plt

data = pd.read_csv("C:/Python_edwisor/mtcars.csv")
data_set = pd.DataFrame(data.iloc[1:5,1:5])
cmap = sn.dark_palette("#3fdd01", as_cmap=True)
map = sn.heatmap(data_set,annot=True,cmap=cmap)
plt.show()

4.离散ColorMap

如果数据集/人口包含离散的数据值,我们可以使用" seaborn.mpl_palette()函数"以离散的颜色表示离散值。

语法:

seaborn.mpl_palette("Set3",value)

  • Set3:它是调色板的名称(在这里与其他颜色图一起玩)
  • "值":调色板中要显示的离散颜色的数量。

例:

import pandas as pd
import seaborn as sn
import matplotlib.pyplot as plt

data = pd.read_csv("C:/Python_edwisor/mtcars.csv")
data_set = pd.DataFrame(data.iloc[1:5,1:5])
cmap = sn.mpl_palette("Set3", 20)
map = sn.heatmap(data_set,annot=True,cmap=cmap)
plt.show()

6. Seaborn HeatMap颜色条

彩条提供有关可视化数据表示的颜色的信息,并且还表示描述热图绘制的数据的值的范围。

默认情况下,热图中会显示一个颜色列。
如果我们希望从热图中删除颜色条,则以下语法可以帮助您解决该问题:

seaborn.heatmap(data,cbar=False)

范例1:

import numpy as np
import seaborn as sn
import matplotlib.pyplot as plt

data_plot = np.random.rand(6,5)
map = sn.heatmap(data_plot,annot=True,cbar=False)

plt.xlabel("Numbers")
plt.ylabel("Range")
plt.show()

我们可以使用以下语法,通过提供颜色列颜色所代表的值的比例尺范围来自定义热图:

seaborn.heatmap(data,cmap,vmin=value,vmax=value)

范例2:

import pandas as pd
import seaborn as sn
import matplotlib.pyplot as plt

data = pd.read_csv("C:/Python_edwisor/mtcars.csv")
data_set = pd.DataFrame(data.iloc[1:5,1:5])
cmap = sn.mpl_palette("Set3", 5)
map = sn.heatmap(data_set,annot=True,cmap=cmap,vmin=10, vmax=20)

plt.show()

在上面的示例中,我们将颜色条的比例设置为10-20。