删除标签但将图例保留在饼图中

时间:2018-02-14 16:10:24

标签: python matplotlib

如何从pie chart删除标签但保留图例?

import matplotlib.pyplot as plt

x = [15, 30, 55]
labels = [1, 2, 3]

plt.figure(figsize=(3, 3), dpi=72)
plt.pie(x, labels=labels)
plt.legend()
plt.savefig('pie_1.png')

enter image description here

4 个答案:

答案 0 :(得分:3)

您可以从饼图中删除labels参数并将其添加到图例中。而不是

plt.pie(x,labels=labels)
plt.legend()

使用

plt.pie(x)
plt.legend(labels=labels)

完整示例:

import matplotlib.pyplot as plt

x = [15, 30, 55]
labels = [1, 2, 3]

plt.figure(figsize=(3, 3), dpi=72)
plt.pie(x)
plt.legend(labels=labels)
plt.show()

enter image description here

答案 1 :(得分:1)

如果我是你,我会创建一个自定义图例,而不是让matplotlib创建自己的自动图例。您现在要求matplotlib使用labels=labels中的plt.pie()绘制标签。

import matplotlib.pyplot as plt

x = [15, 30, 55]
labels = [1, 2, 3]
colors = ['blue', 'red', 'grey']

plt.figure(figsize=(3, 3), dpi=72)
patches, texts = plt.pie(x, colors=colors)
plt.legend(patches, labels)
plt.show()
# plt.savefig('pie_1.png')

Imgur

答案 2 :(得分:1)

作为IMCoins' answer的替代方法,这是继续进行的最佳方式,您也可以保留当前代码,但要从饼图中删除标签。

x = [15, 30, 55]
labels = [1, 2, 3]

plt.figure(figsize=(3, 3), dpi=72)
patches, texts = plt.pie(x, labels=labels)
plt.legend()
for t in texts:
    t.remove()

答案 3 :(得分:0)

一种非常简单的方法是按照matlplotlib.pyplot.pie文档中的建议将标签距离设置为

在我的情况下,效果很好。

$validation = Validator::make($data, ['url' => 'required|url']);
if($validation->fails()){
  dd("Failed");
}