zoukankan      html  css  js  c++  java
  • matplotlib 随记

    1、安装

    window平台下推荐安装Enthought canopy,包含matplotlib和它所依赖的包;
    linux下一般默认内置了matplotlib,直接使用就可以了。
     

    2、在没有图形界面的Linux系统中,引用pyplot等会调用display的模块时,在之前加这么两句(切记):
    import matplotlib
    matplotlib.use('Agg')
     

    3、示例:
    import matplotlib.pyplot as plt
    from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
    from matplotlib.ticker import MultipleLocator
    from matplotlib.dates import DateFormatter
     
    fig = plt.figure(111, figsize=(13,6))  # figure 定义一张图片, figsize决定图片的大小  
    ax = fig.add_subplot()  # 在图片上定义一块绘图区域,可以通过 fig.gca() 获得
    ax = fig.add_axes([0.08, 0.15, 0.82, 0.8])  #  [left, bottom, width, height]
    x = arange(0, 30, 1)
    x1 = .....
    ax.plot(x, y1, label=u'群聊', color='red', linewidth=2)  # 绘制线,并设置属性 
    y1 = .....
    ax.plot(x, y1, label=u'私聊', color='blue', linewidth=2)  # 绘制另一条线
    ax.legend(loc='center left', bbox_to_anchor=(1,0.5))  # 设置图例的位置
    xaxis = ax.xaxis  # 获取绘图区域的x轴
    yaxis = ax.yaxis  # 获取绘图区域的y轴
    xaxis.set_major_locator(MultipleLocator(1))  # x轴的坐标间隔设置为1
    xaxis.set_major_formatter(DateFormatter('%Y-%m-%d'))  # 格式化日期
    fig.autofmt_xdate()  # 自动格式化日期,防止其溢出绘图区域
    for label in xaxis.get_ticklabels():  # 设置x轴上显示文本的样式
        label.set_rotation(60)
        label.set_fontsize(13)
    fig.subplots_adjust(hspace=0.3# 透明度
    plt.grid()  # 显示网格
    ~~~~~~~~~到这里就可以显示了,plt.show()就可以了,下面是在Django中的用法~~~~~~
    canvas = FigureCanvas(fig)
    response = django.http.HttpResponse(content_type='image/png')
    canvas.print_png(response)
    return response
    ~~~~~~~~~把matplotlib生成的图像插入到excel中(先保存到本地,然后转为bmp格式,最后插入到excel中)~~~~~
        file_in = 'temp.png'
        file_out = 'temp.bmp'
        fig.savefig(file_in)  
        img = Image.open(file_in)
        img.load() # 这句不可少,否则会出错
        if len(img.split()) == 4:
            r, g, b, a = img.split()
            img = Image.merge('RGB', (r, g, b))
        img.save(file_out)

        # 插入bmp图像
        ws.insert_bitmap(file_out, 0, 4)

        # 用完之后记得删除
        if os.path.exists(file_in) and os.path.exists(file_out):
            os.remove(file_in)
            os.remove(file_out)

    4、matplotlib输出图象的中文显示问题

    (1)找到c:python24libsite-packagesmatplotlibmpl-datamatplotlibrc  (修改font.sans-serif、verbose.level两行代码)

    (2)找到了matplotlibrc设置文件,是个文本文件,随便找个编辑器打开它,找到font.sans-serif一行,将后边直接改成一个nothing;(把 “:”后的“#......”都去掉)

    (3)找到verbose.level一行,把默认的silent改成debug.

    (4)找到Vera.ttf,将Vera.ttf用一个中文TrueType文字替换,名字是Vera,后缀是.ttf(True Type Font),即可。

    (5)字符串,都用u"..."的形式.(文件编码utf-8 加上" # coding = utf-8  "一行.)

     
    4、参考文章:
    How to put the legend out of the plot (如何设置图例)
     





  • 相关阅读:
    Hive 导入、导出数据
    mysql 命令行参数说明
    mysql 查看表信息
    python之冒泡排序
    python之选择排序
    python之快速排序
    光荣之路测试开发面试linux考题之四:性能命令
    测试开发linux面试之三:后台进程之操作
    测试开发面试的Linux面试题总结之二:常用命令
    测试开发面试的Linux面试题总结之一:vim使用方法
  • 原文地址:https://www.cnblogs.com/ddhj/p/3665141.html
Copyright © 2011-2022 走看看