Python的matplotlib包

我们前面讲到 Python 的两个科学计算库,numpy 和 pandas,相信小伙伴们已经可以熟练使用这两个库中的常见方法。华罗庚老先生曾经说过这样一句话,“数形结合百般好,数形分离万事难”,图形是我们科学计算的重要工具。在本篇我们将结合 numpy 和 pandas 包来给小伙伴们介绍一个非常好用的画图库 matplotlib,matplotlib 非常适合进行交互式制图,承接上两篇,本篇继续采用 jupyter notebook 进行演示。

首先,导入 pandas、numpy 和 matplotlib 包,结合 pandas 的 Series 函数生成一个角标从 0 到 999 的一维数组:

In [1]:  import pandas as pd
         import numpy as np
         import matplotlib.pyplot as plt
         data = pd.Series(np.random.randn(1000),index=np.arange(1000))
         data.plot()
         plt.show() 

Out [1]:  

同样,我们也可以结合 pandas 中的 DataFrame 函数生成一个矩阵,并按照矩阵的列画出 4 条线:

In [2]:  data = pd.DataFrame(np.random.randn(1000,4),index=np.arange(1000),columns=list('ABCD'))
         data = data.cumsum() # 累加
         data.plot()
         plt.show()

Out [2]:

接下来,我们将 A 作为 x 轴,将 B 作为 y 轴,画出散点图,观察 A 与 B 是否有关系:

In [3]:  data.plot.scatter(x='A',y='B',color='Red',label='Class 1')
         plt.show()

Out [3]:

我们也可以用最简单的方式,画出一条折线,并修改一下线条的风格、颜色和标记:

In [4]:  x = [1, 2, 3, 4]
y = [1, 2, 5, 7]
plt.plot(x, y, color="blue", linestyle="--", marker="*", linewidth=1.0)
plt.show()

Out [4]:

关于上文提到的线条的风格、颜色和标记的参照表,我们摘抄如下:

线条风格 实线 虚线 长虚线(上方代码中使用的) 点划线 无线条(点)
代码 - : -- -. None(默认)
线条颜色 红色 黄色 绿色 蓝色(上方代码中使用的) 黑色 白色 青色
代码 r y g b k w c
线条标记 代码 线条标记 代码 线条标记 代码 线条标记 代码
圆圈 o(小写字母o) . 星号 * 加号 +
朝下三角 v(小写字母v) 朝上三角 ^ 朝左三角 < 朝右三角 >
大菱形 D 小菱形 d 正方形 s 五边形 p

为了让图更清晰易懂,我们可以再额外加上标题和标签:

In [5]:  x = np.arange(4)
         y1 = np.exp(x)
         y2 = np.exp(x*2)
         plt.plot(x, y1, color="r", linestyle="-", marker="^", linewidth=1, label="y1")
         plt.plot(x, y2, color="b", linestyle="-", marker="s", linewidth=1, label="y2")
         plt.title("Figure 1")    # 声明标题为 Figure 1
         plt.legend(loc='upper left', bbox_to_anchor=(0.1, 0.9))  # 在左上角 upper left 声明标签
         plt.show()

Out [5]:

在某些情况下,我们也可以给图添加网格和背景色,更有助于参照和对比数据:

In [6]:  x = np.arange(4)
         y1 = np.exp(x)
         y2 = np.exp(x*2)
         plt.subplot(facecolor="w")  # 要先定义
         plt.plot(x, y1, color="r", linestyle="-", marker="^", linewidth=1, label="y1")
         plt.plot(x, y2, color="b", linestyle="-", marker="s", linewidth=1, label="y2")
         plt.title("Figure 1")
         plt.legend(loc='upper left', bbox_to_anchor=(0.1, 0.9))
         plt.grid(color="k",linestyle=":")
         plt.show()

Out [6]:

我们还可以更为详细地用箭头指向某条线,做详细的注释:

In [7]:  x = np.arange(4)
         y1 = np.exp(x)
         y2 = np.exp(x*2)
         plt.subplot(facecolor="w")  # 要先定义
         plt.plot(x, y1, color="r", linestyle="-", marker="^", linewidth=1, label="y1")
         plt.plot(x, y2, color="b", linestyle="-", marker="s", linewidth=1, label="y2")
         plt.title("Figure 1")
         plt.legend(loc='upper left', bbox_to_anchor=(0.1, 0.9))
         plt.grid(color="k",linestyle=":")
         plt.annotate('y2 = np.exp(x*2)', xy=(2, 50), xytext=(1.5, 210), arrowprops=dict(facecolor='k',         headwidth=5, width=1))
         plt.show()

Out [7]:

annotate 的第一个参数 'y2 = np.exp(x*2)' 是注释的文本信息,xy 表示要注释的点的坐标,xytext 表示注释文本的起始坐标,arrowprops 表示箭头,facecolor 表示箭头颜色,headwidth 表示箭头宽度,width 表示箭身宽度。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容