zoukankan      html  css  js  c++  java
  • matplotlib中绘图

     
    1)常见图形

    plt.plot(x, y)

    plt.bar(x, y)

    plt.barh(x, y)

    plt.boxplot(x)

    plt.scatter(x,y)

    2)误差条形图

    x = np.arange(0, 10, 1)

    y = np.log(x)

    xe = 0.1 * np.abs(np.random.randn(len(y)))

    #width设置条形度的宽度

    plt.bar(x, y, yerr=xe, width=0.4, align='center', ecolor='r', color='cyan',label='experiment #1');

    plt.xlabel('# measurement')

    plt.ylabel('Measured values')

    plt.title('Measurements')

    plt.legend(loc='upper left')

    plt.show()

     

    3)饼图

    #饼图是个圆形,最好放在一个正方形的画板中

    plt.figure(1, figsize=(8, 8))

    labels = 'Spring', 'Summer', 'Autumn', 'Winter'

    values = [15, 16, 16, 28]

    explode =[0.1, 0.1, 0.1, 0.1]

    #explode设置的是扇形和扇形间的间隔,labels设置每个扇形的标签,startangle=67设置起始角度从67度开始

    plt.pie(values, explode=explode, labels=labels, autopct='%1.1f%%', startangle=67)

    plt.title('Rainy days by season')

    plt.show()

    4)等高线的绘制

    #等高线图

    import matplotlib as mpl

    #定义高程

    def process_signals(x, y):

        return (1 - (x ** 2 + y ** 2)) * np.exp(-y ** 3 / 3)

    x = np.arange(-1.5, 1.5, 0.1)

    y = np.arange(-1.5, 1.5, 0.1)

    # 将原始数据变为网格数据

    X, Y = np.meshgrid(x, y)

    Z = process_signals(X, Y)

    #指定等高线,等高线间隔0.3

    N = np.arange(-1, 1.5, 0.3)

    # cmap=mpl.cm.jet指定等高线颜色,linewidths指定等高线宽

    CS = plt.contour(Z, N, linewidths=2, cmap=mpl.cm.jet)

    plt.clabel(CS, inline=True, fmt='%1.1f', fontsize=10)

    plt.colorbar(CS)

    plt.title('My function: $z=(1-x^2+y^2) e^{-(y^3)/3}$')

    plt.show()

     

    # 计算高程

    def calcu_elevation(x1, y1): 

        ele = (1-x1/2+x1**5+y1**3)*np.exp(-x1**2-y1**2)

        return ele

    n = 256

    x = np.linspace(-3, 3, n)

    y = np.linspace(-3, 3, n)

    # 将原始数据变为网格数据

    X, Y = np.meshgrid(x, y) 

    # 填充等高线的颜色, 8是等高线分为几部分

    plt.contourf(X, Y, calcu_elevation(X, Y), 8, alpha=0.75, cmap=plt.cm.hot)  # 8表示要分几部分等高线

    # 画等高线

    C = plt.contour(X, Y, calcu_elevation(X, Y), 8, colors='black', linewidth=0.5)

    plt.clabel(C, inline=True, fontsize=10)  # 添加文字标签 inlins表示等高线是穿过数字还是不穿过

    plt.show()

     

    5)3D柱形图

    import matplotlib.dates as mdates

    from mpl_toolkits.mplot3d import Axes3D

    #设置全局字体大小

    mpl.rcParams['font.size'] = 10

    fig = plt.figure()

    ax = fig.add_subplot(111, projection='3d')

    for z in [2011, 2012, 2013, 2014]:

        xs = xrange(1,13)

        ys = 1000 * np.random.rand(12)

       

           #颜色方案的随机选择

    color = plt.cm.Set2(random.choice(xrange(plt.cm.Set2.N)))

    # zdir='y'或者’x’

        ax.bar(xs, ys, zs=z, zdir='y', color=color, alpha=0.8)

    ax.xaxis.set_major_locator(mpl.ticker.FixedLocator(xs))

    ax.yaxis.set_major_locator(mpl.ticker.FixedLocator(ys))

    ax.set_xlabel('Month')

    ax.set_ylabel('Year')

    ax.set_zlabel('Sales Net [usd]')

    plt.show()

     

  • 相关阅读:
    MyBatis通过JDBC生成的执行语句问题
    request.getParameter()、request.getInputStream()和request.getReader()
    Spring 实现数据库读写分离
    图片分布式存储
    切换城市的功能实现
    一直在前进的路上
    test blog
    SSIS 系列
    微信摇一摇优惠券
    扫描二维码实现一键登录
  • 原文地址:https://www.cnblogs.com/yongfuxue/p/10107329.html
Copyright © 2011-2022 走看看