Python数据可视化:5种绘制柱状图表的方法(附源码)

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

以下文章来源于数据Magic,作者我不是小样

前言

python里面有很多优秀的可视化库,matplotlib,seaborn,plotnine,pyecharts,bokeh,plotly,mapbox,geoplotlib,甚至专门用来数据处理的pandas都可以做一些简单的绘图。今天我们就用五种方法来绘制柱状图,分别是matplotlib,seaborn,plotnine,pyecharts,pandas。

首先我们先导入数据。

import pandas as pd  ## 导入pandas库

list1 = [
            "名字很长的X轴标签1",
            "名字很长的X轴标签2",
            "名字很长的X轴标签3",
            "名字很长的X轴标签4",
            "名字很长的X轴标签5"
        ]


list2 = [12,23,33,3,33]

list3 = [3,21,5,52,43]


data = pd.concat(
        [
        pd.concat([pd.Series(list1,name='x'),pd.Series(list2,name='value'),pd.Series(['product1']*5,name='product')],axis=1),
        pd.concat([pd.Series(list1,name='x'),pd.Series(list3,name='value'),pd.Series(['product2']*5,name='product')],axis=1)
        ]
)

 

Python数据可视化:5种绘制柱状图表的方法(附源码)

 

一、matplotlib

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

import matplotlib.pyplot as plt  # 导入绘图库

# 设置绘图直接显示
%matplotlib inline  

# 设置绘图的整体表现
plt.style.use('ggplot')  # 设置绘图主题为 ggplot
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置图像字体为黑体,同时可以显示中文
plt.rcParams['axes.unicode_minus'] = False  # 设置显示负号

# 设置画布大小
plt.figure(figsize=(12, 7))

# 绘制柱状图--堆积柱状图
# 绘制下面的图
plt.bar(
    left = data.x.unique(), ## 设置x轴内容
    height = data.value[data['product'] == 'product1'],  ## 设置y轴内容
    label = 'product1'  ## 设置标签
)

# 绘制上面的图
plt.bar(
    left = data.x.unique(), ## 设置x轴内容
    height = data.value[data['product'] == 'product2'],  ## 设置y轴内容
    bottom = data.value[data['product'] == 'product1'],  ## 设置上面的图以下面的图的数据为底
    label = 'product2'  ## 设置标签
    )

## 设置图例标签,标签位置为上面中部,文字大小为15,图例是平铺(图例按两列排,即在一行)
plt.legend(loc='upper center', fontsize=15, ncol=2)

 

Python数据可视化:5种绘制柱状图表的方法(附源码)

 

我们这样就绘制出了一张堆积柱状图,其实matplotlib绘制柱状图是比较简单的,难点就在于绘制堆积柱状图需要绘制多次,分别以前一个图的顶部为下一个图的底部,这样就可以得到一个堆积柱状图了。

 

二、seaborn

seaborn是基于matplotlib而做出来的一个可视化的封装库,相对于matplotlib的优点在于可以用比matplotlib更短的代码实现比较复杂的图像,缺点在于无法进行更强大的定制。

from plotnine import *  ## 导入plotnine库

## 绘制前加括号
(
    ggplot(data,aes(x='x',y='value',fill='product')) ## 数据对象
    + geom_bar(stat='identity',width=0.5) ## 绘制柱状图的API
    + theme(  ## 对绘图的表现进行调整
            text = element_text(family = "SimHei"),  ## 设置黑体,可以显示中文
            legend_direction ='horizontal',  ## 图例水平呈现
            legend_title = element_blank(),  ## 图例标题不显示
            legend_background = element_rect('none'),  ##  图例没有背景色
            legend_position = (0.52,0.83),  ## 设置图例位置
            figure_size = (9,5),  ##  画布的大小
            axis_title_x = element_blank(),  ## X轴标题为空
            axis_title_y = element_blank()  ## Y轴标题为空
           )
)

 

Python数据可视化:5种绘制柱状图表的方法(附源码)

 

如果用matplotlib绘制分组柱状图,就需要与绘制堆积柱状图一样的方法,绘制多次,以前一个图的后部作为后一个图的前部,而用seaborn就可以用一行代码就可以实现,也不需要指定颜色和宽度,可以以一个比较合理的宽度进行显示。

当然,seaborn绘图也有其限制,如上图的堆积柱状图就无法绘制出来。

Python数据可视化:5种绘制柱状图表的方法(附源码)

 

三、plotnine

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

之前也有文章介绍了plotnine的一些使用方法:plotnine绘制基本图像,plotnine绘制复杂图像,plotnine的主题库,大家可以看看。

from plotnine import *  ## 导入plotnine库

## 绘制前加括号
(
    ggplot(data,aes(x='x',y='value',fill='product')) ## 数据对象
    + geom_bar(stat='identity',width=0.5) ## 绘制柱状图的API
    + theme(  ## 对绘图的表现进行调整
            text = element_text(family = "SimHei"),  ## 设置黑体,可以显示中文
            legend_direction ='horizontal',  ## 图例水平呈现
            legend_title = element_blank(),  ## 图例标题不显示
            legend_background = element_rect('none'),  ##  图例没有背景色
            legend_position = (0.52,0.83),  ## 设置图例位置
            figure_size = (9,5),  ##  画布的大小
            axis_title_x = element_blank(),  ## X轴标题为空
            axis_title_y = element_blank()  ## Y轴标题为空
           )
)

 

Python数据可视化:5种绘制柱状图表的方法(附源码)

 

plotnine可以设置很多参数,而且相对matplotlib这些参数也很多都清晰易懂,绘制出来的图也是简单大气,我在前面matplotlib的绘制加入的ggplot主题同样也是matplotlib里面模仿R语言ggplot库的。

不过plotnine的缺点主要就是相对小众,遇到的很多问题其实都需要查好久,而且目前也不是很完善,比如饼图就无法绘制,但依旧无法遮盖这个库的优秀。

四、pyecharts

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


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

c = (
    Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) ## 绘制柱状图,设置主题为 LIGHT
    .add_xaxis(list(data.x.unique()))  ## 导入x轴数据
    .add_yaxis(
        "product1",  ## 设置第1组数据图例
        list(data.value[data['product']=='product1']),  ## 导入第1组数据
        stack="123",  ## 设置statck
        category_gap="50%"  ## 设置柱状图的宽度比例
        )
    .add_yaxis(
        "product2", ## 设置第2组数据图例
        list(data.value[data['product']=='product2']),  ## 导入第2组数据
        stack="123",  ## 设置statck
        category_gap="50%"  ## 设置柱状图的宽度比例
        )
    .set_series_opts( ## 设置系列配置项
        label_opts=opts.LabelOpts(is_show=False)  ## 设置数据标签不显示
    )
    .set_global_opts(  ## 配置全局配置项
        ## 由于X轴内容比较长,设置一个倾斜,解决x轴标签内容过长的问题
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15))
    )
    .render("stack_bar_percent.html")  ## 保存为html格式
)

Python数据可视化:5种绘制柱状图表的方法(附源码)

 

Python数据可视化:5种绘制柱状图表的方法(附源码)

 

pyecharts可以实现很好看的图表显示,而且配置也很全,最关键的是,pyecharts可以以动态可选择的展示。

五、pandas

pandas是python数据处理里最常用的一个库,学习python数据分析绝对绕不开的一个库。不仅仅是数据处理的简便,在pandas里还集成了一些可视化的接口,实现简单的数据图表。

先将数据转换成我们可以作图的格式

data2=pd.concat(
    [
        data[['x']][data['product']=='product1'],
        data[['value']][data['product']=='product1'].rename(columns={'value':'product1'}),
        data[['value']][data['product']=='product2'].rename(columns={'value':'product2'})
    ],axis=1
)

Python数据可视化:5种绘制柱状图表的方法(附源码)

 

然后使用新生成的data2作图。

data2.plot(
    kind='bar', ## 设置绘图的形状为柱状图
    x='x',  ## 设置x轴内容
    stacked=True,  ## 设置是否为堆积柱状图
    figsize=(12,7),  ## 设置画布大小
    rot=15  ## 设置x轴内容角度
    )

## 设置图例标签,标签位置为上面中部,文字大小为15,图例是平铺(图例按两列排,即在一行)
plt.legend(loc='upper center',fontsize=15,ncol=2)

Python数据可视化:5种绘制柱状图表的方法(附源码)

 

pandas作图的优势就在于可以直接用pandas里的API进行作图,缺点就在于无法定制更多的可视化内容,只能做一些简单的图表。

以上就是使用python不同的5个库绘制柱状图的方法,谢谢大家阅读。

### 回答1: Python数据可视化是一强大的工具,可以帮助我们更好地理解和分析数据。本指南将介绍如何使用Python绘制专业图,包括线图、散点图、柱状图、饼图、热力图等。我们将使用Python的常用数据可视化库,如Matplotlib、Seaborn和Plotly等。通过本指南,您将学习如何选择合适的图类型、调整图样式、添加标签和注释等技巧,以及如何将图嵌入到网页或报告中。无论您是数据分析师、科学家、工程师还是学生,本指南都将为您提供有用的技能和知识,帮助您更好地展示和传达数据。 ### 回答2: Python是一个功能强大且灵活的编程语言,可以用于数据处理和可视化。由于其易用性和广泛的社区支持,Python成为了数据科学家、研究人员和工程师最喜欢的编程语言之一。Python提供了一些非常强大的库,如Matplotlib,Seaborn等,可以绘制几乎所有类型的图Python数据可视化之美:专业图绘制指南是一本教授如何使用Python绘制的书籍。它旨在帮助初学者和专业人士创建专业的图形,以便更好地理解和传达数据。以下是本书的一些要点。 首先,本书介绍了数据可视化的原则和最佳实践。在这里,作者讨论了数据可视化的目的和优点,以及如何选择最佳的可视化工具。 其次,本书提供了一些基本的绘图技巧,如创建柱形图、线形图、散点图和饼图等。此外,还介绍了如何添加标签、颜色和其他元素,以使图更具吸引力和专业性。 然后,本书介绍了一些高级绘图技巧,如处理时间序列数据、创建多个子图和使用Seaborn绘图库。这些技术有助于创建更复杂和专业的图。 最后,本书提供了许多实用的例子来概述如何应用这些技术来解决真实的数据科学问题。这些例子包括如何分析数据并识别趋势、如何可视化预测结果,以及如何使用地理信息系统(GIS)数据。 总的来说,Python数据可视化之美:专业图绘制指南是一本非常实用、丰富和易于理解的书籍。无论您是学生、研究人员、工程师还是任何想要使用Python进行数据可视化的人,都可以从本书中受益。它提供了广泛的教程和实例,使您可以轻松创建各类型的图,同时增强您对数据的理解。 ### 回答3: 数据可视化数据分析和处理工作流程中非常重要的一部分。由于很多数据分析工程师使用Python进行分析,因此掌握Python数据可视化技术非常有必要。Python数据可视化之美:专业图绘制指南提供了广泛的数据可视化技术,帮助用户将数据转换为易于读取的图形。 Python数据可视化之美:专业图绘制指南提供了许多常见图绘制方法,包括散点图、折线图、柱状图、饼图、分布图等等。这些方法被精细地整合在几个包中,例如Matplotlib、Seaborn等等。例如,Seaborn可以轻松制作双变量的比较图,使得预测模型的评估更容易,而Matplotlib则可以定制更多的视觉效果,创造更精美的图Python数据可视化之美:专业图绘制指南不仅提供了单一的图绘制方法,而且介绍了如何绘制多个图并将其组合在一起。例如,可以将散点图和折线图组合在一起来展示两个变量之间的关系,并可以在同一张图上显示多个系列。这些技术使得制作复杂的图变得非常容易,并且可以将多个图组合在一起分享。 Python数据可视化之美:专业图绘制指南的优点不仅在于提供了普通数据分析工程师经常使用的图绘制方法,还在于包括一些复杂的方法,例如制作3D图、热图、动态图和交互式图。这些复杂的图非常适合高级数据分析操作和数据科学项目,可以帮助用户更好地理解数据。 总之, Python数据可视化之美:专业图绘制指南是给人们在数据分析工程师领域内提供好用和强大工具的一本书。它提供了许多有用的技术和工具,使得数据可视化过程变得更加简单、容易。这个书的内容可以为那些使用Python进行大规模数据库处理的数据分析工程师提供非常有价值的帮助,而它也适合那些处于数据科学学习阶段的初学者。无论是工程师还是初学者,Python数据可视化之美:专业图绘制指南都是非常有益的一本书。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值