专栏首页张俊红Python数据可视化——matplotlib使用

Python数据可视化——matplotlib使用

总第57篇

01|Figure和Subplot:

matplotlib的图像都位于figure对象中,相当于一块画布。figure的属性figsize是用来设置figure的大小的。subplot是用来存放坐标系的,一个figure中可以有多个subplot。

%matplotlib inline import matplotlib.pyplot as plt from numpy.random import randn import numpy as np fig=plt.figure() ax1=fig.add_subplot(2,2,1)#表示在figure中建立2*2个坐标系,ax1位于第一个坐标中 ax2=fig.add_subplot(2,2,2) ax3=fig.add_subplot(2,2,3)

在程序开头加(%matplotlib)是为了显示figure,如果不加则不会跳出figure图框。而(%matplotlib inline)则是直接显示在编程界面,不重新跳出做图框。

如果我们没有指定在哪个ax上进行作图,matplotlib会默认选择最后一个(如果没有则创建一个)上进行绘制。下面这条命令就没有指定。

plt.plot(randn(50).cumsum(),"k--")

ax1.hist(randn(100),bins=20,color='k',alpha=0.3)#在ax1上作图 ax2.scatter(np.arange(30),np.arange(30)+3*randn(30))#在ax2上作图

也可以直接一次性创建多个图框,然后在使用的时候进行索引使用就行,比如下面的subplots(2,3)就是一次性建立两行三列个坐标,而axes[0,1]则表示利用第0行第2列对应的图框。

fig,axes=plt.subplots(2,3) _=axes[0,1].hist(randn(100),bins=20,color='k',alpha=0.3)#加“_=”视为让其不输出randn产生的随机数组

subplots的参数:除几行几列外,还有sharex和sharey,表示x(y)轴的刻度是否要保持相等的刻度。默认情况是False,即不相等。

调整subplot周围的间距:默认情况下,matlibplot会在subplot外围以及sbuplot之间留下一定的边距。图像的大小和间距是相关的,如果你调整了图像大小,间距也会自动调整。利用Figure的subplots_adjust方法可以用来修改间距。

plt.subplots_adjust(left=None,right=None,top=None,bottom=None,wspace=None,hspace=None)#分别表示左右上下边距,以及宽度和高度百分比。

02|颜色,标记和线型:

常用颜色用英文字母的首字母来代替。

b---blue c---cyan g---green k----black m---magenta r---red w---white y----yellow

标记是用在线性图上来强调实际数据点的。

. Point marker

, Pixel marker o Circle marker v Triangle down marker ^ Triangle up marker < Triangle left marker > Triangle right marker 1 Tripod down marker 2 Tripod up marker 3 Tripod left marker 4 Tripod right marker s Square marker p Pentagon marker * Star marker h Hexagon marker H Rotated hexagon D Diamond marker d Thin diamond marker | Vertical line (vlinesymbol) marker _ Horizontal line (hline symbol) marker + Plus marker x Cross (x) marker

线性是表示线的形状。

- 实线 -- 短线 -. 短点相间线 : 虚点线

plot(randn(30).cumsum(),color="k",linestyle="--",marker="o")

03|刻度、标签和标题:

fig=plt.figure() ax=fig.add_subplot(1,1,1) ax.plot(randn(1000).cumsum()) ticks=ax.set_xticks([0,250,500,750,1000])#设置x轴的刻度,y轴把x换成y即可 lables=ax.set_xticklabels(["one","two","three","four","five"],rotation=30,fontsize="small")#设置x轴对应的标签,y轴把x换成y即可 ax.set_title("my first matplotlib plot")#为坐标轴设置标题

04|图例:

在添加subplot的时候传入label参数,然后调用ax.legend()或plt.legend()即可。

fig=plt.figure() ax=fig.add_subplot(1,1,1) ax.plot(randn(1000).cumsum(),label="one")#创建label标签 ax.plot(randn(1000).cumsum(),label="two")#创建label标签 ax.plot(randn(1000).cumsum(),label="three")#创建label标签 ax.legend(loc="best")#loc是用来说明图例的放置位置

06|Pandas作图:

matplotlib是一种比较低级的工具,要组装一张图表,需要用到它的各种组件才可以,包括图表类型(线型图、柱状图、盒形图、散布图、等值线图等)、图例、标题、刻度标签以及其他注释信息。这是因为制作一张完整的图表都需要用到这些,但是matplotlib要实现这种功能需要很多行代码,而pandas可能只需要几行代码就可以搞定。

  1. 线型图:Series和DataFrame都有自己的plot方法,plot默认创建的是线形图,Series.plot()和DataFrame.plot()。
  2. 柱状图:需要给plot方法传入参数kind,其中kind="bar"表垂直柱状图、kind="barh"表水平柱状图。Series和DataFrame的索引将会被用作X(或Y)轴的刻度。柱状图中有个特例就是堆积柱状图,只需要给plot传入参数stacked="True"即可。还可以利用s.value_counts().plot(kind="bar")来图形化显示Series中各值出现的频率。
  3. 直方图:是一种可以对值频率离散化显示的柱状图。通过调用Series.hist()方法即可创建。
  4. 密度图:与直方图相关的一种类型图,是通过计算“可能会产生观测数据的连续概率分布的估计”而产生的,通过给plot传入参数kind="kde"即可。
  5. 散布图:是观测两个一维数据序列之间关系的有效手段,使用pd.scatter_matrix()即可建立。

本文分享自微信公众号 - 张俊红(zhangjunhong0428),作者:张俊红

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-03-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 聊聊你知道和不知道的相关性系数

    这一篇我们来聊聊大家平常比较常用的相关系数。相关系数是用来度量两个变量之间相关性大小的一个量化指标。比如你要判断啤酒和尿布之间是否有相关性,就可以计算这两个变量...

    张俊红
  • 这位老师的70个问题,100个数据分析师都想不全

    爱因斯坦曾经说过,“提出问题远比解决问题更重要”,问对了问题,才能清楚前进的方向,方向对了,才会事半功倍。否则越努力,离目标就越远。乔布斯为了进军音乐市场,曾问...

    张俊红
  • 数据结构-图

    图是不同于前面两种数据结构的另一种新的数据结构,线性表中元素与元素之间是被串起来的,每个数据元素只有一个直接前驱和一个直接后继,是一种一对一的数据结构;在树的结...

    张俊红
  • python matplotlib.pyplot.plot()参数用法

    默认情况下,每个行被指定一个由“颜色周期”指定的不同颜色。要改变这种行为,可以编辑axes.color_cycle中的rcparam。

    砸漏
  • R语言之可视化①⑥一页多图(2)目录

    cowplot包是ggplot2的简单附加组件。 它旨在为ggplot2提供一个出版物就绪的主题,这个主题需要最少量的轴标签尺寸,情节背景等。对'ggplot2...

    用户1359560
  • 「R」cowplot(四)图形排列

    如果你指定labels="AUTO"或labels="auto",那么标签会自动按照大写或小写排列:

    王诗翔呀
  • 知乎高赞:本科生如何才能进入 BAT 等一流互联网大厂?

    链接 | zhihu.com/question/26406260/answer/186461717

    一个优秀的废人
  • 我面试了300多个程序员,教你如何在求职面试中脱颖而出

    在面试时,经过寒暄后,一般面试官会让介绍项目经验 。常见的问法是,说下你最近的(或最拿得出手的)一个项目。 根据我们的面试经验,发现有不少候选人对此没准备,说...

    谭庆波
  • 如何在面试中介绍自己的项目经验,很重要!

    在面试时,经过寒暄后,一般面试官会让介绍项目经验 。常见的问法是,说下你最近的(或最拿得出手的)一个项目。

    芋道源码
  • [PHP]算法- 判断是否为二叉搜索树的后序遍历序列的PHP实现

    陶士涵

扫码关注云+社区

领取腾讯云代金券