导入相关模块

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

基本图表

散点图:scatter

N = 1000
x = np.random.randn(N)
y = np.random.randn(N)
plt.scatter(x,y)
plt.show()

scatter的函数签名如下

scatter(x,y,s=None,c=None,marker=None,cmap=None,norm=None,vmin=None,vmax=None,alpha=None,linewidths=None,verts=None,edgecolors=None,hold=None,data=None,**kwargs)
  • x,y:形如shape(n,)的数组
  • s:点的大小,默认20
  • c:点的取色序列,默认蓝色
  • marker:点的形状,默认是圆(具体的点的形状可以在matplotlib的官网中搜索markers查看。)
  • alpha:点的透明度
  • edgecolors:边缘颜色
plt.scatter(x,y,c='rykgm',s=100,marker='>')
plt.show()

plt.scatter(x,y,alpha=0.5)
plt.show()

plt.scatter(x,y,edgecolors='r')
plt.show()

柱状图:bar

data = [5, 20, 15, 25, 10]
plt.bar(range(len(data)), data)
plt.show()

bar的函数签名如下:

bar(left, height, width=0.8, bottom=None, **kwargs)

事实上,left,height,width,bottom这四个参数确定了柱体的位置和大小,具体定位如下:

  • (left - width / 2, bottom)为左下角位置
  • (left + width / 2, bottom + height)为右上角位置
plt.bar([0.3,1.7,4,6,7], data, width=0.6,bottom=[10,0,5,0,5])
plt.show()

对于柱状图,还可以设置以下参数:

  • 颜色:color
  • 描边:edgecolor(ec):边缘颜色;linestyle(ls):边缘样式;linewidth(lw):边缘粗细
  • 填充:hatch:可取值为: / , \ , | , - , + , x , o , O , . , *
  • 位置标志:tick_label
labels = ['Tom', 'Dick', 'Harry', 'Slim', 'Jim']
plt.bar(range(len(data)),data, color='rgb',ec='r',ls='--',lw=2,hatch='o',tick_label=labels)
plt.show()

堆叠柱状图

通过bottom参数,可以轻松实现堆叠柱状图

size = 5
x = np.arange(size)
a = np.random.random(size)
b = np.random.random(size)
plt.bar(x, a, label='a')
plt.bar(x, b, bottom=a, label='b')
plt.legend()
plt.show()

并列柱状图

并列柱状图则需要通过left属性添加偏移量来实现

total_width, n = 0.8, 2
width = total_width / n
x = x - (total_width - width) / 2 plt.bar(x, a, width=width, label='a')
plt.bar(x + width, b, width=width, label='b')
plt.legend()
plt.show()

条形图

类似bar方法,仅换了方法名称:barh(bar-horizontal)

plt.barh(range(len(data)), data)
plt.show()

barh的签名为

barh(bottom, width, height=0.8, left=None, **kwargs)

因此,使用时可以看成是bar的旋转,其方法完全一样

正负条形图

可以通过barh方法轻松获得

a = np.array([5, 20, 15, 25, 10])
b = np.array([10, 15, 20, 15, 5]) plt.barh(range(len(a)), a)
plt.barh(range(len(b)), -b)
plt.show()

折线图:plot

a = np.array([5, 20, 15, 25, 10])
plt.plot(a)
plt.show()

和柱状图类似,plot也提供了一些常用的参数,折线图含有两种对象:点和线,因此,可以分别对点和线进行设置,对线的设置与柱状图类似,参数有ls、lw;对点的设置可以参照scatter中的参数,为了区分点和线,规定在点参数前添加一个字母m(marker)来表示,至于线的颜色,可以通过color(c)参数来设置。因此,一个简单的参数设置可以如下表示:

plt.plot(a, color='r',ls='--',lw=2,marker='o',mec='b',ms=10, mfc='w')
plt.show()

plot还提供了一个更简洁的方法:合并color、marker、linestyle三个参数为一个字符串,方便设置。

plt.plot(a,'ro--')
plt.show()

在做数据可视化的时候,常用的基本图表有折线图、散点图和柱状图三种,其它诸如饼图、箱形图等出现较少,第一部分暂不处理。有了这些图标已经可以做一些基本的分析了,下一节中,将介绍一些常用的设置,诸如坐标轴、标签等。

参考

数据可视化——Matplotlib(1)的更多相关文章

  1. python 爬虫与数据可视化--matplotlib模块应用

    一.数据分析的目的(利用大数据量数据分析,帮助人们做出战略决策) 二.什么是matplotlib? matplotlib: 最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB ...

  2. 数据可视化matplotlib、seaborn、pydotplus

    如需转发,请注明出处:小婷儿的python  https://www.cnblogs.com/xxtalhr/p/10486560.html 一.数据可视化 data.mat 链接:https://p ...

  3. Python数据可视化--matplotlib

    抽象化|具体化: 如盒形图 | 现实中的图 功能性|装饰性:没有装饰和渲染 | 包含艺术性美学上的装饰 深度表达|浅度表达:深入层次的研究探索数据 | 易于理解的,直观的表示 多维度|单一维度:数据的 ...

  4. Python数据可视化matplotlib和seaborn

    Python在数据科学中的地位,不仅仅是因为numpy, scipy, pandas, scikit-learn这些高效易用.接口统一的科学计算包,其强大的数据可视化工具也是重要组成部分.在Pytho ...

  5. python数据可视化-matplotlib入门(7)-从网络加载数据及数据可视化的小总结

    除了从文件加载数据,另一个数据源是互联网,互联网每天产生各种不同的数据,可以用各种各样的方式从互联网加载数据. 一.了解 Web API Web 应用编程接口(API)自动请求网站的特定信息,再对这些 ...

  6. 数据可视化——matplotlib(2)

    导入相关模块 import matplotlib.pyplot as plt import numpy as np import pandas as pd 图表设置 添加X.Y轴标签以及图标标题 a ...

  7. 数据可视化-matplotlib包

    pyplot官网教程https://matplotlib.org/users/pyplot_tutorial.html #导入matplotlib的pyplot模块 import matplotlib ...

  8. 数据可视化----matplotlib.pylot

    一.输入具体数 plt.plot([3,1,4,5,2]) #自动生成y轴 plt.ylabel("Grade") #y轴的标签 plt.savefig('test1',dpi=6 ...

  9. <数据可视化>Matplotlib(2D+3D)

    1.Matplotlib介绍(2D) Matplotlib 是 Python 2D-绘图领域使用最广泛的套件.它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式. pylab 是 matplo ...

随机推荐

  1. 一条SQL引起的雪崩

    1.问题描述 MySQL服务器卡死,CPU飚到300%多,命令执行缓慢. 2.问题定位 踩了狗屎运,直接找到了问题缘由 发现了一条SQL写的模糊匹配,将%写在了关键字的前面,这样会造成查询不使用索引, ...

  2. 浅谈virtualenv(虚拟环境)

    简介 virtualenv为应用提供了隔离的Python运行环境,解决了不同应用间多版本的冲突问题. 例如: 如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的P ...

  3. JavaScript和jQuery的学习

    还有12天就要回学校了,我的假期计划还能实现吗?在这12天里,需要把JavaScript和jQuery学完.我知道这两个技术对于前端网页开发非常重要.前期把HTML和CSS学完了,学的不是特别深,只是 ...

  4. Linux服务器上监控网络带宽命令

    本文介绍了一些可以用来监控网络使用情况的Linux命令行工具.这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度.入站流量和出站流量分开来显示. 一些命令可以显示单个进程所使用的带 ...

  5. Python 新手常犯错误(第一部分)转载

    觉得这篇文章针对python的默认参数写的不错,翻译的也不错,故转载下. 原文链接: Amir Rachum   翻译: 伯乐在线- 伯乐在线读者译文链接: http://blog.jobbole.c ...

  6. PHPCMS 小节

    当前栏目id:                       {$catid}当前栏目名:                       {$CATEGORYS[$catid][catname]}当前栏目 ...

  7. vue过滤器和监视器的小例子

    过滤器其实就是一个函数,把当前的值传递到函数里面,加工处理后,返回到当前,过滤器使用|(管道符),默认传递参数,如果还要传递参数就要手动传递 过滤器函数总接收表达式的值 (之前的操作链的结果) 作为第 ...

  8. BZOJ 2301 Problem b (莫比乌斯反演+容斥)

    这道题和 HDU-1695不同的是,a,c不一定是1了.还是莫比乌斯的套路,加上容斥求结果. 设\(F(n,m,k)\)为满足\(gcd(i,j)=k(1\leq i\leq n,1\leq j\le ...

  9. Python开篇——Python的哲学

    今天奉上Python设计哲学,宣告着自己正式开始系统的学习Python The Zen of Python, by Tim Peters Beautiful is better than ugly.E ...

  10. 巨坑:jqgrid竟然取不到编辑模式下input的值

    今天遇到最奇葩的问题,竟然取不到input的值,感觉世界观都颠覆了.后来一搜资料,又是jqgrid框架搞的鬼,真搞不明白,开发框架就好好开发框架,留这么多坑有意思吗? jqgrid编辑模式下不要调用g ...