使用matplotlib、plotnine、pyecharts绘制柱状图

我们用3种方法绘制一下柱状图(matplotlib,plotnine,pyecharts)

首先我们导入数据

import pandas as pd 

GDP=pd.DataFrame({'Province':['北京','上海','广东','江苏','重庆','天津'],
                  'GDP':[2.80,3.01,8.99,8.59,1.95,1.86]
                 })
GDP

使用matplotlib、plotnine、pyecharts绘制柱状图_第1张图片

matplotlib

matplotlib是学习python数据分析必定接触到的一个库,是用来绘图的基础的库,也是其他各个可视化库的基本库之一。

## 导入matplotlib
import matplotlib.pyplot as plt 
%matplotlib inline
plt.style.use('ggplot') ## 设置风格
plt.rcParams['font.sans-serif']=['MicroSoft YaHei'] ## 设置字体
plt.rcParams['axes.unicode_minus']=False ## 设置显示负号

plt.figure(figsize=(12,7)) ## 设置画布大小
plt.bar(x=GDP.Province, ## 导入x轴数据
        height=GDP.GDP, ## 导入y轴数据
        color='steelblue' ## 设置颜色
       )
plt.xticks(size=15,color='black') ## 设置x轴标签字体大小和颜色
plt.yticks(size=12,color='black') ## 设置y轴标签字体大小和颜色
plt.ylabel('GDP(万亿)',size=18,color='black') ## 设置y轴标题字体大小和颜色
for x,y in enumerate(GDP.GDP): ## 设置数据标签
    plt.text(x,y+0.1,y,ha='center',fontdict=dict(size=15))
plt.title('2017年度各城市GDP',size=20) ## 设置图表标题

使用matplotlib、plotnine、pyecharts绘制柱状图_第2张图片

这个包相对于之前有一次更新,之前设置里面的x轴数据left参数变成了x,也是更加贴近于用户的使用习惯。

而要将垂直柱状图转为水平柱状图,则需要把bar改为barh,其中的x,y正好调换一下就可以。

plt.figure(figsize=(12,7)) ## 设置画布大小
plt.barh(y=GDP.Province, ## 导入y轴数据
         width=GDP.GDP, ## 导入x轴数据
         color='steelblue' ## 设置颜色
       )
plt.xticks(size=12,color='black') ## 设置x轴标签字体大小和颜色
plt.yticks(size=15,color='black') ## 设置y轴标签字体大小和颜色
plt.xlabel('GDP(万亿)',size=18,color='black') ## 设置x轴标题字体大小和颜色
for x,y in enumerate(GDP.GDP): ## 设置数据标签
    plt.text(y,x+0.1,y,va='center',fontdict=dict(size=15))
plt.title('20217年度各城市GDP',size=20) ## 设置图表标题

使用matplotlib、plotnine、pyecharts绘制柱状图_第3张图片

plotnine

R语言的绘图在数据分析的语言里一直是比较强的,而plotnine是德国的一个大神模仿R语言里面的ggplot2,在python库里开发的一个很强大的可视化库,可以绘制出很好看的库,相对于matplotlib更易上手,也更好调试。而且更有意思的是,由于plotnine库相对小众,许多查不到方法的可以直接去查询R语言里面的一些方法,基本上也可以对接的上。

from plotnine import * ##导入plotnine

(
ggplot(GDP,aes(x='Province',y='GDP')) ## 导入数据
+geom_bar(stat='identity',width=0.65,fill='steelblue') ## 绘制柱状图、宽度和颜色
+xlim(GDP.sort_values('GDP',ascending=False)['Province']) ## 设置x轴排序-按照y轴数据降序
+geom_text(aes(label='GDP'),va='bottom') ## 设置数据标签
+ylab('GDP(万亿)') # 设置y轴标题
+ggtitle('2017年度各城市GDP') ## 设置图表标题
+theme(text=element_text(family='MicroSoft YaHei'), ## 设置字体
       figure_size=(9,5), ## 设置画布大小
       title=element_text(size=15), ## 设置标题大小
       axis_title_x=element_blank(), ## 设置x轴标题为空
       axis_text_x=element_text(size=10,color='black'), ## 设置x轴标签字体大小和颜色
       axis_title_y=element_text(size=13), ## 设置y轴标题字体大小
       axis_text_y=element_text(size=9)  ## 设置y轴标签字体大小
    )
)

使用matplotlib、plotnine、pyecharts绘制柱状图_第4张图片

要将垂直柱状图转为水平柱状图,比matplotlib更简单,在theme前加一个coord_flip()即可,同时把设置theme的时候将"x"改为"y",数据升序排列。

(
ggplot(GDP,aes(x='Province',y='GDP'))
+geom_bar(stat='identity',width=0.65,fill='steelblue')
+xlim(GDP.sort_values('GDP')['Province']) ## 升序
+geom_text(aes(label='GDP'),ha='left')
+ylab('GDP(万亿)')
+coord_flip() ## 转为水平柱状图
+ggtitle('2017年度各城市GDP')
+theme(text=element_text(family='MicroSoft YaHei'),
       figure_size=(9,5),
       title=element_text(size=15),
       axis_title_y=element_blank(),
       axis_text_x=element_text(size=10,color='black'),
       axis_title_x=element_text(size=13),
       axis_text_y=element_text(size=9)
    )
)

使用matplotlib、plotnine、pyecharts绘制柱状图_第5张图片

pyecharts

Echarts是百度开源的一个可视化工具,被几个大神对接到python上面开发出了pyecharts库。这个库我现在也在学习,是个相当强大的可视化工具,不过其中有很多内容比较复杂,但是图表实现起来确实好看。

from pyecharts import options as opts  ## 导入配置项,用来配置图像的各个表现
from pyecharts.charts import Bar  ## 导入柱状图

c=(
    Bar(init_opts=opts.InitOpts(bg_color='white')) ## 设置背景色
    .add_xaxis(GDP.sort_values('GDP',ascending=False)['Province'].to_list()) ## 导入数据,降序,列表
    .add_yaxis("",GDP.sort_values('GDP',ascending=False)['GDP'].to_list(),color='steelblue') ## 导入y轴数据
    .set_global_opts( ## 设置全局变量
        title_opts=opts.TitleOpts( ## 设置标题
            title='2017年度各城市GDP',
            pos_left='center', ## 标题位置
            title_textstyle_opts=opts.TextStyleOpts( ## 设置标题格式
                color='black', ## 标题字体颜色
                font_family='Microsoft YaHei', ## 设置标题字体
                font_size=25 ## 设置标题字体大小
            )
        ),
        xaxis_opts=opts.AxisOpts( ## 设置x轴
            axislabel_opts=opts.LabelOpts( ## 设置x轴标签
                font_family='Microsoft YaHei', ## 标题字体
                font_size=15, ## 设置标题字体大小
                color='black' ## 设置标题字体颜色
            )
        ),
        yaxis_opts=opts.AxisOpts( ## 设置y轴
            name="GDP(万亿)", ## 设置y轴标题
            name_textstyle_opts=opts.TextStyleOpts( ## 设置y轴标题格式
                color='black',
                font_family='Microsoft YaHei',
                font_size=18
            ),
            name_location='center' ## 设置y轴标题位置
        )
    )
    .set_series_opts( ## 设置系列变量
        label_opts=opts.LabelOpts( ## 设置数据标签
            font_family='Microsoft YaHei',
            font_size=12,
            color='black'
        )
    )
)
c.render_notebook() ## 展示图表

使用matplotlib、plotnine、pyecharts绘制柱状图_第6张图片

要将垂直柱状图转为水平柱状图,比前两个都要简单,在最后加一个参数reversal_axis()即可,不需要设置其他东西。

c=(
    Bar(init_opts=opts.InitOpts(bg_color='white'))
    .add_xaxis(GDP.sort_values('GDP')['Province'].to_list())##设置数据升序
    .add_yaxis("",GDP.sort_values('GDP')['GDP'].to_list(),color='steelblue')
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title='2017年度各城市GDP',
            pos_left='center',
            title_textstyle_opts=opts.TextStyleOpts(
                color='black',
                font_family='Microsoft YaHei',
                font_size=25
            )
        ),
        yaxis_opts=opts.AxisOpts(
            axislabel_opts=opts.LabelOpts(
                font_family='Microsoft YaHei',
                font_size=15,
                color='black'
            )
        ),
        xaxis_opts=opts.AxisOpts(
            name="GDP(万亿)",
            name_textstyle_opts=opts.TextStyleOpts(
                color='black',
                font_family='Microsoft YaHei',
                font_size=18
            ),
            name_location='center'
        )
    )
    .set_series_opts(
        label_opts=opts.LabelOpts(
            font_family='Microsoft YaHei',
            font_size=12,
            color='black',
            position='right'
        )
    )
    .reversal_axis() ## 转为水平柱状图
)
c.render_notebook()

使用matplotlib、plotnine、pyecharts绘制柱状图_第7张图片
以上就是使用python不同的3个库绘制柱状图的方法,谢谢大家阅读。

你可能感兴趣的:(笔记,学习交流,python,可视化,echarts)