【问题标题】:increase radius of a single sector in pie chart matplotlib增加饼图matplotlib中单个扇区的半径
【发布时间】:2021-07-16 06:17:00
【问题描述】:

我是 matplotlib 饼图的新手,我想知道如何在饼图中设置单个扇区的半径。我知道如何设置图表的整体半径,但想增加单个扇区的半径。例如,在这张图片中,与其他扇区相比,扇区“1”的半径更大。 请注意:我不想为了增加半径而爆炸该扇区。

如果有人知道,请告诉我!提前致谢。

【问题讨论】:

    标签: python matplotlib pie-chart


    【解决方案1】:

    直接的答案是,使用 Matplotlib 似乎无法在同一个饼图中设置多个半径。

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import matplotlib.pyplot as plt
    
    data = [4, 3, 2, 1]
    
    fig, ax = plt.subplots(figsize=(4,4))
    
    wedges, texts = ax.pie(data, radius=1)
    
    for w in wedges:
        w.set_width(.5)
    
    wedges[0].set_radius(1.1)
    wedges[1].set_radius(1)
    wedges[2].set_radius(1)
    wedges[3].set_radius(1)
    
    plt.show()
    
    radii = [w.radius for w in wedges]
    print(radii)
    

    我们可以看到半径实际上是不同的。

    [1.1, 1, 1, 1]
    

    但不同的半径似乎没有不同

    一个有趣的旁注是切片宽度可以不同:

    不同宽度的切片

    另一种方式

    但是,您可以通过一些技巧来解决此问题。不是绘制一个饼图,而是绘制两个 - 第一个“放大”切片不可见,第二个“放大”切片设置为 only 可见切片。

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import matplotlib.pyplot as plt
    
    data = [4, 3, 2, 1]
    
    fig, ax = plt.subplots(figsize=(4,4))
    
    # Pie 1
    wedges, texts = ax.pie(data, radius=1)
    
    for w in wedges:
        w.set_width(.5)
    
    wedges[0].set_visible(False)
    
    # Pie 2
    wedges1, texts1 = ax.pie(data, radius=1.1)
    
    for w in wedges1:
        w.set_width(.6)
    
    wedges1[1].set_visible(False)
    wedges1[2].set_visible(False)
    wedges1[3].set_visible(False)
    
    plt.show()
    

    带放大切片的饼图示例

    添加了set_width 参数以使绘图成为像您的示例一样的“甜甜圈”绘图。请注意每个图表中实现所需外观所需的宽度值。

    【讨论】:

      猜你喜欢
      • 2018-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      • 1970-01-01
      相关资源
      最近更新 更多