zoukankan      html  css  js  c++  java
  • Matplotlib

    导入Matplotlib库

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

    (上方代码块是自动绘图(省略show的方法))

    1.查看都有什么风格style

    # 查看可用风格
    plt.style.available

    2.设置绘图风格

    plt.style.use("seaborn")
    plt.plot( [1, 2, 3])
    plt.title('这是一张图')

    3.设置支持中文字体显示

    # windows 电脑
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    # mac 电脑
    plt.rcParams['font.family'] = ['Arial Unicode MS'] #正常显示中文
    plt.plot( [1, 2, 3])
    plt.title('这是一张图')

    4.绘制折线图

    plot 折线图接口

    plot(x, y, 'go--', linewidth=2, markersize=12)
    plot(x, y, color='green', marker='o', linestyle='dashed',
         linewidth=2, markersize=12)
    • color 颜色
    • linewidth 线宽
    • markersize 点大小
    • fontsize 字体
    • marker 点形状
    • linestyle 线风格
    • linewidth 线宽
    • lable 标签
    • alpha 透明度
    x = [1,2,3,4]
    y = [2,4,1,6]
    # plot 折线图
    plt.plot(x, y )
    # 第三个参数  颜色、点形状、线形状
    plt.plot(x, y ,'ro:')
    # 原装的只有上面的三种,其他的需要自己设置参数修改。
    
    plt.plot(x , y , color= '#104E8B' , linewidth =3,
           marker = 'D', markersize= 9, linestyle = '--',
             label = '一条线' , alpha = 0.9
            )

     5.绘制一个常见函数曲线

    # 生成数据, 生成横坐标
    x = np.arange(0,10,0.1)
    # 生成 y 
    y = np.sin(x)
    plt.plot(x,y)

    6.添加常见图例属性

    • plt.figure 图片基本设置
      • figsize = (x,y) 调节图片大小
      • dpi 图像清晰度
    • plt.title 添加标题
    • plt.xlabel('') plt.ylabel('') x轴和y轴添加标签

    • plt.grid(True) 添加网格

    • plt.xlim(-1,20) plt.ylim(-1,1) 设置坐标轴范围
    • plt.text 图片添加文本
    • plt.legend 添加图例
    plt.figure(figsize = (8,5),dpi = 100)
    plt.plot(x,y,'ro-',label = 'sin图像')
    plt.title('sin图像',fontsize = 20 , color = "b" , loc = 'left')
    plt.xlabel('x坐标',fontsize = 20 , color = "b")
    plt.ylabel('y坐标',fontsize = 20 , color = "b")
    plt.grid(False)  #去掉网格
    plt.xlim(-5,15) 
    plt.ylim(-2,2) 
    plt.text(-5,-2.5,  '我看下在哪' , color = 'g' , fontsize = 20)
    plt.legend(fontsize = 20)

    7.使用Pandas数据进行画图

    grade = pd.read_csv('student_grade.txt',sep='	')
    plt.plot(grade.总分)

    柱状图

    s1 = [1, 2, 3, 4, 5]
    s2 = [10, 13, 6, 3, 12]
    plt.bar(s1, s2)

    直方图

    bar是用来把你已经总结好的数据画出来,可以用来对比各个组的数据。

    hist是制作一个频率分布图,比如说把一个数据分成10个部分,每个部分的频率是多少。 大概看一下数据的分布。

    # bins = [0, 60, 90, 120, 135, 150]
    plt.hist(grade.语文 , 5,  rwidth=0.8 , )

    散点图

    plt.scatter

    • s 散点的点尺寸
    • c 颜色尺寸
    • cmap 颜色映射方法
    # c 颜色数值 , s 尺寸数值, cmap 映射方法
    x = np.arange(1,10)
    plt.scatter(x, x , c = x , s= x*100,
               cmap= 'rainbow')

    饼状图

        x, 数据
        explode=None, 哪部分突出显示 (0, 0, 0.3, 0)
        labels=None, 标签名称
        colors=None, 颜色
        autopct=None,百分号显示格式
        pctdistance=0.6, 数字和边缘距离
        shadow=False, 阴影
        labeldistance=1.1, 标签距离
        startangle=None, 角度
        radius=None, 饼图半径
        counterclock=True, 逆时针
    labels = [ '吃饭', '交通', '游戏', '衣服']
    data = [1000, 100, 500, 2000]
    plt.pie(data,labels=labels,explode=(0.1, 0, 0.3, 0),autopct='%1.1f%%', 
            shadow=True,   colors=['r', 'k', 'g', 'b']);

    8.创建子图

     MATLAB风格接口
    plt.figure() # 创建图形
    x = np.linspace(0, 10, 100)
    # 创建两个子图中的第一个,设置坐标轴
    plt.subplot(2, 1, 1) # (行、列、子图编号)
    plt.plot(x, np.sin(x))
    # 创建两个子图中的第二个,设置坐标轴
    plt.subplot(2, 1, 2)
    plt.plot(x, np.cos(x))

     9.读取数据画图

    stock_data = pd.read_csv('yahoo_stock.csv')
    stock_data

    10.保存图片

    plt.figure(dpi=100)
    plt.plot(data.Open)
    # data.Open.plot( title='yahoo', legend=True,)
    plt.xlabel('日期')
    plt.ylabel('指数')
    plt.plot([],[],linewidth=3, label='loss', color='r',alpha=0.5)
    plt.plot([],[],linewidth=5, label='gain', color='g',alpha=0.5) # 添加标注
    plt.axhline(data.Open[0], color='k', linewidth=2)
    plt.annotate('Bad News!',('2003-01-01', 10),
                     xytext=(100, 200), textcoords='figure points',
                     arrowprops = dict(facecolor='grey'))
    plt.legend()
    # 在两天线之间实现填充,和 第一天的开盘价相比较,高的用绿色,低的用红色。
    plt.fill_between(data.index, data.Open,data.Open[0] , where=(data.Open > data.Open[0]), facecolor='g', alpha=0.5)
    plt.fill_between(data.index, data.Open,data.Open[0] , where=(data.Open < data.Open[0]), facecolor='r', alpha=0.5)
    plt.savefig('my_figure.png')

    显示硬盘图片

    from IPython.display import Image
    Image(filename='yahoo_stock.png')
  • 相关阅读:
    SQL Server经典函数之数字去零
    c# 定时执行python脚本
    SQL Server 存储过程生成流水号
    MySQL删除数据表中重复数据
    js封装正则验证
    .NET中将中文符号转换成英文符号
    WebApi中跨域解决办法
    JS生成GUID方法
    LINQ中的连接(join)用法示例
    LINQ分组取出第一条数据
  • 原文地址:https://www.cnblogs.com/BC10/p/11697796.html
Copyright © 2011-2022 走看看