Py与C。。。 发表于 2022-8-11 10:29:43

matplotlib画饼图文字重叠怎么办

本帖最后由 Py与C。。。 于 2022-8-11 10:43 编辑

plt.rcParams['font.sans-serif']='SimHei'#设置中文显示
    plt.rcParams['axes.unicode_minus'] = False
    plt.figure(figsize=(6,6))#将画布设定为正方形,则绘制的饼图是正圆
    plt.axis('equal') #格式化
    #
    plt.pie(totals,labels=label,autopct='%1.1f%%')#绘制饼图
    plt.title('歌词占比饼图')#绘制标题
    plt.show()
但是结果却很不理想,许多小数据都叠在了一起

后来我尝试使用explode参数改变小数据到圆心的距离,值是1就向圆心外移动0.4,2就移动0.2,并且写了一个循环尝试构建列表:


    ctr =()
    p = 0.4
    q = 0.2
    for total in totals:
      if total == 1:
            ctr.append(p)
      if total == 2:
            ctr.append(q)
      else:
            ctr.append(0)
但是结果报错:ValueError: 'explode' must be of length 'x'

现在我正尝试使用箭头,直线把数据画在外侧,这能做到吗?或者说有更好的方法吗?
求助

Py与C。。。 发表于 2022-8-11 10:36:30

别沉啊啊啊

Py与C。。。 发表于 2022-8-11 10:46:28

emmm..没人吗

青出于蓝 发表于 2022-8-11 11:42:41

看看这个 传送

Py与C。。。 发表于 2022-8-11 11:47:08

青出于蓝 发表于 2022-8-11 11:42
看看这个 传送


还是不行

青出于蓝 发表于 2022-8-11 11:51:54

感觉无解....
这么多数据所占百分比又很小,肯定会出问题....

Py与C。。。 发表于 2022-8-11 11:56:58

青出于蓝 发表于 2022-8-11 11:51
感觉无解....
这么多数据所占百分比又很小,肯定会出问题....

能不能用箭头在空白处表示?

Py与C。。。 发表于 2022-8-11 11:58:33

青出于蓝 发表于 2022-8-11 11:51
感觉无解....
这么多数据所占百分比又很小,肯定会出问题....

或者调整小的部分离圆心的距离,即拖拽出来

阿奇_o 发表于 2022-8-11 12:11:45

这么多小数据和大数据都要一起展示,没重点呀。。

要解决也行,只能加条引线出来做 专门的标记annotations

可以把数据发过来,我试一下

tommyyu 发表于 2022-8-11 12:32:10

本帖最后由 tommyyu 于 2022-8-11 13:08 编辑

Py与C。。。 发表于 2022-8-11 11:58
或者调整小的部分离圆心的距离,即拖拽出来

我感觉可以把小于0.5%都合并成其他,这么小谁会看啊

Py与C。。。 发表于 2022-8-11 22:13:33

阿奇_o 发表于 2022-8-11 12:11
这么多小数据和大数据都要一起展示,没重点呀。。

要解决也行,只能加条引线出来做 专门的标记annotatio ...

我现在用手机电脑也不在身边
不过大概是这样的
# labels和totals 是字典的键和值
# 这个字典是:artists = {"周杰伦":22,"方文山":53,"黄俊郎":8}
就是artist这种格式,分成键和值两个列表,然后作为labels和totals作为pie的参数
你可以测试一下,发一下通用方法

Py与C。。。 发表于 2022-8-11 22:14:52

阿奇_o 发表于 2022-8-11 12:11
这么多小数据和大数据都要一起展示,没重点呀。。

要解决也行,只能加条引线出来做 专门的标记annotatio ...

另外不局限于这个字典三个值,尽量用函数传参生城之类的,不要暴力一个一个写(喜)

Py与C。。。 发表于 2022-8-13 12:34:25

阿奇_o 发表于 2022-8-11 12:11
这么多小数据和大数据都要一起展示,没重点呀。。

要解决也行,只能加条引线出来做 专门的标记annotatio ...

数据是:
{'黄俊郎/谢迪': 1, '方文山': 167, '周杰伦/宋健彰': 1, '黄俊郎': 26, '周杰伦': 71, '徐若瑄': 10, '黄俊郎/方文山': 1, '罗宇轩/黄婕熙': 2, '派伟俊': 1, '宋健彰': 7, '周杰伦/许世昌/徐若瑄': 1, '宋健彰/黄俊郎': 2, '黄俊郎/周杰伦/方文山
': 1, '黄俊郎/周杰伦': 1, '冼佩瑾/方文山': 1, '黄淩嘉': 1, '林义杰': 1, '罗宇轩/李汪哲': 1, '唐从圣': 1, '邱凯伟/': 1, '周杰伦/蔡振南': 1, '古小力/黄淩嘉': 2, '弹头': 1, '林夕': 1, '曾郁婷': 2, '刘畊宏': 4, '张震岳': 1, '许世昌':
2, '陶喆': 1, '毛华锋': 1}
页: [1]
查看完整版本: matplotlib画饼图文字重叠怎么办