Python &引用#使用代理艺术家;。使用饼图(来自CSV的数据)Matplotlib格式化(原始句柄)

Python &引用#使用代理艺术家;。使用饼图(来自CSV的数据)Matplotlib格式化(原始句柄),python,csv,matplotlib,Python,Csv,Matplotlib,在饼图中添加图例后,我收到一条用户警告: UserWarning: Legend does not support '47036560' instances. A proxy artist may be used instead. 我想添加图例以显示已使用的内存状态,并从csv文件中释放内存 csv文件: 我的代码: import matplotlib.pyplot as plt import numpy as np plt.rcParams['text.color'] = 'k' dat

在饼图中添加图例后,我收到一条用户警告:

UserWarning: Legend does not support '47036560' instances.
A proxy artist may be used instead.
我想添加图例以显示已使用的内存状态,并从csv文件中释放内存

csv文件:

我的代码:

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['text.color'] = 'k'

data = np.loadtxt('show-flash.csv' ,dtype=bytes, delimiter=';', usecols=(0, 1)).astype(str)
slice = data[1]
labels = data[0]
colors = ['lightskyblue', 'lightcoral']
explode = [0.05, 0]
plt.pie(slice, labels=labels, colors=colors, explode=explode, startangle=90, shadow=True, autopct='%1.1f%%')

plt.title('Show Flash\n(Bytes)')
plt.legend(slice,labels)
plt.show()
我需要这样的输出图片:

您得到的是一条警告,说明您不能将字符串用作图例句柄。提供给
plt.legend(句柄、标签)
句柄
必须是matplotlib。获取这些艺术家的最简单方法是调用
plt.pie()

完整示例:

import io
import matplotlib.pyplot as plt
import numpy as np

d = u"""USED;FREE

26932440;47036560"""

s = io.StringIO(d)

data = np.loadtxt(s ,dtype=bytes, delimiter=';', usecols=(0, 1)).astype(str)

slices = data[1]
labels = data[0]
colors = ['lightskyblue', 'lightcoral']
explode = [0.05, 0]
pie = plt.pie(slices, labels=labels, colors=colors, explode=explode, startangle=90, 
              shadow=True, autopct='%1.1f%%')

plt.title('Show Flash\n(Bytes)')
plt.legend(pie[0],[" ".join(a) for a in zip(labels, slices)])
plt.show()
生产


我们可以在图例中添加新的变量吗?在您的代码中有2个变量(饼图和标签),我可以添加一个新的变量吗?所以在图例中有3个变量要显示?我确实需要像我的示例一样的输出图例,它有颜色、标签和切片。它的工作方式与我想要的一样,谢谢您的回答:)
pie = plt.pie(...)
plt.legend(pie[0], labels)
import io
import matplotlib.pyplot as plt
import numpy as np

d = u"""USED;FREE

26932440;47036560"""

s = io.StringIO(d)

data = np.loadtxt(s ,dtype=bytes, delimiter=';', usecols=(0, 1)).astype(str)

slices = data[1]
labels = data[0]
colors = ['lightskyblue', 'lightcoral']
explode = [0.05, 0]
pie = plt.pie(slices, labels=labels, colors=colors, explode=explode, startangle=90, 
              shadow=True, autopct='%1.1f%%')

plt.title('Show Flash\n(Bytes)')
plt.legend(pie[0],[" ".join(a) for a in zip(labels, slices)])
plt.show()