Seaborn 饼图
本教程将讨论使用 Matplotlib
的 pie 属性和 Seaborn 的颜色托盘创建饼图。
在 Seaborn 中创建饼图
饼图在包含不同颜色切片的圆形图中表示数据。饼图中每个切片的大小取决于数值数据的比例。
饼图用于研究数值数据的比例。它显示了数据占整体的百分比。如果一个数量在给定数据中具有较高的数值比例,则其切片大小和百分比将大于饼图中存在的其他切片。
如果我们想在 Python 中使用 seaborn 创建饼图,我们必须使用 Matplotlib
的 pie 属性和 Seaborn 的调色板。我们必须传递输入数据和调色板来创建饼图。
例如,让我们创建一些随机数据的饼图。请参阅下面的代码。
import matplotlib.pyplot as plt
import seaborn as sns
data = [35, 21, 29, 39, 11]
colors = sns.color_palette('pastel')
plt.pie(data, colors = colors)
plt.show()
输出:
在上面的代码中,我们使用了 Seaborn 的柔和调色板,但是我们可以随意更改调色板。Seaborn 有很多可用的颜色托盘选项,例如深、静音、色盲、明亮和黑暗。
我们必须在 color_palette()
属性中将颜色托盘作为字符串传递。pie 属性有很多我们可以更改的参数,例如使用包含标签名称的字符串数组向饼图添加标签。
我们还可以使用 autopct
参数在切片内添加文本。例如,让我们通过添加标签、更改调色板以及在每个切片内添加切片百分比来使上面的饼图更具可读性。请参阅下面的代码。
import matplotlib.pyplot as plt
import seaborn as sns
data = [35, 21, 29, 39, 11]
labels = ['slice 1', 'slice 2', 'slice 3', 'slice 4', 'slice 5']
colors = sns.color_palette('bright')
plt.pie(data, labels=labels,colors = colors, autopct = '%0.0f%%')
plt.show()
输出:
我们可以在每个切片内添加任何文本,但在此示例中我们添加了每个数据的百分比。我们还可以设置每个切片内文本的距离。默认情况下,文本距离为 0.6,但我们可以使用 pctdistance
参数更改它。
我们还可以使用 labeldistance
参数设置标签距离。默认情况下,标签距离值为 1.1,但我们可以将其更改为任何浮点值。如果我们想在每个切片之间创建空间以便有一些偏移,我们可以使用 explode 参数来做到这一点。
爆炸参数的值应该是一个与输入数据长度相同的数组。例如,让我们在上面的饼图的每个切片之间添加一些偏移量。请参阅下面的代码。
import matplotlib.pyplot as plt
import seaborn as sns
data = [35, 21, 29, 39, 11]
explode = [0.3,0.02,0.02,0.02,0.02]
labels = ['slice 1', 'slice 2', 'slice 3', 'slice 4', 'slice 5']
colors = sns.color_palette('bright')
plt.pie(data, labels=labels,colors = colors, autopct = '%0.0f%%', explode = explode)
plt.show()
输出:
我们还可以使用 shadow 参数在饼图下方绘制阴影。默认情况下,shadow 参数设置为 false,但我们可以将其设置为 true。默认情况下,切片一将从 0 度开始,但我们可以使用 startangle
参数并将其值设置为任何浮点值来更改它。
默认情况下,切片将从 x 轴开始并遵循逆时针方向,但我们可以通过将参数值设置为 false 来将其设置为顺时针。我们还可以使用 textprops
参数设置饼图中显示的文本的属性,例如字体大小或颜色。
我们还可以使用 wedgeprops
参数设置楔形或切片的属性,例如它们的线宽。默认情况下,框架设置为 false,这就是我们看不到框架的原因,但我们可以使用 frame 参数将其设置为 true。
默认情况下,饼图中心为 0,但我们可以使用 center 参数将其更改为任何值。我们还可以使用 rotatelabel
参数沿切片方向旋转标签并将其值设置为 true。
例如,让我们改变上面提到的饼图的参数。请参阅下面的代码。
import matplotlib.pyplot as plt
import seaborn as sns
data = [35, 21, 29, 39, 11]
explode = [0.3,0.02,0.02,0.02,0.02]
labels = ['slice 1', 'slice 2', 'slice 3', 'slice 4', 'slice 5']
colors = sns.color_palette('bright')
plt.pie(data,
labels=labels,
colors = colors,
autopct = '%0.0f%%',
explode = explode,
shadow = 'True',
startangle = 90,
textprops = {'color': 'Green','fontsize':16},
wedgeprops = {'linewidth': 6},
frame = 'true' ,
center = (0.1,0.1),
rotatelabels = 'true')
plt.show()
输出: