❝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)
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"