1、安装最新的bar-chart-race包0.2版本
从GitHub上下载压缩包,将解压后的文件夹放置在项目的创建的–虚拟环境/lib/python3.7/site-packages目录下。
/dexplo/bar_chart_race
2、在虚拟环境下打开文件夹,命令行运行如下命令完成安装。
cd 你的项目地址/虚拟环境/lib/python3.7/site-packages/bar_chart_racepython setup.py install# 提示成功安装# Finished processing dependencies for bar-chart-race==0.2.0
3、安装ffmpeg
pip install ffmpeg
4、安装 ImageMagick
网站地址:/script/download.php#windows
直接下载安装即可
5、测试代码
import bar_chart_race as bcr#获取数据,两种方式1、df = bcr.load_dataset('covid19_tutorial') 此种方式对文件的放置位置有要求2、import pandas as pddf = pd.read_csv('D:/covid19_tutorial.csv',index_col='date') covid19_tutorial文件的具体位置bcr.bar_chart_race(df, 'covid19_horiz.gif')
6、bar-chart-race包的参数意义
bcr.bar_chart_race(df=df, filename='../docs/images/covid19_horiz.gif', #生成的条形图的放置位置orientation='h', #h条形图 v柱状图sort='desc', #降序,asc-升序n_bars=8, #设置最多能显示的条目数fixed_order=False, # 设置固定类目fixed_max=True, #固定数值轴,使其不发生动态变化 true-固定steps_per_period=20, #图像帧数。数值越小,越不流畅。越大,越流畅period_length=500, #设置帧率,单位时间默认为500ms 20帧的总时间是500msend_period_pause=0,#固定值比如年份的停留时间interpolate_period=False, period_label={'x': .98, 'y': .3, 'ha': 'right', 'va': 'center'}, #设置日期标签的时间格式period_template='%B %d, %Y', #设置日期标签的时间格式period_summary_func=lambda v, r: {'x': .98, 'y': .2, 's': f'Total deaths: {v.sum():,.0f}', 'ha': 'right', 'size': 11}, #添加动态文本,此处为数值总数统计perpendicular_bar_func='median', #添加垂直条,可选类型有平均值、分位数等colors='dark12', #设置柱状图颜色颜色,通过在「_colormaps.py」文件中添加颜色信息,即可自定义配置颜色title='COVID-19 Deaths by Country', #图表标题bar_size=.95, #条形图高度bar_textposition='inside',#条形图标签文字位置bar_texttemplate='{x:,.0f}', #条形图标签文字格式bar_label_font=7, #条形图标签文字大小tick_label_font=7, #坐标轴标签文字大小tick_template='{x:,.0f}',#坐标轴标签文字格式shared_fontdict=None, #全局字体属性scale='linear', fig=None, writer=None, bar_kwargs={'alpha': .7},#条形图属性,可以设置透明度,边框等fig_kwargs={'figsize': (6, 3.5), 'dpi': 144},#figsize-设置画布大小,默认(6, 3.5),dpi-图像分辨率,默认144filter_column_colors=False#去除条形图重复颜色true去除 )
7、修改matplotlib配置使得动态条形图能够显示中文
在C:\Windows\Fonts中找一种中文字体,将其拷贝至matplotlib字体文件夹,例如:matplotlib/mpl-data/fonts/ttf,将STXIHEI.ttf拷贝到ttf文件夹中,通过如下代码可以找到matplotlib文件夹。
import matplotlibmatplotlib.matplotlib_fname()#输出 'E:\\Python\\WPy64-3770\\python-3.7.7.amd64\\lib\\site-packages\\matplotlib\\mpl-data\\matplotlibrc'
修改配置文件matplotlibrc 同样在matplotlib/mpl-data/fonts目录下面,修改下面三项配置:
font.family : sans-serif 删除最前面的#font.sans-serif : STXIHEI, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif 删除最前面的#,同时将新的中文字体添加其中axes.unicode_minus:False,删除最前面的#,解决负号'-'显示为方块的问题
最重要的一步!!改了配置之后并不会生效,需要重新加载字体,在Python中运行如下代码即可:
from matplotlib.font_manager import _rebuild_rebuild() #reload一下
成功显示中文字体啦!
博文参考:
/weixin_45092662/article/details/109013721
/question/25404709
公众号:大数据分析和人工智能-刷爆全网的动态条形图,原来5行Python代码就能实现!