visualización de Python 49 | Los 4 diagramas de relación de composición (Composición) más utilizados


Este artículo comparte los "4 diagramas de relaciones de composición (composición)" más utilizados .

Cinco, diagrama de relación de composición (Composición)

32. Tabla de gofres

33. Gráfico circular

34. Mapa de árbol

35. Gráfico de barras


Cinco, diagrama de relación de composición (Composición)

32. Tabla de gofres

Muestre la composición de cada grupo en un conjunto de datos más grande.

! pip install pywaffle#安装依赖包
# Reference: https://stackoverflow.com/questions/41400136/how-to-do-waffle-charts-in-python-square-piechart
from pywaffle import Waffle

# Import
df_raw = pd.read_csv("./datasets/mpg_ggplot2.csv")

# Prepare Data
df = df_raw.groupby('class').size().reset_index(name='counts')
n_categories = df.shape[0]
colors = [plt.cm.Set1(i / float(n_categories)) for i in range(n_categories)]

# Draw Plot and Decorate
fig = plt.figure(FigureClass=Waffle,
                 plots={
                     '111': {
                         'values':
                         df['counts'],
                         'labels': [
                             "{0} ({1})".format(n[0], n[1])
                             for n in df[['class', 'counts']].itertuples()
                         ],
                         'legend': {
                             'loc': 'upper left',
                             'bbox_to_anchor': (1.05, 1),
                             'fontsize': 12
                         },
                         'title': {
                             'label': 'Vehicles by Class',
                             'loc': 'center',
                             'fontsize': 18
                         }
                     },
                 },
                 rows=7,
                 colors=colors,
                 dpi=80,
                 figsize=(12, 9))
from pywaffle import Waffle
# Prepare Data
# By Class Data
df_class = df_raw.groupby('class').size().reset_index(name='counts_class')
n_categories = df_class.shape[0]
colors_class = [
    plt.cm.Set3(i / float(n_categories)) for i in range(n_categories)
]

# By Cylinders Data
df_cyl = df_raw.groupby('cyl').size().reset_index(name='counts_cyl')
n_categories = df_cyl.shape[0]
colors_cyl = [
    plt.cm.Set1(i / float(n_categories)) for i in range(n_categories)
]

# By Make Data
df_make = df_raw.groupby('manufacturer').size().reset_index(name='counts_make')
n_categories = df_make.shape[0]
colors_make = [
    plt.cm.tab20b(i / float(n_categories)) for i in range(n_categories)
]

# Draw Plot and Decorate
fig = plt.figure(
    FigureClass=Waffle,
    plots={
        '311': {
            'values':
            df_class['counts_class'],
            'labels': [
                "{1}".format(n[0], n[1])
                for n in df_class[['class', 'counts_class']].itertuples()
            ],
            'legend': {
                'loc': 'upper left',
                'bbox_to_anchor': (1.05, 1),
                'fontsize': 12,
                'title': 'Class'
            },
            'title': {
                'label': 'Vehicles by Class',
                'loc': 'center',
                'fontsize': 18
            },
            'colors':
            colors_class
        },
        '312': {
            'values':
            df_cyl['counts_cyl'],
            'labels': [
                "{1}".format(n[0], n[1])
                for n in df_cyl[['cyl', 'counts_cyl']].itertuples()
            ],
            'legend': {
                'loc': 'upper left',
                'bbox_to_anchor': (1.05, 1),
                'fontsize': 12,
                'title': 'Cyl'
            },
            'title': {
                'label': 'Vehicles by Cyl',
                'loc': 'center',
                'fontsize': 18
            },
            'colors':
            colors_cyl
        },
        '313': {
            'values':
            df_make['counts_make'],
            'labels': [
                "{1}".format(n[0], n[1])
                for n in df_make[['manufacturer', 'counts_make']].itertuples()
            ],
            'legend': {
                'loc': 'upper left',
                'bbox_to_anchor': (1.05, 1),
                'fontsize': 12,
                'title': 'Manufacturer'
            },
            'title': {
                'label': 'Vehicles by Make',
                'loc': 'center',
                'fontsize': 18
            },
            'colors':
            colors_make
        }
    },
    rows=9,
    dpi=80,
    figsize=(12, 14))

33. Gráfico circular

# Import
df_raw = pd.read_csv("./datasets/mpg_ggplot2.csv")
plt.figure(dpi=140)
# Prepare Data
df = df_raw.groupby('class').size()

# Make the plot with pandas
df.plot(kind='pie', subplots=True, figsize=(10, 10))
plt.title("Pie Chart of Vehicle Class - Bad")
plt.ylabel("")
plt.show()
# Import
df_raw = pd.read_csv("./datasets/mpg_ggplot2.csv")

# Prepare Data
df = df_raw.groupby('class').size().reset_index(name='counts')

# Draw Plot
fig, ax = plt.subplots(figsize=(12, 7),
                       subplot_kw=dict(aspect="equal"),
                       dpi=80)

data = df['counts']
categories = df['class']
explode = [0, 0, 0, 0, 0, 0.1, 0]


def func(pct, allvals):
    absolute = int(pct / 100. * np.sum(allvals))
    return "{:.1f}% ({:d} )".format(pct, absolute)


wedges, texts, autotexts = ax.pie(data,
                                  autopct=lambda pct: func(pct, data),
                                  textprops=dict(color="w"),
                                  colors=plt.cm.Paired.colors,
                                  startangle=140,
                                  explode=explode)

# Decoration
ax.legend(wedges,
          categories,
          title="Vehicle Class",
          loc="center left",
          bbox_to_anchor=(1, 0, 0.5, 1))
plt.setp(autotexts, size=10, weight=700)
ax.set_title("Class of Vehicles: Pie Chart")
plt.show()

Más sobre gráficos circulares:

34. Mapa de árbol

Similar al efecto de un gráfico circular, el tamaño del área refleja el tamaño de la variable.

!pip install squarify#安装依赖包
import squarify

# Import Data
df_raw = pd.read_csv("./datasets/mpg_ggplot2.csv")

# Prepare Data
df = df_raw.groupby('class').size().reset_index(name='counts')
labels = df.apply(lambda x: str(x[0]) + "\n (" + str(x[1]) + ")", axis=1)
sizes = df['counts'].values.tolist()
colors = [plt.cm.Set2(i / float(len(labels))) for i in range(len(labels))]

# Draw Plot
plt.figure(figsize=(10, 8), dpi=100)
squarify.plot(sizes=sizes, label=labels, color=colors, alpha=.8)

# Decorate
plt.title('Treemap of Vechile Class')
plt.axis('off')
plt.show()

35. Gráfico de barras

La altura de la columna representa el tamaño de la variable.

import random

# Import Data
df_raw = pd.read_csv("./datasets/mpg_ggplot2.csv")

# Prepare Data
df = df_raw.groupby('manufacturer').size().reset_index(name='counts')
n = df['manufacturer'].unique().__len__() + 1
all_colors = list(plt.cm.colors.cnames.keys())
random.seed(100)
c = random.choices(all_colors, k=n)

# Plot Bars
plt.figure(figsize=(12, 8), dpi=80)
plt.bar(df['manufacturer'], df['counts'], color=c, width=.5)
for i, val in enumerate(df['counts'].values):
    plt.text(i,
             val,
             float(val),
             horizontalalignment='center',
             verticalalignment='bottom',
             fontdict={
                 'fontweight': 500,
                 'size': 12
             })

# Decoration
plt.gca().set_xticklabels(df['manufacturer'],
                          rotation=60,
                          horizontalalignment='right')
plt.title("Number of Vehicles by Manaufacturers", fontsize=18)
plt.ylabel('# Vehicles')
plt.ylim(0, 45)
plt.show()

Más sobre histograma:

Útil, por favor "Me gusta" "Mirando" "Compartir"

Supongo que te gusta

Origin blog.csdn.net/qq_21478261/article/details/113765191
Recomendado
Clasificación