51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1811|回复: 1
打印 上一主题 下一主题

Python 数据分析 之 绘图和可视化

[复制链接]
  • TA的每日心情
    无聊
    2024-7-12 13:16
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2019-2-1 15:21:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    这一章要用Jupyter notebook进行可交互式的绘图,需要执行下面的语句,这样就可以直接在Notebook里绘图了。

    %matplotlib notebook #jupyter magic这是jupyter magic,详情可上网搜索
    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    1
    2
    3
    4
    1 Figures and Subplots(图和子图)
    在matplotlib中画的图,都是在Figure对象中的。可以用plt.figure创建一个

    fig = plt.figure()
    ax1 = fig.add_subplot(2, 2, 1)
    ax2 = fig.add_subplot(2, 2, 2)
    ax3 = fig.add_subplot(2, 2, 3)
    fig
    1
    2
    3
    4
    5
    有一个注意点,在使用Jupyter notebook的时候,绘图可能在一个cell之后被重置,所以对于一些复杂的绘图,必须把绘图命令全部放在一个notebook cell中。

    因为创建一个带有多个subplot的figure是很常见的操作,所以matplotlib添加了一个方法,plt.subplots,来简化这个过程。这个方法会创建一个新的figure,并返回一个numpy数组,其中包含创建的subplot对象:

    f, axes = plt.subplots(2, 3)
    1
    f返回的是图

    axes返回的是索引


    2 Colors, Markers, and Line Styles(颜色,标记物,线样式)
    fig = plt.figure()
    plt.plot(np.random.randn(30).cumsum(), color='k', linestyle='dashed', marker='o')
    plt.legend(loc='best')
    1
    2
    3
    3 Ticks, Labels, and Legends(标记,标签,图例)
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)
    ax.plot(np.random.randn(1000).cumsum(),label='one')
    ticks = ax.set_xticks([0, 250, 500, 750, 1000])
    labels = ax.set_xticklabels(['one', 'two', 'three', 'four', 'five'], rotation=30, fontsize='small')
    ax.set_title('My first matplotlib plot')#图标题
    ax.set_xlabel('Stages')#x轴标签
    ax.legend(loc='best')#图例
    1
    2
    3
    4
    5
    6
    7
    8


    4 Annotations and Drawing on a Subplot(注释和在subplot上画图)
    from datetime import datetime
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)
    data = pd.read_csv('../examples/spx.csv', index_col=0, parse_dates=True)
    spx = data['SPX']
    spx.plot(ax=ax,style='k-')
    # DataFrame.plot(x=None, y=None, kind='line', ax=None, subplots=False, #sharex=None, sharey=False, layout=None, figsize=None, use_index=True, #title=None, grid=None, legend=True, style=None, logx=False,
    #logy=False, loglog=False, xticks=None, yticks=None, #xlim=None,ylim=None, rot=None, fontsize=None, colormap=None, #table=False, yerr=None, xerr=None, secondary_y=False, #sort_columns=False, **kwds)
    crisis_data = [
        (datetime(2007, 10, 11), 'Peak of bull market'),
        (datetime(2008, 3, 12), 'Bear Stearns Fails'),
        (datetime(2008, 9, 15), 'Lehman Bankruptcy')
    ]
    for date, label in crisis_data:
        ax.annotate(label, xy=(date, spx.asof(date) + 75),
        arrowprops=dict(facecolor='black', headwidth=4, width=2, headlength=4),
        horizontalalignment='left', verticalalignment='top')
    # Zoom in on 2007-2010
    ax.set_xlim(['1/1/2007', '1/1/2011'])
    ax.set_ylim([600, 1800])
    ax.set_title('Important dates in the 2008-2009 financial crisis')  
    spx
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22


    5 Saving Plots to File(把图保存为文件)
    保存的文件类型通过文件名后缀来指定。即如果使用 .pdf做为后缀,就会得到一个PDF文件。这里有一些重要的设置,作者经常用来刊印图片:
    dpi,控制每英寸长度上的分辨率
    bbox_inches, 能删除figure周围的空白部分
    比如我们想要得到一幅PNG图,有最小的空白,400 DPI,键入:
    ---------------------


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-18 14:32 , Processed in 0.061410 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表