失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Win10下Python实现动态条形图(附解决matplotlib画图中文乱码问题)

Win10下Python实现动态条形图(附解决matplotlib画图中文乱码问题)

时间:2023-09-25 06:54:17

相关推荐

Win10下Python实现动态条形图(附解决matplotlib画图中文乱码问题)

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代码就能实现!

如果觉得《Win10下Python实现动态条形图(附解决matplotlib画图中文乱码问题)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。