【问题标题】:Creating pie chart from given percentage, not values从给定的百分比而不是值创建饼图
【发布时间】:2021-08-29 18:34:54
【问题描述】:

当我打印以下 pct_tested 时,我得到了一个很好的显示百分比(例如 27.83%),它对应于测试元素占总元素的百分比。

pct_tested = "{:.2%}".format(number_of_tested/len(df.index))

现在,我想创建一个饼图,在其中输入 pct_tested 作为值,它输出一个饼图,其中一个切片 = 27.83%,另一个切片是余数(即 72.17%)。

我的审判:

plt.pie([pct_tested], colors = colors, autopct='%.2f%%')

不起作用,因为 pct_tested 的值中存在“%”。

所以我再次尝试使用纯数值,看看是否能解决问题。

plt.pie([number_of_tested], colors = colors, autopct='%.2f%%')

这可以创建一个饼图,但是,结果只是一个单片饼图,上面写着 100%。

然后我意识到对于我的数据我可以简单地使用[pct_tested, 100-pct_tested],但我仍然遇到它不起作用的问题,因为该值不是纯粹的数字,我该如何解决?

我是编码新手,意识到这是一个微不足道的要求,但我不知道从哪里开始,我只需要一些指导。谢谢你的帮助

【问题讨论】:

    标签: python matplotlib seaborn


    【解决方案1】:

    您需要将一个数字列表传递给plt.pie,每个切片都有一个值。根据您掌握的信息,有几种方法可以做到这一点。

    1. 使用pct_tested 值,您可以通过从 100 中减去来计算其他百分比。

       plt.pie([pct_tested, 100-pct_tested], autopct='%.2f%%')
      
    2. 使用number_of_tested 值,您可以通过从总数中减去来计算另一个值。我假设总数是len(df.index),因为你除以它得到pct_tested 值。

       plt.pie([number_of_tested, len(df.index)-number_of_tested], autopct='%.2f%%')
      

    其中任何一个都应该给你一个包含两个部分的饼图。

    【讨论】:

    • 选项 1 是我尝试做的,但我收到此错误 'TypeError: unsupported operand type(s) for -: 'int' and 'str'' 我认为这是因为 pct_tested 字面上输出 27.83% , 带有百分号.. 或者是其他问题?
    • @BostonCo 是的,那是因为它是一个字符串。如果您将该值计算为数字,它将起作用。删除格式并执行pct_tested = number_of_tested/len(df.index)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多