¡La forma más fácil! ! Generar gráfico de barras dinámico con python
Directorio de artículos
- ¡La forma más fácil! ! Generar gráfico de barras dinámico con python
-
- 1. Instale el paquete de terceros: bar_chart_race
- 2. Preparación de datos
- 3. Explicación de la función
- 4. Ejemplos detallados (copiar y usar)
-
- 4.1 Gráfico de barras básico
- 4.2 Histograma
- 4.3 Diagrama de clasificación
- 4.4 Limitar el número de barras
- 4.5 Orden de barras fijas
- 4.6 Eje fijo máximo
- 4.7 Establecer el número de fotogramas
- 4.8 Configuración de la duración del paso y el tiempo de permanencia
- 4.9 Agregar tiempo de inserción
- 4.10 Establecer propiedades de fuente
- 4.11 Personalizar atributos de barra
- 4.12 Agregar descripción de texto
- 4.13 Incrementar la barra vertical promedio
- 4.14 Máximo de barra vertical personalizada
- 4.15 Los colores del gráfico de barras no se repiten
- 5. Problemas encontrados
Recientemente, los gráficos de barras dinámicos son muy populares. En sitios de videos como la estación B, estos videos a menudo tienen millones de visitas. Hoy en día, usamos una biblioteca de terceros: bar_chart_race (versión 0.2) para generar gráficos de barras dinámicos; El efecto generado se muestra en la figura:
Problema: Descubrí que siguiendo las operaciones en los artículos populares actuales, habrá muchos errores , algunos de los cuales los resolví y otros no. Ahora registre el progreso actual aquí; los datos y procedimientos están en Aquí: haga clic para descargar ;
1. Instale el paquete de terceros: bar_chart_race
En primer lugar, debemos entender: solo la versión 0.2 admite gráficos de barras dinámicos, por lo que debemos asegurarnos de que la biblioteca de terceros que instalamos sea la versión 0.2;
desafortunadamente, el paquete de terceros que instalamos a través del comando pip install bar_chart_race es la versión 0.1. Tampoco se puede actualizar; por lo tanto, recomendamos descargar en github y luego instalar; los pasos de instalación son los siguientes:
-
En primer lugar, asegúrese de haber instalado el software github. De lo contrario, descárguelo aquí para Windows: https://git-scm.com/download/win , haga clic en su propia versión para descargarla y luego instálela; lo mismo ocurre con otros sistemas ~~
-
Después de instalar git, cambie al directorio que desea descargar en cmd y descargue:
git clone https://github.com/dexplo/bar_chart_race.git
Entre ellos, https://github.com/dexplo/bar_chart_race.git es su dirección de git;
el directorio que descargué aquí es :, laD:\PY_useful\3_python 基础
descarga está completa Después de eso, se generará una carpeta:bar_chart_race
-
Ingrese la carpeta en cmd, y luego ejecute :, una
python setup.py install
vez completada la instalación, le preguntará :, alFinished processing dependencies for bar-chart-race==0.2.0
ver esto, ¡demuestra que tenemos éxito!
2. Preparación de datos
Los datos deben cumplir las siguientes condiciones:
- Cada fila debe tener una sola fecha de datos;
- Cada columna es una categoría separada;
- El índice es preferiblemente datos de fecha (opcional);
- Los datos deben cambiarse al formato pandas.DataFrame;
Sitio web oficial https://www.dexplo.org/bar_chart_race/
, los ejemplos de sitios web oficiales son los siguientes:
fecha | Bélgica | China | Francia | Alemania | Iran | Italia | Países Bajos | España | Estados Unidos | Reino Unido |
---|---|---|---|---|---|---|---|---|---|---|
2020-04-08 | 2240 | 3337 | 10887 | 2349 | 3993 | 17669 | 2255 | 14792 | 14704 | 7111 |
2020-04-09 | 2523 | 3339 | 12228 | 2607 | 4110 | 18279 | 2403 | 15447 | 16553 | 7993 |
2020-04-10 | 3019 | 3340 | 13215 | 2767 | 4232 | 18849 | 2520 | 16081 | 18595 | 8974 |
2020-04-11 | 3346 | 3343 | 13851 | 2894 | 4357 | 19468 | 2653 | 16606 | 20471 | 9892 |
2020-04-12 | 3600 | 3343 | 14412 | 3022 | 4474 | 19899 | 2747 | 17209 | 22032 | 10629 |
Sin embargo, el sitio web oficial son ejemplos del uso de la df = bcr.load_dataset('covid19_tutorial')
carga, y si no estamos por encima del muro, no puede cargar los datos, los datos los pongo aquí para que todos practiquen: Haga clic para descargar los datos de entrenamiento ;
3. Explicación de la función
El módulo de terceros bar_chart_race tiene solo dos funciones para generar nuestro gráfico dinámico,
- Gráfico de barras dinámico :;
bar_chart_race.bar_chart_race()
A continuación se explica en detalle todos los parámetros de esta función: - Gráfico de líneas dinámicas
bar_chart_race.line_chart_race()
: similar al gráfico de barras anterior;
import bar_chart_race as bcr
import pandas
df=pd.read_csv('数据.csv',index_col=0) # 下载数据后,放在.py文件所在文件夹;
# 以下有 # 注释的参数,是我实际使用中发现并没有的;可是官网资料上有这些参数,不知道为什么~~
bcr.bar_chart_race(
df=df, # 第一个参数就是数据,这个数据格式必须是 pandas.DataFrame 格式,同时满足数据准备中所说的条件;
filename='bar_chart.mp4', # 这个参数是生成文件的名字,一般为.mp4 & .gif;
orientation='h', # 方向
sort='desc', # 排序
n_bars=6, # 限制条形图数量
fixed_order=False, # 固定标签
fixed_max=True, # 固定轴的最大值
steps_per_period=10, # 帧数设置
interpolate_period=False, # 插入时间
# label_bars=True, # 是否有label
bar_size=.95, # 设置bar宽度 取值 0~1 之间;
period_label={
'x': .99, 'y': .25, 'ha': 'right', 'va': 'center'},
# period_fmt='%B %d, %Y', # 日期的格式设置
period_summary_func=lambda v, r: {
'x': .99, 'y': .18,
's': r'Total weigth: {v.sum():,.0f}',
'ha': 'right', 'size': 8, 'family': 'Courier New'},
perpendicular_bar_func='median',
period_length=500,
# figsize=(5, 3),
# dpi=144,
# cmap='dark12',
title='COVID-19 Deaths by Country',
# title_size='',
# bar_label_size=7,
# tick_label_size=7,
shared_fontdict={
'family' : 'DejaVu Sans', 'color' : '.1'},
scale='linear',
writer=None,
fig=None,
bar_kwargs={
'alpha': .7},
filter_column_colors=False)
4. Ejemplos detallados (copiar y usar)
4.1 Gráfico de barras básico
import bar_chart_race as bcr
import pandas as pd
df=pd.read_csv('数据.csv',index_col=0)
bcr.bar_chart_race(df,filename='动态条形图.mp4')
El efecto es el siguiente:
4.2 Histograma
Usando orientation
parámetros del patrón de conversión, orientation
se pueden asignar dos valores h
y v
;
import bar_chart_race as bcr
import pandas as pd
df=pd.read_csv('数据.csv',index_col=0)
bcr.bar_chart_race(df,'动态柱状图.mp4',orientation='v')
El efecto es el siguiente:
4.3 Diagrama de clasificación
Por defecto, está ordenado en orden descendente. Cuando necesitemos ordenar en orden ascendente, use el parámetro:sort='asc'
import bar_chart_race as bcr
import pandas as pd
df=pd.read_csv('数据.csv',index_col=0)
bcr.bar_chart_race(df,'动态柱状图_升序.mp4',sort='asc')
El efecto es el siguiente:
4.4 Limitar el número de barras
Por defecto, se mostrarán todas las columnas, si necesitamos controlar el número, use el parámetro :, n_bars=6
donde el número 6 se puede cambiar a cualquier entero;
import bar_chart_race as bcr
import pandas as pd
df=pd.read_csv('数据.csv',index_col=0)
bcr.bar_chart_race(df,'动态柱状图_5条形图.mp4',n_bars=5)
El efecto es el siguiente:
4.5 Orden de barras fijas
Por defecto, el gráfico de barras estará ordenado en orden descendente, si queremos arreglar el orden, usemos el parámetro :, fixed_order
cámbielo a Verdadero o asigne una lista;
import bar_chart_race as bcr
import pandas as pd
df=pd.read_csv('数据.csv',index_col=0)
bcr.bar_chart_race(df,'动态柱状图_条形固定.mp4',fixed_order=['Apple', 'banana', 'watermelon', 'orange'])
El efecto es el siguiente:
4.6 Eje fijo máximo
Por defecto, el valor máximo de acuerdo con el eje de tiempo de conversión, si los parámetros fijos deseados: fixed_max=True
.
import bar_chart_race as bcr
import pandas as pd
df=pd.read_csv('数据.csv',index_col=0)
bcr.bar_chart_race(df,'动态条形图_固定轴的最大值.mp4',fixed_max=True)
El efecto es el siguiente:
4.7 Establecer el número de fotogramas
Por defecto, el número de fotogramas es 10, podemos aumentar este valor para suavizar la imagen, por supuesto, también se puede reducir;
import bar_chart_race as bcr
import pandas as pd
df=pd.read_csv('数据.csv',index_col=0)
bcr.bar_chart_race(df,'动态条形图_设置帧数.mp4',steps_per_period=24)
El efecto es el siguiente:
4.8 Configuración de la duración del paso y el tiempo de permanencia
import bar_chart_race as bcr
import pandas as pd
df=pd.read_csv('数据.csv',index_col=0)
bcr.bar_chart_race(df,'动态条形图_设置步长与停留时间.mp4',steps_per_period=20, period_length=200)
El efecto es el siguiente:
4.9 Agregar tiempo de inserción
import bar_chart_race as bcr
import pandas as pd
df=pd.read_csv('数据.csv',index_col=0)
bcr.bar_chart_race(df,'动态条形图_插入时间.mp4',interpolate_period=True)
4.10 Establecer propiedades de fuente
import bar_chart_race as bcr
import pandas as pd
df=pd.read_csv('数据.csv',index_col=0)
bcr.bar_chart_race(df,filename='动态条形图_设置字体属性.mp4',shared_fontdict={
'family': 'Helvetica', 'weight': 'bold','color': 'rebeccapurple'})
El efecto es el siguiente:
4.11 Personalizar atributos de barra
import bar_chart_race as bcr
import pandas as pd
df=pd.read_csv('数据.csv',index_col=0)
bcr.bar_chart_race(df,filename='动态条形图_定制条形属性.mp4',bar_kwargs={
'alpha': .2, 'ec': 'black', 'lw': 3})
El efecto es el siguiente:
4.12 Agregar descripción de texto
Esto, la investigación aún no ha tenido éxito, actualice más tarde ~
4.13 Incrementar la barra vertical promedio
import bar_chart_race as bcr
import pandas as pd
df=pd.read_csv('数据.csv',index_col=0)
bcr.bar_chart_race(df,filename='动态条形图_增加垂直bar平均值.mp4',perpendicular_bar_func='mean')
El efecto es el siguiente:
4.14 Máximo de barra vertical personalizada
import bar_chart_race as bcr
import pandas as pd
df=pd.read_csv('数据.csv',index_col=0)
# 自定义增加垂直bar
def func(values, ranks):
return values.max()
bcr.bar_chart_race(df,filename='动态条形图_增加垂直bar自定义最大值.mp4', perpendicular_bar_func=func)
El efecto es el siguiente:
4.15 Los colores del gráfico de barras no se repiten
import bar_chart_race as bcr
import pandas as pd
df=pd.read_csv('数据.csv',index_col=0)
bcr.bar_chart_race(df,filename='动态条形图_条形图颜色不重复.mp4',filter_column_colors=True)
El efecto es el siguiente:
5. Problemas encontrados
5.1 [error] AttributeError: module ‘sip‘ has no attribute ‘setapi‘
Descripción del problema: Importar informe de error bar_chart_race de importación Recientemente encontré un error al
importar el bar_chart_race
paquete: AttributeError: module'sip 'no tiene atributo'setapi'
Paquete importado:
import bar_chart_race as bcr
Simplemente ejecute la declaración importada, informará un error: AttributeError: module'sip 'no tiene atributo'setapi'
Solución:
Finalmente, encontré que el motivo de este error era que la versión de la biblioteca matplotlib era demasiado alta. La versión que informé era 3.3.2. No hay problema si la degrado a 3.3.0;
Desinstale primero:pip uninstall matplotlib
Instalar de nuevo:pip install matplotlib==3.3.0
¡problema resuelto! !
5.2 [Informar de error] IndexError: list index out of range
Descripción del problema: cuando la salida está en formato .gif (si está en formato .mp4, no se informará ningún error), se informará un error durante el tiempo de ejecución:IndexError: list index out of range
Solución: Descargar : descargue https://imagemagick.org/script/download.php
el software en el sitio, simplemente instálelo, pero esta URL es lenta para descargar, también puede hacer clic aquí para descargar ( hacer clic para descargar ); Descargar e instalar, recuerde verificar estos dos
elementos al instalar ; una vez completada la instalación, el problema está resuelto ! !
5.3 [informe de error] TypeError: bar_chart_race() got an unexpected keyword argument 'figsize'
Descripción del problema: al configurar de acuerdo con el ejemplo en el sitio web oficial, se encuentra que algunos parámetros no están en la función real, que se enumeran a continuación:
label_bars=True, # 是否有label
period_fmt='%B %d, %Y', # 日期的格式设置
figsize=(5, 3),
dpi=144,
cmap='dark12',
title_size='',
bar_label_size=7,
tick_label_size=7,
Los parámetros enumerados anteriormente no están incluidos en la función, y no sé por qué ~ Debido a que el artículo sobre este paquete de terceros, todos son un ejemplo del sitio web oficial de la traducción, y nadie realmente lo verificó, por lo que esta pregunta, si tiene Sabes la razón ~ Bienvenidos todos a decirme ~ ¡Gracias! !