zoukankan      html  css  js  c++  java
  • python画图

    正弦图像:

    #coding:utf-8
    import numpy as np
    import matplotlib.pyplot as plt
    x=np.linspace(0,10,1000)
    y=np.sin(x)
    z=np.cos(x**2)
    #控制图形的长和宽单位为英寸,
    # 调用figure创建一个绘图对象,并且使它成为当前的绘图对象。
    plt.figure(figsize=(8,4))
    #$可以让字体变得跟好看
    #给所绘制的曲线一个名字,此名字在图示(legend)中显示。
    # 只要在字符串前后添加"$"符号,matplotlib就会使用其内嵌的latex引擎绘制的数学公式。
    #color : 指定曲线的颜色
    #linewidth : 指定曲线的宽度
    plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)
    #b-- 曲线的颜色和线型
    plt.plot(x,z,"b--",label="$cos(x^2)$")
    #设置X轴的文字
    plt.xlabel("Time(s)")
    #设置Y轴的文字
    plt.ylabel("Volt")
    #设置图表的标题
    plt.title("PyPlot First Example")
    #设置Y轴的范围
    plt.ylim(-1.2,1.2)
    #显示图示
    plt.legend()
    #显示出我们创建的所有绘图对象。
    plt.show()

    配置

    #coding:utf-8
    import numpy as np
    import matplotlib.pyplot as plt
    x=np.arange(0,5,0.1)
    ## plot返回一个列表,通过line,获取其第一个元素
    line,=plt.plot(x,x*x)
    # 调用Line2D对象的set_*方法设置属性值 是否抗锯齿
    line.set_antialiased(False)
    # 同时绘制sin和cos两条曲线,lines是一个有两个Line2D对象的列表
    lines = plt.plot(x, np.sin(x), x, np.cos(x))
    ## 调用setp函数同时配置多个Line2D对象的多个属性值
    plt.setp(lines, color="r", linewidth=2.0)
    plt.show()

      

    绘制多轴图

    subplot(numRows, numCols, plotNum)
    import matplotlib.pyplot as plt
    '''
    subplot(numRows, numCols, plotNum)
    numRows行 * numCols列个子区域
    如果numRows,numCols和plotNum这三个数都小于10的话,可以把它们缩写为一个整数,例如subplot(323)和subplot(3,2,3)是相同的
    '''
    for idx, color in enumerate("rgbyck"):
        plt.subplot(330+idx+1, axisbg=color)
    plt.show()

    plt.subplot(221) # 第一行的左图
    plt.subplot(222) # 第一行的右图
    #第二行全占
    plt.subplot(212) # 第二整行
    plt.show()

    配置文件

    >>> import matplotlib

    >>> matplotlib.get_configdir()

    '/Users/similarface/.matplotlib'

    刻度定义:

    #coding:utf-8
    import matplotlib.pyplot as pl
    from matplotlib.ticker import MultipleLocator, FuncFormatter
    import numpy as np
    x = np.arange(0, 4*np.pi, 0.01)
    y = np.sin(x)
    pl.figure(figsize=(8,4))
    pl.plot(x, y)
    ax = pl.gca()
    
    def pi_formatter(x, pos):
        """
        比较罗嗦地将数值转换为以pi/4为单位的刻度文本
        """
        m = np.round(x / (np.pi/4))
        n = 4
        if m%2==0: m, n = m/2, n/2
        if m%2==0: m, n = m/2, n/2
        if m == 0:
            return "0"
        if m == 1 and n == 1:
            return "$pi$"
        if n == 1:
            return r"$%d pi$" % m
        if m == 1:
            return r"$frac{pi}{%d}$" % n
        return r"$frac{%d pi}{%d}$" % (m,n)
    # 设置两个坐标轴的范围
    pl.ylim(-1.5,1.5)
    pl.xlim(0, np.max(x))
    # 设置图的底边距
    pl.subplots_adjust(bottom = 0.15)
    pl.grid() #开启网格
    # 主刻度为pi/4
    ax.xaxis.set_major_locator( MultipleLocator(np.pi/4) )
    # 主刻度文本用pi_formatter函数计算
    ax.xaxis.set_major_formatter( FuncFormatter( pi_formatter ) )
    # 副刻度为pi/20
    ax.xaxis.set_minor_locator( MultipleLocator(np.pi/20) )
    # 设置刻度文本的大小
    for tick in ax.xaxis.get_major_ticks():
        tick.label1.set_fontsize(16)
    pl.show()

    画点图

    import matplotlib.pyplot as plt
    from sklearn.datasets import load_boston
    X1 = load_boston()['data'][:, [8]]
    X2 = load_boston()['data'][:, [10]]
    plt.scatter(X1,X2, marker = 'o')
    plt.show()

    画三维图

    m=pd.read_csv(sportinte)
    x,y,z = m['ydra'],m['zyd'],m['rs12612420']
    ax=plt.subplot(111,projection='3d') #创建一个三维的绘图工程
    ax.scatter(x[:],y[:],z[:],c='r')
    #将数据点分成三部分画,在颜色上有区分度
    plt.scatter(y,z, marker = 'o')
    ax.set_zlabel('rs12612420') #坐标轴
    ax.set_ylabel(u'周运动')
    ax.set_xlabel(u'运动热爱')
    plt.show()

    #散点柱状图

    #coding:utf-8
    import  numpy as np
    #pip install seaborn
    import seaborn as sns
    sns.set(style="whitegrid", color_codes=True)
    np.random.seed(sum(map(ord, "categorical")))
    titanic = sns.load_dataset("titanic")
    tips = sns.load_dataset("tips")
    iris = sns.load_dataset("iris")
    #在带状图中,散点图通常会重叠。这使得很难看到数据的完全分布
    sns.stripplot(x="day", y="total_bill", data=tips)
    sns.plt.show()

    #加入随机抖动”来调整位置
    sns.stripplot(x="day", y="total_bill", data=tips, jitter=True);

    #避免重叠点
    sns.swarmplot(x="day", y="total_bill", data=tips)

    #加入说明label
    sns.swarmplot(x="day", y="total_bill", hue="sex", data=tips);

    sportinte="/Users/similarface/Documents/sport耐力与爆发/sportinter.csv"
    m=pd.read_csv(sportinte)
    sns.swarmplot(x="ydra", y="zyd", hue="rs12612420", data=m);
    sns.plt.show()

     箱图

    sportinte="/Users/similarface/Documents/sport耐力与爆发/sportinter.csv"
    m=pd.read_csv(sportinte)
    sns.boxplot(x="ydra", y="zyd", hue="rs12612420", data=m)
    sns.plt.show()

    小提琴图

    sportinte="/Users/similarface/Documents/sport耐力与爆发/sportinter.csv"
    m=pd.read_csv(sportinte)
    sns.violinplot(x="ydra", y="zyd", hue="rs12612420", data=m)
    sns.plt.show()

    sportinte="/Users/similarface/Documents/sport耐力与爆发/sportinter.csv"
    m=pd.read_csv(sportinte)
    sns.violinplot(x="ydra", y="zyd", hue="rs12612420", data=m,bw=.1, scale="count", scale_hue=False)
    sns.plt.show()

    sns.violinplot(x="day", y="total_bill", hue="sex", data=tips, split=True);
    sns.plt.show()

    #加入每个观测值
    sns.violinplot(x="day", y="total_bill", hue="sex", data=tips,
                   split=True, inner="stick", palette="Set3");

    #加入点柱状图和小提琴图
    sns.violinplot(x="day", y="total_bill", data=tips, inner=None) sns.swarmplot(x="day", y="total_bill", data=tips, color="w", alpha=.5);

     柱状

    sns.barplot(x="sex", y="survived", hue="class", data=titanic);
    sns.plt.show()

    #count 计数图
    sns.countplot(x="deck", data=titanic, palette="Greens_d");
    sns.countplot(y="deck", hue="class", data=titanic, palette="Greens_d");
    #泰坦尼克号获取与船舱等级
    sns.pointplot(x="sex", y="survived", hue="class", data=titanic)

    sns.factorplot(x="time", y="total_bill", hue="smoker", col="day", data=tips, kind="box", size=4, aspect=.5);
    sns.plt.show()

    g = sns.PairGrid(tips,
                     x_vars=["smoker", "time", "sex"],
                     y_vars=["total_bill", "tip"],
                     aspect=.75, size=3.5)
    g.map(sns.violinplot, palette="pastel");
    sns.plt.show()

    #当有很多因素的时候怎么去看这些是否有潜在关系

    import matplotlib.pyplot as plt
    import seaborn as sns
    _ = sns.pairplot(df[:50], vars=[1,2,3,4,5,6,7,8,9,10,11], hue="class", size=1)
    plt.show()

    可以发现一些端倪

    ref:http://seaborn.pydata.org/tutorial/categorical.html  

    画饼图:

    #coding:utf-8
    __author__ = 'similarface'
    '''
    耳垢项目
    '''
    import pandas as pd
    import seaborn as sns
    from scipy.stats import spearmanr
    meat_to_phenotypes = {
      'Dry': 1,
      'Wet': 0,
      'Un': 2,
    }
    
    meat_to_genotype = {
      'TT': 2,
      'CT': 1,
      'CC': 0,
    }
    filepath="/Users/similarface/Documents/phenotypes/耳垢/ergou20170121.txt"
    data=pd.read_csv(filepath,sep="	")
    data['phenotypesid'] = data['phenotypes'].map(meat_to_phenotypes)
    data['genotypeid'] = data['genotype'].map(meat_to_genotype)
    #######################################################################################
    #均线图
    #剔除不清楚
    #####
    # data=data[data.phenotypesid!=2]
    # p=sns.pointplot(x="genotype", y='phenotypesid', data=data,markers="o")
    # p.axes.set_title(u"均线图[湿耳0干耳1]")
    #####
    #######################################################################################
    
    
    
    #######################################################################################
    #####
    #联结图
    # p=sns.jointplot(x="genotypeid", y="phenotypesid", data=data,stat_func=spearmanr)
    #####
    #######################################################################################
    
    
    #######################################################################################
    #####
    # data=data[data.phenotypesid!=2]
    # sns.countplot(x="genotype", hue="phenotypes", data=data)
    #p.axes.set_title(u"柱状图[湿耳0干耳1]")
    #####
    #######################################################################################
    
    #sns.plt.show()
    
    #######################################################################################
    #####
    import matplotlib.pyplot as plt
    
    #
    data=data[data.phenotypesid!=2]
    plt.subplot(221)
    g=data.groupby(['phenotypes'])
    label_list=g.count().index
    plt.pie(g.count()['genotype'],labels=label_list,autopct="%1.1f%%")
    plt.title(u"问卷统计饼图(不含Unkown)")
    
    
    datag=data[data.genotype=='TT']
    g=datag.groupby(['phenotypes'])
    label_list=g.count().index
    plt.subplot(222)
    plt.pie(g.count()['genotype'],labels=label_list,autopct="%1.1f%%")
    plt.title(u"耳垢TT")
    
    
    datag=data[data.genotype=='CT']
    g=datag.groupby(['phenotypes'])
    label_list=g.count().index
    plt.subplot(223)
    plt.pie(g.count()['genotype'],labels=label_list,autopct="%1.1f%%")
    plt.title(u"耳垢CT")
    
    
    datag=data[data.genotype!='TT']
    g=datag.groupby(['phenotypes'])
    label_list=g.count().index
    plt.subplot(224)
    plt.pie(g.count()['genotype'],labels=label_list,autopct="%1.1f%%")
    plt.title(u"耳垢!=TT")
    
    plt.show()
    #####
    #######################################################################################

    #coding:utf-8
    __author__ = 'similarface'
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    import numpy as np
    
    def fun(x,y):
        #return np.power(x,2)+np.power(y,2)
        return 2*(x*0.8+y*0.1)*(x*0.2+y*0.9)*(x*0.3+y*0.7)*(x*0.3+y*0.7)*(x*0.4+y*0.7)*(x*0.4+y*0.7)
    
    def fun2(xx,yy):
        return xx
    
    fig1=plt.figure()
    ax=Axes3D(fig1)
    X=np.arange(0,1,0.01)
    Y=np.arange(0,1,0.01)
    
    XX=np.arange(0,1,0.01)
    YY=np.arange(1,0,-0.01)
    
    ZZ=np.arange(0,1,0.01)
    
    ZZ,ZZ=np.meshgrid(ZZ,ZZ)
    
    #ZZ=fun2(XX,YY)
    X,Y=np.meshgrid(X,Y)
    Z=fun(X,Y)
    plt.title("This is main title")
    ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.coolwarm)
    
    ax.plot_surface(XX, YY, ZZ, rstride=1, cstride=1, cmap=plt.cm.coolwarm)
    
    ax.set_xlabel(u'θ1', color='r')
    ax.set_ylabel(u'θ2', color='g')
    ax.set_zlabel('z label', color='b')
    plt.show()

  • 相关阅读:
    魔兽争霸RPG地图开发教程2
    魔兽争霸RPG地图开发教程1
    php mysql decimal 多余的0 解决方案
    windows下创建子进程过程中代码重复执行问题
    python多进程的理解 multiprocessing Process join run
    进程和线程的概念、区别和联系
    Python中的魔术方法详解(双下方法)
    socketserver源码剖析
    Socketserver详解
    全网最详细python中socket套接字send与sendall的区别
  • 原文地址:https://www.cnblogs.com/similarface/p/6252496.html
Copyright © 2011-2022 走看看