Cómo tener valores reales en matplotlib Gráfico Circular muestra (Python)?

Tengo un gráfico circular dibujo de los valores extraídos de un archivo CSV. La proporción de los valores que se muestran actualmente con el porcentaje de muestra «autopct=’%1.1 f%%'». Es allí una manera de mostrar los valores reales que se representan en el conjunto de datos para cada sector.

#Pie for Life Expectancy in Boroughs
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt

# show plots inline
%matplotlib inline

# use ggplot style
matplotlib.style.use('ggplot')

#read data
lifeEx = pd.read_csv('LEpie.csv')

#Select columns
df = pd.DataFrame()
df['LB'] = lifeEx[['Regions']]
df['LifeEx'] = lifeEx[['MinLF']]
colorz = ['#B5DF00','#AD1FFF', '#BF1B00','#5FB1FF','#FFC93F']
exploda = (0, 0, 0, 0.1, 0)


#plotting
plt.pie(df['LifeEx'], labels=df['LB'], colors=colorz, autopct='%1.1f%%', explode = exploda, shadow = True,startangle=90)

#labeling
plt.title('Min Life expectancy across London Regions', fontsize=12)
InformationsquelleAutor AnthonyJ | 2016-12-11

1 Kommentar

  1. 10

    El uso de la autopct palabra clave

    Como sabemos que el porcentaje de veces la suma de todos los valores reales debe ser el valor real, se puede definir como la función y la fuente de alimentación esta función para plt.pie el uso de la autopct palabra clave.

    import matplotlib.pyplot as plt
    import numpy
    
    labels = 'Frogs', 'Hogs', 'Dogs'
    sizes = numpy.array([5860, 677, 3200])
    colors = ['yellowgreen', 'gold', 'lightskyblue']
    
    def absolute_value(val):
        a  = numpy.round(val/100.*sizes.sum(), 0)
        return a
    
    plt.pie(sizes, labels=labels, colors=colors,
            autopct=absolute_value, shadow=True)
    
    plt.axis('equal')
    plt.show()

    Se debe tener cuidado ya que el cálculo involucra algún error, por lo que el valor suministrado es exacta sólo para algunos decimales.

    Un poco más avanzada puede ser la siguiente función, que trata de obtener el valor original de la matriz de entrada de vuelta al comparar la diferencia entre el valor calculado y la matriz de entrada. Este método no tiene el problema de la inexactitud sino que depende de los valores de entrada que son lo suficientemente distintos el uno del otro.

    def absolute_value2(val):
        a  = sizes[ numpy.abs(sizes - val/100.*sizes.sum()).argmin() ]
        return a

    Cambio de texto después de la tarta de creación

    La otra opción es dejar que el pastel se dibuja con los valores de porcentaje y reemplazarlos después. Para este fin, sería la tienda de la autopct etiquetas devuelto por plt.pie() y bucle sobre ellos para reemplazar el texto con los valores de la matriz original. Atención, plt.pie() sólo devuelve tres argumentos, el último de las etiquetas de interés, cuando autopct palabra clave es siempre así establecemos una cadena vacía aquí.

    labels = 'Frogs', 'Hogs', 'Dogs'
    sizes = numpy.array([5860, 677, 3200])
    colors = ['yellowgreen', 'gold', 'lightskyblue']
    
    p, tx, autotexts = plt.pie(sizes, labels=labels, colors=colors,
            autopct="", shadow=True)
    
    for i, a in enumerate(autotexts):
        a.set_text("{}".format(sizes[i]))
    
    plt.axis('equal')
    plt.show()

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea