Python - matplotlib 数据可视化

在许多实际问题中,经常要对给出的数据进行可视化,便于观察。

今天专门针对Python中的数据可视化模块--matplotlib这块内容系统的整理,方便查找使用。

本文来自于对《利用python进行数据分析》以及网上一些博客的总结。

1  matplotlib简介

matplotlib是Pythom可视化程序库的泰斗,经过几十年它仍然是Python使用者最常用的画图库。有许多别的程序库都是建立在它的基础上或直接调用它,比如pandas和seaborn就是matplotlib的外包,

它们让你使用更少的代码去使用matplotlib的方法。Gallery页面中有上百幅缩略图,打开之后都有源程序,非常适合学习matplotlib。

2  图和子图的建立

2.1  导入matplotlib

import matplotlib.pyplot as pltimport numpy as np

  

2.2  建立图和子图方式一

plt.plot( )会在最近的一个图上进行绘制

from numpy.random import randn
fig = plt.figure(figsize = (8,4))    #设置图的大小
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,1,2)
ax3.plot(randn(50).cumsum(),‘k--‘)   # plt.plot(randn(50).cumsum(),‘k--‘)等效
ax1.hist(randn(100),bins = 10, color = ‘b‘, alpha = 0.3)      #bins 分成多少间隔   alpha 透明度
ax2.scatter(np.arange(30),np.arange(30) + 3*randn(30))
plt.show()

2.3 建立子图方式二

from numpy.random import randn
fig, axes = plt.subplots(2,2)                               #以数组方式访问
t = np.arange(0., 5., 0.2)
axes[0,0].plot(t, t, ‘r-o‘, t, t**2, ‘bs‘, t, t**3, ‘g^‘)   #同时绘制多条曲线
axes[1,1].plot(randn(40).cumsum(),‘b--‘)
plt.show()

 

2.4 主题设置

使用style.use()函数

df_iris = pd.read_csv(‘../input/iris.csv‘)
plt.style.use(‘ggplot‘)    #‘fivethirtyeight‘,‘ggplot‘,‘dark_background‘,‘bmh‘
df_iris.hist(‘sepal length‘)
plt.show()

 

3  颜色、标记、线型、刻度、标签和图例

from numpy.random import randn
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
ax1.plot(randn(30).cumsum(),color = ‘b‘,linestyle = ‘--‘,marker = ‘o‘,label = ‘$cumsum$‘)  # 线型  可以直接‘k--o‘
ax1.set_xlim(10,25)
ax1.set_title(‘My first plot‘)
ax1.set_xlabel(‘Stages‘)
plt.legend(loc = ‘best‘)           #把图放在不碍事的地方  xticks([])设置刻度
plt.show()

  

等价于下面的代码:

from numpy.random import randn
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
ax1.plot(randn(30).cumsum(),color = ‘b‘,linestyle = ‘--‘,marker = ‘o‘,label = ‘$cumsum$‘)   #图标可以使用latex内嵌公式
plt.xlim(10,25)                   #plt.axis([10,25,0,10])对x,y轴范围同时进行设置
plt.title(‘My first plot‘)
plt.xlabel(‘Stages‘)
plt.legend(loc = ‘best‘)
plt.show()

  

4  pandas中的绘图函数

在pandas中,我们具有行标签,列标签以及分组信息。这也就是说,要制作一张完整的图表,原本需要一大堆的matplotlib代码,现在只需一两条简洁的语句就可以了。

pandas有很多能够利用DataFrame对象数据组织特点来创建标准图表的高级绘图方法。

4.1  线型图

from numpy.random import randn
fig, axes = plt.subplots(1,2)
s = pd.Series(randn(10).cumsum(),index = np.arange(0,100,10))
s.plot(ax = axes[0])   # ax参数选择子图  

df = pd.DataFrame(randn(10,3).cumsum(0),columns = [‘A‘,‘B‘,‘C‘],index = np.arange(0,100,10))
df.plot(ax = axes[1])
plt.show()

 

4.2 柱状图

from numpy.random import rand
fig, axes = plt.subplots(1,2)
data = pd.Series(rand(16),index = list(‘abcdefghijklmnop‘))
data.plot(kind = ‘bar‘, ax = axes[0], color = ‘b‘, alpha = 0.7)    #kind选择图表类型  ‘bar‘ 垂直柱状图
data.plot(kind = ‘barh‘, ax = axes[1], color = ‘b‘, alpha = 0.7)   # ‘barh‘ 水平柱状图
plt.show()

  

from numpy.random import rand
fig, axes = plt.subplots(1,2)
data = pd.DataFrame(rand(6,4),
                    index = [‘one‘,‘two‘,‘three‘,‘four‘,‘five‘,‘six‘],
                    columns = pd.Index([‘A‘,‘B‘,‘C‘,‘D‘], name = ‘Genus‘))
data.plot(kind = ‘bar‘, ax = axes[0], alpha = 0.5)
data.plot(kind = ‘bar‘, ax = axes[1], stacked = True, alpha = 0.5)
plt.show()

此外,柱状图有一个非常不错的用法,利用value_counts( )图形化显示Series中各值的出现概率,比如s.value_counts( ).plot(kind = ‘bar‘)。

4.3 直方图和密度图

from numpy.random import randn
fig, axes = plt.subplots(1,2)
data = pd.Series(randn(100))
data.hist(ax = axes[0], bins = 50)       #直方图
data.plot(kind = ‘kde‘, ax = axes[1])    #密度图
plt.show()

 其实可以一次性制作多个直方图,layout参数的意思是将两个图分成两行一列,如果没有这个参数,默认会将全部的图放在同一行。

df_iris = pd.read_csv(‘../input/iris.csv‘)
columns = [‘sepal length‘,‘sepal width‘,‘petal length‘,‘petal width‘]
df_iris.hist(column=columns, layout=(2,2))
plt.show()

  

4.4 箱型图

箱型图是基于五数概括法(最小值,第一个四分位数,第一个四分位数(中位数),第三个四分位数,最大值)的数据的一个图形汇总,还需要用到四分位数间距IQR = 第三个四分位数 - 第一个四分位数。

df_iris = pd.read_csv(‘../input/iris.csv‘)  #[‘sepal length‘,‘sepal width‘,‘petal length‘,‘petal width‘,‘class‘]
sample_size = df_iris[[‘petal width‘,‘class‘]]
sample_size.boxplot(by=‘class‘)
plt.xticks(rotation=90)                     #将X轴的坐标文字旋转90度,垂直显示
plt.show()

  

5  参考资料链接

原文地址:https://www.cnblogs.com/Allen-rg/p/8870131.html

时间: 2024-10-12 19:14:32

Python - matplotlib 数据可视化的相关文章

【Data Visual】一文搞懂matplotlib数据可视化

一文搞懂matplotlib数据可视化 作者:白宁超 2017年7月19日09:09:07 摘要:数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息.但是,这并不就意味着数据可视化就一定因为要实现其功能用途而令人感到枯燥乏味,或者是为了看上去绚丽多彩而显得极端复杂.为了有效地传达思想概念,美学形式与功能需要齐头并进,通过直观地传达关键的方面与特征,从而实现对于相当稀疏而又复杂的数据集的深入洞察.然而,设计人员往往并不能很好地把握设计与功能之间的平衡,从而创造出华而不实的数据可视化形式,

谈谈Python实战数据可视化之pygal模块(实战篇)

前沿 通过上一节谈谈Python实战数据可视化之pygal模块(基础篇)的学习,我们对pygal模块的使用有了初步的了解,本节将以实战项目来加深pygal模块的使用.从网上可以下载JSON格式的人口数据,并使用json模块来处理它们,pygal模块提供了一个适合初学者使用的地图创建工具,我们将使用它来对人口数据进行可视化,以探索全球人口的分布情况.针对JSON格式的人口数据文件,可以通过谈谈Python实战数据可视化之matplotlib模块(实战篇)章节的配套资源来下载.对于本人在学习和编码过

谈谈Python实战数据可视化之pyplot模块

前沿 Python提供了很多模块用于数据可视化,其中有matplotlib.pygal.我参考网上热门书籍<Python编程从入门到实战>,在测试与学习过程中遇到的些许问题加以解决,才写下这一项目实战的心得,对于Python基础部分就不细讲,主要是项目核心要点和解决方案的描述.本小节先讲述pyplot模块的基本使用. 新手的建议 针对新手,真心觉得不要直接使用Python下载来的IDLE来开发,因为功能太少了,也不好使用.我的建议是对于Python初学者,先安装Anaconda,这是一个基于P

Python图表数据可视化Seaborn:3. 线性关系| 时间线| 热图

1. 线性关系数据可视化 lmplot() import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns % matplotlib inline sns.set_style("darkgrid") sns.set_context("paper") # 设置风格.尺度 import warnings warnings.filterwarnings

Python图表数据可视化Seaborn:2. 分类数据可视化

1. 分类数据可视化 - 分类散点图 stripplot() / swarmplot() import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns % matplotlib inline sns.set_style("whitegrid") sns.set_context("paper") # 设置风格.尺度 import warnings

基于Python的数据可视化库pyecharts介绍

什么是pyecharts? pyecharts 是一个用于生成 Echarts 图表的类库. echarts 是百度开源的一个数据可视化 JS 库,主要用于数据可视化.pyecharts 是一个用于生成 Echarts 图表的类库.实际上就是 Echarts 与 Python 的对接. 使用 pyecharts 可以生成独立的网页,也可以在 flask , Django 中集成使用.pyecharts包含的图表 Bar .Bar3D.Boxplot.EffectScatter .Funnel.G

Python进行数据可视化的9种常见方法,总有一种是你要用的

其实利用 Python 可视化数据并不是很麻烦,因为 Python 中有两个专用于可视化的库 matplotlib 和 seaborn 能让我们很容易的完成任务. 我们用 Python 可以做出哪些可视化图形? 当你给别人一个表格比如: 这个表给别人看起来,既不舒服,也不好观看.最最最最最最重要的一点就是low! 在学习过程中有什么不懂得可以加我的 python学习交流扣扣qun,784758214 群里有不错的学习视频教程.开发工具与电子书籍. 与你分享python企业当下人才需求及怎么从零基

Python 金融数据可视化(两列数据的提取//分别画//双坐标轴//双图//两种不同的图)

import matplotlib as mpl import numpy as np import matplotlib.pyplot as plt np.random.seed(2000) y = np.random.standard_normal((20,2)) # print(y) ''' 不同的求和 print(y.cumsum()) print(y.sum(axis=0)) print(y.cumsum(axis=0)) ''' # 绘图 plt.figure(figsize=(7,

如何用python实现数据可视化?

给大家简单介绍下python的matplotlib和seaborn的作图方法,如果需要了解pyecharts包的使用,可以点击阅读原文(同事写的一篇关于pyecharts作图的文章). 1.导入相关包: 2.部分用户在画图时不能显示中文,可以使用如下代码: www.huarenyl.cn 3.画折线图: 结果如下: 也可以画成这样: 4.画柱形图,并根据条件显示不同的颜色: 也可以这样画: 5.画填充图: 6.画箱线图: 7.画散点图: 8.画嵌套图: 接下来介绍下seaborn包: 9.画直方