这段代码在excel文件中创建了一个表格和一个饼图,标签字段,从值列表中获取,太长了。
plt.pie(df.Confronto.value_counts(),
labels=textwrap.shorten(df.Confronto.value_counts().index.tolist(), width=10, placeholder="..."))
plt.title("Confronto {} - {}".format(Mese,Mese2,))
plt.show()
字符串
所以我尝试使用text.shorten来缩短它,但它给了我这个错误:
labels=textwrap.shorten(df.Confronto.value_counts().index.tolist(), width=10, placeholder="..."))
AttributeError: 'list' object has no attribute 'strip'
型
我试着转换,但它给了我一个关于标签长度不确定的错误
labels=textwrap.shorten(str(df.Confronto.value_counts().index.tolist()), width=10, placeholder="...")
raise ValueError("'label' must be of length 'x'")
ValueError: 'label' must be of length 'x'
型
下面的图片显示了代码在当前状态下的结果:标签太长,在创建图像时没有读取任何内容,我希望我可以对标签的长度设置最大值。
的数据
1条答案
按热度按时间txu3uszq1#
我不确定你想用这段代码实现什么,所以我只解释为什么会引发异常。这是因为
pandas.Index.tolist
返回一个列表,而textwrap.shorten
用于字符串。所以,如果字符串是列表,就不能剥离字符串。我假设
df.Confronto.value_counts().index.tolist()
返回int
的列表,就像[1,2,3]
一样。字符串
它首先将
str()
Map到int
的列表上,以生成str
的列表,然后用''
符号将列表连接到单个字符串中。但是,
labels=
采用str
的列表,因此您可能需要使用型
或者甚至对原始的
df.Confronto.value_counts().index.tolist()
进行切片以减少元素的数量,然后将str()
Map到其上。在评论中澄清之后,我建议对给定列表进行列表理解:
型