python DataScience数据分析笔记day02

day02-数据可视化-坐标-图例-标注-子图-刻度-半对数坐标-散点图-条形图-饼状图-等高线
        3、设置坐标范围
                mp.xlim(水平坐标最小值,水平坐标最大值)
                mp.ylim(垂直坐标最小值,垂直坐标最大值)
                示例:
                    import numpy as np
                    import matplotlib.pyplot as mp
                    x = np.linspace(-np.pi,np.pi,1000)
                    cos_y = np.cos(x) / 2
                    sin_y = np.sin(x)
                    mp.xlim(x.min() * 1.2,x.max() * 1.2 )
                    mp.ylim(sin_y.min() * 1.2,sin_y.max() * 1.2 )
                    mp.plot(x,cos_y,linestyle='--',linewidth= 1 ,color = 'green') # -- 为虚线
                    mp.plot(x,sin_y,linestyle=':', linewidth = 4,color='blue') # : 为点线
                    mp.show()
        4、设置坐标刻度
                mp.xticks([位置序列],[标签序列]),标签序列可以不需要
                mp.yticks([位置序列],[标签序列])
                示例:
                    import numpy as np
                    import matplotlib.pyplot as mp
                    x = np.linspace(-np.pi,np.pi,1000)
                    cos_y = np.cos(x) / 2
                    sin_y = np.sin(x)
                    mp.xlim(x.min() * 1.2,x.max() * 1.2 )
                    mp.ylim(sin_y.min() * 1.2,sin_y.max() * 1.2 )
                    mp.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi*3/4,np.pi],
                                        [r'$-\pi$',r'$-\frac{\pi}{2}$',r'$0$', #r'$0$' 也可直接写 0,但为了统一格式,就按r'$0$'
                                         r'$\frac{\pi}{2}$',r'$\frac{3\pi}{4}$',
                                         r'$\pi$'])# r'$-\pi$ ,标签转义格式 \frac{分子}{分母} 分数格式化
                    mp.yticks([-1,-0.5,0.5,1])
                    mp.plot(x,cos_y,linestyle='--',linewidth= 1 ,color = 'green') # -- 为虚线
                    mp.plot(x,sin_y,linestyle=':', linewidth = 4,color='blue') # : 为点线
                    mp.show()
        5、LeTex格式标准
                r'$\pi$'
                r'$\frac{\pi}{2}$'
        6、设置坐标轴
                坐标轴名称:left/right/bottom/top
                ax = mp.gca() #获取当前坐标轴
                ax.spines['坐标轴名'].set_position((坐标系,坐标))#设置坐标位置,相当于移动坐标
                ax.spines['坐标轴名'].set_color(颜色)#设置坐标颜色
                示例:
                    import numpy as np
                    import matplotlib.pyplot as mp
                    x = np.linspace(-np.pi,np.pi,1000)
                    cos_y = np.cos(x) / 2
                    sin_y = np.sin(x)
                    mp.xlim(x.min() * 1.2,x.max() * 1.2 )
                    mp.ylim(sin_y.min() * 1.2,sin_y.max() * 1.2 )
                    mp.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi*3/4,np.pi],
                                        [r'$-\pi$',r'$-\frac{\pi}{2}$',r'$0$', #r'$0$' 也可直接写 0,但为了统一格式,就按r'$0$'
                                         r'$\frac{\pi}{2}$',r'$\frac{3\pi}{4}$',
                                         r'$\pi$'])# r'$-\pi$ ,标签转义格式 \frac{分子}{分母} 分数格式化
                    mp.yticks([-1,-0.5,0.5,1])
                    ax = mp.gca()
                    ax.spines['left'].set_position(('data',0))   # 将左轴移动到数据坐标系的0点
                    ax.spines['bottom'].set_position(('data',0))  #将底轴移动到数据坐标系的0点
                    ax.spines['right'].set_color('none')    #右边坐标颜色设置为透明
                    ax.spines['top'].set_color('none')      #顶边坐标颜色设置为透明
                    mp.plot(x,cos_y,linestyle='--',linewidth= 1 ,color = 'green') # -- 为虚线
                    mp.plot(x,sin_y,linestyle=':', linewidth = 4,color='blue') # : 为点线
                    mp.show()
        7、图例
                mp.plot(...,label=图例标签,...)
                mp.legend([loc=位置])
                示例:
                    mp.plot(x,cos_y,linestyle='--',linewidth= 1 ,color = 'green',label=r'$y=\frac{1}{2}cos(x)$') # -- 为虚线
                    mp.plot(x,sin_y,linestyle=':', linewidth = 4,color='blue',label=r'$y=sin(x)$') # : 为点线
                    mp.legend(loc='lower right')
        8、标注特殊点
                mp.scatter(水平坐标,垂直坐标,s=点大小,marker=点型,
                        color=颜色,edgecolor=边缘色,facecolor=填充色,
                        zorder=图层序号,小的先画,大的后画)
                        marker,默认为园点,'s'为方形,'*'为五角星点
                示例:
                    import numpy as np
                    import matplotlib.pyplot as mp
                    x = np.linspace(-np.pi,np.pi,1000)
                    cos_y = np.cos(x) / 2
                    sin_y = np.sin(x)
                    xo = np.pi*3/4
                    yo_cos = np.cos(xo)/2
                    yo_sin = np.sin(xo)
                    mp.xlim(x.min() * 1.2,x.max() * 1.2 )
                    mp.ylim(sin_y.min() * 1.2,sin_y.max() * 1.2 )
                    mp.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi*3/4,np.pi],
                                        [r'$-\pi$',r'$-\frac{\pi}{2}$',r'$0$', #r'$0$' 也可直接写 0,但为了统一格式,就按r'$0$'
                                         r'$\frac{\pi}{2}$',r'$\frac{3\pi}{4}$',
                                         r'$\pi$'])# r'$-\pi$ ,标签转义格式 \frac{分子}{分母} 分数格式化
                    mp.yticks([-1,-0.5,0.5,1])
                    ax = mp.gca()
                    ax.spines['left'].set_position(('data',0))   # 将左轴移动到数据坐标系的0点
                    ax.spines['bottom'].set_position(('data',0))  #将底轴移动到数据坐标系的0点
                    ax.spines['right'].set_color('none')    #右边坐标颜色设置为透明
                    ax.spines['top'].set_color('none')      #顶边坐标颜色设置为透明
                    mp.plot(x,cos_y,linestyle='--',linewidth= 1 ,color = 'green',label=r'$y=\frac{1}{2}cos(x)$') # -- 为虚线
                    mp.plot(x,sin_y,linestyle=':', linewidth = 4,color='blue',label=r'$y=sin(x)$') # : 为点线
                    mp.scatter([xo,xo],[yo_cos,yo_sin],marker='*',s=150,edgecolor='blue',
                                         facecolor='white',zorder=3)
                    mp.plot([xo,xo],[yo_cos,yo_sin])
                    mp.legend()
                    #mp.legend(loc='lower right')
                    mp.show()
        9、在图中显示标注
                mp.annotate(
                        备注文本,
                        xy=目标坐标,
                        xycoords=目标坐标系,
                        xytext=文本坐标,
                        textcoords=文本坐标系,
                        fontsize=字体大小,
                        arrowprops=箭头线属性
                )
                xycoords:xy 坐标系统
                    ‘data’:沿用所标注对象的坐标方式
                    ‘figure points’:从画布的左下角,按照“点”来计算
                    ‘figure pixels’:从画布的左下角,按照“像素”来计算
                    ‘figure fraction’:从画布的左下角,按照“比例”来计算
                    ‘axes points’:从图表的左下角,按照“点”来计算
                    ‘axes pixels’:从图表的左下角,按照“像素”来计算
                    ‘axes fraction’:从图表的左下角,按照“比例”来计算
                    ‘polar’:极坐标
                textcoords:xytext 的坐标体系
                    包括所有 xycoords 的方式
                    ‘offset points’:从 xy 处,按照“点”来计算
                    ‘offset pixels’:从 xy 处,按照“像素”来计算
                示例:
                    import numpy as np
                    import matplotlib.pyplot as mp
                    x = np.linspace(-np.pi,np.pi,1000)
                    cos_y = np.cos(x) / 2
                    sin_y = np.sin(x)
                    xo = np.pi*3/4
                    yo_cos = np.cos(xo)/2
                    yo_sin = np.sin(xo)
                    mp.xlim(x.min() * 1.2,x.max() * 1.2 )
                    mp.ylim(sin_y.min() * 1.2,sin_y.max() * 1.2 )
                    mp.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi*3/4,np.pi],
                                        [r'$-\pi$',r'$-\frac{\pi}{2}$',r'$0$', #r'$0$' 也可直接写 0,但为了统一格式,就按r'$0$'
                                         r'$\frac{\pi}{2}$',r'$\frac{3\pi}{4}$',
                                         r'$\pi$'])# r'$-\pi$ ,标签转义格式 \frac{分子}{分母} 分数格式化
                    mp.yticks([-1,-0.5,0.5,1])
                    ax = mp.gca()
                    ax.spines['left'].set_position(('data',0))   # 将左轴移动到数据坐标系的0点
                    ax.spines['bottom'].set_position(('data',0))  #将底轴移动到数据坐标系的0点
                    ax.spines['right'].set_color('none')    #右边坐标颜色设置为透明
                    ax.spines['top'].set_color('none')      #顶边坐标颜色设置为透明
                    mp.plot(x,cos_y,linestyle='--',linewidth= 1 ,color = 'green',label=r'$y=\frac{1}{2}cos(x)$') # -- 为虚线
                    mp.plot(x,sin_y,linestyle=':', linewidth = 4,color='blue',label=r'$y=sin(x)$') # : 为点线
                    mp.scatter([xo,xo],[yo_cos,yo_sin],marker='*',s=150,edgecolor='blue',
                                         facecolor='white',zorder=3)
                    mp.annotate(
                            r'$\frac{1}{2}cos(\frac{3\pi}{4})=-\frac{\sqrt{2}}{4}$',
                            xy=(xo,yo_cos),xycoords='data',
                            xytext=(-90,-40),textcoords='offset points',
                            fontsize=14,
                            arrowprops=dict(arrowstyle='->',
                                                            connectionstyle='arc3,rad=.2'))
                    mp.annotate(
                            r'$\sin(\frac{3\pi}{4})=\frac{\sqrt{2}}{2}$',
                            xy=(xo,yo_sin),xycoords='data',
                            xytext=(20,20),textcoords='offset points',
                            fontsize=14,
                            arrowprops=dict(arrowstyle='->',
                                                            connectionstyle='arc3,rad=.2'))                
                    mp.plot([xo,xo],[yo_cos,yo_sin])
                    mp.legend()
                    #mp.legend(loc='lower right')
                    mp.show()
        10、图形对象(图形窗口)
                mp.figure(窗口名称,figsize=窗口大小,dpi=分辨率,facecolor=颜色)
                如果窗口名称第一次出现,则创建,其标题栏显示该名称
                如果已经出现过,则不再创建,而只是将该名称对应的窗口设置为当前窗口
                所谓当前窗口,就是接受后续绘图操作的窗口。
                mp.title(标题文本,fontsize=字体大小)
                mp.xlabel(水平轴标签,fontsize=字体大小)
                mp.ylabel(垂直轴标签,fontsize=字体大小)
                mp.tick_params(...,labelsize=刻度标签字体大小,...),设置刻度属性
                mp.grid(linestyle=网格线型)设置网格线
                mp.tight_layout() 紧凑布局
                示例一:
                    import numpy as np
                    import matplotlib.pyplot as mp
                    x = np.linspace(-np.pi,np.pi,1000)
                    cos_y = np.cos(x) / 2
                    sin_y = np.sin(x)
                    mp.figure('Figure Object 1',figsize=(4,3),dpi = 120,facecolor='lightgray')
                    mp.title('Figure Object 1',fontsize=16)
                    mp.xlabel('x',fontsize=12)
                    mp.ylabel('y',fontsize=12)
                    mp.tick_params(labelsize=8)
                    mp.grid(linestyle=':')
                    mp.tight_layout() #紧凑布局
                    mp.show()
                示例二:
                    import numpy as np
                    import matplotlib.pyplot as mp
                    x = np.linspace(-np.pi,np.pi,1000)
                    cos_y = np.cos(x) / 2
                    sin_y = np.sin(x)
                    #创建窗口"Figure Object 1"
                    mp.figure('Figure Object 1',figsize=(4,3),dpi = 120,facecolor='lightgray')
                    mp.title('Figure Object 1',fontsize=16)
                    mp.xlabel('x',fontsize=12)
                    mp.ylabel('y',fontsize=12)
                    mp.tick_params(labelsize=8)
                    mp.grid(linestyle=':')
                    mp.tight_layout() #紧凑布局
                    #创建窗口"Figure Object 2"
                    mp.figure('Figure Object 2',figsize=(4,3),dpi = 120,facecolor='lightgray')
                    mp.title('Figure Object 2',fontsize=16)
                    mp.xlabel('x',fontsize=12)
                    mp.ylabel('y',fontsize=12)
                    mp.tick_params(labelsize=8)
                    mp.grid(linestyle=':')
                    mp.tight_layout() #紧凑布局
                    mp.figure('Figure Object 1') #设置当前窗口为"Figure Object 1"
                    mp.plot(x,cos_y,c='dodgerblue' ,
                                    label=r'$y=\frac{1}{2}cos(x)$') #在当前窗口中画图
                    mp.legend()
                    mp.figure('Figure Object 2') #设置当前窗口为"Figure Object 2"
                    mp.plot(x,sin_y,c='orangered',label=r'$y=sin(x)$') #在当前窗口中画图
                    mp.legend()
                    mp.show()
        11、子图
                1、矩阵式布局(等分布局)
                    mp.subplot(行数,列数,图号序列序号)
                        例如:如9等分画面,即3x3矩阵,如图号序列为:
                                    1 2 3
                                    4 5 6
                                    7 8 9
                                如需调用5号窗口,则为:
                                        mp.subplot(3,3,5) ,表示将画面9等分,并选择5号窗口
                                等价于:mp.subplot(335)
                    示例:
                        import matplotlib.pyplot as mp
                        mp.figure('Sub1',facecolor='lightgray')
                        #以下第一个子图
                        mp.subplot(221) #将画面四等分,将本窗口设置在第一个位置
                        mp.xticks(()) #将x坐标轴置空,也就是不显示
                        mp.yticks(()) #将y坐标轴置空,也就是不显示
                        #ha水平对齐方式。va垂直对齐方式。alpha透明度
                        mp.text(0.5,0.5,'No.1',ha='center',va='center',size=24,alpha=0.5)
                        #以下第二个子图
                        mp.subplot(222) #将画面四等分,将本窗口设置在第二个位置
                        mp.xticks(()) #将x坐标轴置空,也就是不显示
                        mp.yticks(()) #将y坐标轴置空,也就是不显示
                        mp.text(0.5,0.5,'No.2',ha='center',va='center',size=24,alpha=0.5)
                        #ha水平对齐方式。va垂直对齐方式。alpha透明度
                        #以下第三个子图
                        mp.subplot(223) #将画面四等分,将本窗口设置在第二个位置
                        mp.xticks(()) #将x坐标轴置空,也就是不显示
                        mp.yticks(()) #将y坐标轴置空,也就是不显示
                        mp.text(0.5,0.5,'No.3',ha='center',va='center',size=24,alpha=0.5)
                        #ha水平对齐方式。va垂直对齐方式。alpha透明度
                        #以下第四个子图
                        mp.subplot(224) #将画面四等分,将本窗口设置在第二个位置
                        mp.xticks(()) #将x坐标轴置空,也就是不显示
                        mp.yticks(()) #将y坐标轴置空,也就是不显示
                        mp.text(0.5,0.5,'No.4',ha='center',va='center',size=24,alpha=0.5)
                        #ha水平对齐方式。va垂直对齐方式。alpha透明度
                        mp.tight_layout() #紧凑布局
                        mp.show()
                2、网格式布局(栅格布局)
                    导入模块:import matplotlib.gridspec as mg
                    gs = mg.GridSpec(行数,列数)
                    mp.subplot(gs[指定所占行,列])
                    示例:
                        import matplotlib.pyplot as mp
                        import matplotlib.gridspec as mg
                        mp.figure('Grid',facecolor='lightgray')
                        gs = mg.GridSpec(3,3)
                        #以下第一个子图
                        mp.subplot(gs[0,:2])
                        mp.xticks(())
                        mp.yticks(())
                        mp.text(0.5,0.5,'No.1',ha='center',va='center',size=36,alpha=0.5)
                        #以下第二个子图
                        mp.subplot(gs[1:,0])
                        mp.xticks(())
                        mp.yticks(())
                        mp.text(0.5,0.5,'No.2',ha='center',va='center',size=36,alpha=0.5)
                        #以下第三个子图
                        mp.subplot(gs[1,1])
                        mp.xticks(())
                        mp.yticks(())
                        mp.text(0.5,0.5,'No.3',ha='center',va='center',size=36,alpha=0.5)
                        #以下第四个子图
                        mp.subplot(gs[2,1:])
                        mp.xticks(())
                        mp.yticks(())
                        mp.text(0.5,0.5,'No.4',ha='center',va='center',size=36,alpha=0.5)
                        #以下第五个子图
                        mp.subplot(gs[:2,2])
                        mp.xticks(())
                        mp.yticks(())
                        mp.text(0.5,0.5,'No.5',ha='center',va='center',size=36,alpha=0.5)
                        mp.tight_layout()
                        mp.show()
                3、自由式布局(画面重叠,画中画)
                    mp.axes([左下角坐标x(即左边位置),左下角坐标y(即底边位置),宽,高])
                    示例:
                        import matplotlib.pyplot as mp
                        mp.figure('Axes',facecolor='lightgray')
                        #以下第一个子图
                        mp.axes([0.03,0.038,0.94,0.924])#位置需要计算好
                        mp.xticks(())
                        mp.yticks(())
                        mp.text(0.5,0.5,"Axes1",ha='center',va='center',size=24,alpha=0.5)
                        #以下第二个子图
                        mp.axes([0.63,0.076,0.31,0.308])#位置需要计算好
                        mp.xticks(())
                        mp.yticks(())
                        mp.text(0.5,0.5,"Axes2",ha='center',va='center',size=24,alpha=0.5)
                        mp.show()
        12、刻度定位器
                定位器对象 = mp.xxxxLocator(具体参数取决于不同的定位器),xxxx代表众多定位器中的一种
                ax = mp.gca()
                ax.xaxis 获得x轴(包括上下轴)
                ax.yaxis 获得y轴(包括左右轴)
                ax.xaxis.set_major_locator(定位器对象)设置主刻度定位器
                ax.xaxis.set_minor_locator(定位器对象)设置次刻度定位器
                ax.yaxis.set_major_locator(定位器对象)设置主刻度定位器
                ax.yaxis.set_minor_locator(定位器对象)设置次刻度定位器
                示例:
                    import numpy as np
                    import matplotlib.pyplot as mp
                    mp.figure('Locator')#创建图形窗口
                    locators = [
                            'mp.NullLocator()',  #空定位器,无刻度
                            #nbins=3 最多标注3个点,标注点在[1,3,5,7,9]内选择
                            'mp.MaxNLocator(nbins=3,steps=[1,3,5,7,9])',#最大值定位器
                            'mp.FixedLocator(locs=[0,2.5,5,7.5,10])', #定点定位器,按照locs的值标注刻度
                            'mp.AutoLocator()',#自动定位器,默认缺省的
                            'mp.IndexLocator(offset=0.5,base=1.5)',#索引(等间距)定位器。标注起点刻度为offset,base为步长
                            'mp.MultipleLocator(1.5)',#多点定位器,从0开始,按参数指定间隔绘制刻度,缺省为1
                            'mp.LinearLocator(numticks=6)',#线性定位器,按参数值等分刻度
                            'mp.LogLocator(base=2,subs=[1.0])'#对数定位器,base为底数,subs为指数,增量绘制刻度
                    ] #将多个定位器放在列表中
                    n_locators = len(locators)
                    #遍历刻度定器列表
                    for i, locator in enumerate(locators):
                            #为每个刻度定位器创建一个子图
                            mp.subplot(n_locators,1,i+1)
                            mp.xlim(0,10)
                            mp.ylim(-1,1)
                            mp.yticks(())
                            ax = mp.gca()#获取当前坐标轴
                            ax.spines['left'].set_color('none')#隐藏左轴
                            ax.spines['top'].set_color('none') #隐藏顶轴
                            ax.spines['right'].set_color('none')#隐藏右轴
                            ax.spines['bottom'].set_position(('data',0))#将底轴移动到中心位置
                            #设置水平坐标的主刻度定位器
                            ax.xaxis.set_major_locator(eval(locator)) #eval,将字符串按python指令格式执行
                            # 设置水平坐标的次刻度定位器为多点定位器,点间隔为0.1
                            ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1)) #MultipleLocator多点定位器,每隔0.1画一个点,默认为1
                            #绘制一条水平线,无色透明
                            mp.plot(np.arange(11),np.zeros(11),c = 'none')
                            #标记刻度定位器类名
                            mp.text(5,0.3,locator[3:],ha='center',size=20)
                    mp.tight_layout()
                    mp.show()
        13、刻度网格线
                ax = mp.gca()
                ax.grid(which=选择主次轴'major'/'minor',
                                axis=选择轴向'x'/'y'/'both',
                                linewidth=线宽,linestyle=线型,color=颜色,
                                alpha=透明度)
                示例:
                    import numpy as np
                    import matplotlib.pyplot as mp
                    x = np.linspace(-5,5,1000)
                    y = 8 * np.sinc(x)
                    mp.figure('Grid',facecolor='lightgray')
                    mp.title('Grid',fontsize=20)
                    mp.xlabel('x',fontsize=14)
                    mp.ylabel('y',fontsize=14)
                    ax = mp.gca()
                    ax.xaxis.set_major_locator(mp.MultipleLocator())#设置主刻度定位器为多点定位器,按默认1间隔刻度
                    ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1))#设置次刻度定位器为0.1间隔的多点定位器
                    ax.yaxis.set_major_locator(mp.MultipleLocator())
                    ax.yaxis.set_minor_locator(mp.MultipleLocator(0.1))
                    mp.tick_params(labelsize=10)
                    ax.grid(which='major',axis='both',linewidth=0.75,
                                    linestyle='-',color='limegreen')  #linestyle='-' 实线,'--'虚线
                    ax.grid(which='minor',axis='both',linewidth=0.25,
                                    linestyle='-',color='limegreen')
                    mp.plot(x,y,c='dodgerblue',label=r'$y=8sinc(x)$')
                    mp.legend()
                    mp.show()
        14、半对数坐标
                mp.semilogy(里面参数同plot一样) ,y半对数坐标
                mp.semilogy(里面参数同plot一样) ,y半对数坐标
                示例:
                    import numpy as np
                    import matplotlib.pyplot as mp
                    y = np.array([1,10,100,1000,100,10,1])
                    mp.figure('Normal & Grid',facecolor='lightgray')
                    #以下第一张子图,普通坐标
                    mp.subplot(211)
                    mp.title('Normal',fontsize=20)
                    mp.ylabel('y',fontsize=14)
                    ax = mp.gca()
                    ax.xaxis.set_major_locator(mp.MultipleLocator())#设置主刻度定位器为多点定位器,按默认1间隔刻度
                    ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1))#设置次刻度定位器为0.1间隔的多点定位器
                    ax.yaxis.set_major_locator(mp.MultipleLocator(250))
                    ax.yaxis.set_minor_locator(mp.MultipleLocator(50))
                    mp.tick_params(labelsize=10)
                    ax.grid(which='major',axis='both',linewidth=0.75,
                                    linestyle='-',color='limegreen')  #linestyle='-' 实线,'--'虚线
                    ax.grid(which='minor',axis='both',linewidth=0.25,
                                    linestyle='-',color='limegreen')
                    mp.plot(y,'o-',c='dodgerblue',label='plot') #'o-',连点成线
                    mp.legend()
                    #以下第二张子图,对数坐标
                    mp.subplot(212)
                    mp.title('Log',fontsize=20)
                    mp.xlabel('x',fontsize=14)
                    mp.ylabel('y',fontsize=14)
                    ax = mp.gca()
                    ax.xaxis.set_major_locator(mp.MultipleLocator())#设置主刻度定位器为多点定位器,按默认1间隔刻度
                    ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1))#设置次刻度定位器为0.1间隔的多点定位器
                    # ax.yaxis.set_major_locator(mp.MultipleLocator(250))
                    # ax.yaxis.set_minor_locator(mp.MultipleLocator(50))
                    mp.tick_params(labelsize=10)
                    ax.grid(which='major',axis='both',linewidth=0.75,
                                    linestyle='-',color='limegreen')  #linestyle='-' 实线,'--'虚线
                    ax.grid(which='minor',axis='both',linewidth=0.25,
                                    linestyle='-',color='limegreen')
                    mp.semilogy(y,'o-',c='dodgerblue',label='semilogy') #'o-',连点成线
                    mp.legend()
                    mp.tight_layout()
                    mp.show()
        15、散点图
                mp.scatter()
                通过每个点的坐标,颜色,大小,形状,代表不同的特征值
                如                身体,体重,性别,年龄段,种族
                对应设置:x            y            颜色    大小        形状
                示例:
                    import numpy as np
                    import matplotlib.pyplot as mp
                    n = 1000 #样本数
                    #假设每个样本有三个特征,分别为x, y, d
                    x = np.random.normal(0,1,n) #标准正态分布,标准差为1,数量为n
                    y = np.random.normal(0,1,n) #标准正态分布,标准差为1,数量为n
                    d = np.sqrt( x ** 2 + y ** 2)
                    mp.figure('Scatter',facecolor='lightgray')
                    mp.title('Scatter',fontsize=20)
                    mp.xlabel('x',fontsize=14)
                    mp.ylabel('y',fontsize=14)
                    mp.tick_params(labelsize=10)
                    mp.grid(linestyle=':')
                    mp.scatter(x, y,c=d,cmap='jet_r',s=60,alpha=0.5) #c 是颜色,cmap是颜色映射,
                    # 以此表示特征d,'jet_r'是深红到深蓝的渐变颜色表,s是大小,也可作为变量表示一个特征
                    mp.show()
        16、颜色填充
                mp.fill_between(
                    边界曲线上点的水平坐标,
                    下边界曲线上点的垂直坐标,
                    上边界曲线上的的垂直坐标,
                    填充条件,color=颜色, alpha=透明度
                    )
                示例:
                    import numpy as np
                    import matplotlib.pyplot as mp
                    n = 1000 #样本数
                    x = np.linspace(0,8 * np.pi,n)
                    sin_y = np.sin(x)
                    cos_y = np.cos(x/2)/2
                    mp.figure('fill',facecolor='lightgray')
                    mp.title('fill',fontsize=20)
                    mp.xlabel('x',fontsize=14)
                    mp.ylabel('y',fontsize=14)
                    mp.tick_params(labelsize=10)
                    mp.grid(linestyle=':')
                    mp.plot(x, sin_y,c='dodgerblue',label=r'$y=sin(x)$')
                    mp.plot(x, cos_y,c='orangered',label=r'$y=\frac{1}{2}cos(\frac{x}{2})$')
                    mp.fill_between(x,cos_y,sin_y,cos_y < sin_y,color='dodgerblue',alpha=0.2)
                    mp.fill_between(x,cos_y,sin_y,cos_y > sin_y,color='orangered',alpha=0.2)
                    mp.legend()
                    mp.show()
        17、条形图
                mp.bar(水平坐标,高度,宽度,底坐标(可缺省0),
                        color=颜色,label=图例,alpha=透明度)
                示例:
                    import numpy as np
                    import matplotlib.pyplot as mp
                    apples = np.array([30,25,22,35,21,29,20,24,33,19,27,18])
                    oranges = np.array([24,33,19,27,35,20,15,27,20,32,21,24])
                    mp.figure('bar',facecolor='lightgray')
                    mp.title('bar',fontsize=20)
                    mp.xlabel('Month',fontsize=14)
                    mp.ylabel('Price',fontsize=14)
                    mp.tick_params(labelsize=10)
                    mp.grid(axis='y',linestyle=':')
                    mp.ylim((0,40))
                    x = np.arange(len(apples))
                    mp.bar(x+0.3,apples,0.3,color='dodgerblue',label='Apple')
                    mp.xticks(x+0.1,['Jan','Feb','Mar','Apr','May','Jun',
                                                     'Jly','Aug','Sep','Oct','Nov','Dec'])
                    mp.bar(x,oranges,0.3,color='orangered',label='Orange',alpha=0.8)
                    mp.legend()
                    mp.show()
        18、饼状图
                mp.pie(值,间隙,标签,颜色,格式,
                    shadow=是否带阴影,startangle=起始角度)
                    格式:小数,百分号
                示例:
                    import numpy as np
                    import matplotlib.pyplot as mp
                    values = [26,17,21,29,11]
                    #spaces = [0,0,0,0,0]不留空隙
                    spaces = [0.06,0.01,0.01,0.01,0.01]#间隙为半径的0.01%
                    labels = ['Python','JS','C++','Java','PHP']
                    colors = ['dodgerblue','orangered','limegreen','violet','gold']
                    mp.figure('pie',facecolor='lightgray')
                    mp.title('pie',fontsize=20)
                    mp.pie(values,spaces,labels,colors,'%d%%',shadow=True,startangle=90)
                    mp.axis('equal')#等轴设置
                    mp.show()
        19、等高线图(海拔高度相等的线)
                mp.contourf(x,y,z,阶数,cmap=颜色映射)#这个用颜色填充
                mp.contour(x,y,z,阶数,linewidths=线宽)#这个纯划线
                示例:
                    import numpy as np
                    import matplotlib.pyplot as mp
                    n = 1000 #样本数
                    x,y = np.meshgrid(np.linspace(-3,3,n),
                                                        np.linspace(-3, 3, n)) #meshgrid网格化点阵
                    z = (1 - x / 2 + x**5 + y **3) * np.exp(
                            -x**2 - y**2) #exp表示 e为底,指数为-x**2 - y**2
                    mp.figure('Contour',facecolor='lightgray')
                    mp.title('Contour',fontsize=20)
                    mp.xlabel('x',fontsize=14)
                    mp.ylabel('y',fontsize=14)
                    mp.tick_params(labelsize=10)
                    mp.grid(linestyle=':')
                    mp.contourf(x,y,z,8,cmap='jet')#jet地图颜色映射
                    cntr = mp.contour(x,y,z,20,colors='black',linewidth=0.5)#绘制等高线
                    mp.clabel(cntr,inline_spacing=1,fmt='%.1f',fontsize=10)#为等高线图添加高度标签
                    mp.show()

猜你喜欢

转载自blog.csdn.net/pinecn/article/details/89597442