python 中matplotlib库 的可视化基础图形和基础函数解析学习

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
""""总结 
    https://zhuanlan.zhihu.com/p/70835617
    网站内容"""
def jibentongfa(): # 一个图片的基本参数
    plt.title("标题")  # 括号当中输入标题的名称
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 汉字标题需要加上这句话
    # plt.figure(figsize=(4,4))#第二图的图象大小
    # plt.plot(1,4)#x轴和y轴的中间数,图形会在输入的值显示
    # plt.plot(3,3*2)#*2显示2位小数

    plt.xlim(0, 6)  # x轴坐标轴
    plt.ylim((-5, 3))  # y轴坐标轴
    plt.xlabel('X名称')  # x轴标签
    plt.ylabel('Y名称')  # y轴标签
    plt.rcParams['axes.unicode_minus'] = False  # 如果需要将数字设为负数,也可能出现乱码的情况,这时候可以加下面的代码:
    plt.plot(2, 3, label="第一个图像名称")  # 第一个label
    plt.plot(2, 3 * 2, label="第二个图像名称")  # 第二个label
    plt.legend(loc='best')  # 图列位置,可选best(图像右上方),center(图像正中央)等
    x = np.linspace(0, 10, 200)  # 从0到10之间等距产生200个值
    y = np.sin(x)
    y1 = np.cos(x)
    plt.plot(x, y, linestyle='--', color='r')  # linestyle表示图像的线条形状,color首字母表示颜色
    plt.plot(x, y1, linestyle='--', color='b')  # 没有这句话无法生成线条
    plt.annotate(text='标记点', xy=(3, np.sin(3)), xytext=(4, -2), weight='bold', color='b', \
                 arrowprops=dict(arrowstyle='-|>', color='k'))  # text参数不能改,xytext表示箭头的起点和终点生成一条arrowstyle样式的线条
    """" annotate 函数
        text: 注释信息内容
        xy:箭头点所在的坐标位置
        xytext:注释内容的坐标位置
        arrowprops:设置指向箭头的参数"""
    plt.show()  # 关闭图像


def duotuxyztu(): # 多个图像在一个图片中
    x = np.linspace(0, 10, 200)  # 从0到10之间等距产生200个值
    # y = np.sin(x)
    ax1 = plt.subplot(2, 2, 1)
    plt.plot(x, np.sin(x), 'k')

    ax2 = plt.subplot(2, 2, 2, sharey=ax1)  # 与 ax1 共享y轴
    plt.plot(x, np.cos(x), 'g')

    ax3 = plt.subplot(2, 2, 3)
    plt.plot(x, x, 'r')

    ax4 = plt.subplot(2, 2, 4, sharey=ax3)  # 与 ax3 共享y轴
    plt.plot(x, 2 * x, 'y')
    """"subplot 第一个参数和第二个参数表示分析几行几个而第3个参数表在第几个位置,
    比如本代码为4个区域,代表第4个区域"""""
    plt.show()

def zuzt(): #柱状图
    x = np.arange(10) # arange 生成数组
    y = np.random.randint(0, 20, 10)
    plt.bar(x, y) # 生成柱状图
    plt.show()
def zzt(): # 柱状图多样式
    df = pd.DataFrame(np.random.rand(10, 3), columns=['a', 'b', 'c']) # np.random.rand 生成10*3的矩阵
    df.plot(kind='bar', grid = True, colormap = 'summer_r',stacked = True) # 颜色colormap 参考https://zhuanlan.zhihu.com/p/158871093
    # grid代表网格 kind代表什么样式的图像例如bar表示箱线图,stacked生成的图像是否叠加,可以去掉看自己喜好
    df.plot.barh(grid=True, colormap='BuGn_r') # 这句话表示图像水平显示
    df.plot.barh(grid=True, colormap='BuGn_r', stacked = True)
    plt.show()
if __name__ == '__main__':
    # jibentongfa()
    # duotuxyztu()
    # zuzt()
    zzt()

散点图

class dinatu():
    def jibenyufa(self):  # 散点图基本语法
        x = np.random.rand(10)  # 生成一维数组
        y = np.random.rand(10)
        plt.scatter(x, y)  # x,y组成坐标
        plt.show()

    def jibencshu(self):
        x = np.random.rand(50)
        y = np.random.rand(50)
        colors = np.random.rand(50)  # 随机生成颜色
        t1 = (30 * np.random.rand(50)) ** 2  # 这句话中生成的矩阵要和生成的xy坐标数一直
        # 否则会报错。
        plt.scatter(x, y, t1, c=colors, alpha=0.1)  # alpha 表示颜色的浓度

        plt.show()

    def duotux(self):
        df = pd.DataFrame(np.random.randn(100, 4), columns=list('abcd'))  # columns=list('abcd')表式每一个图名称
        scatter_matrix(df, figsize=(8, 4), marker='o', diagonal='kde',
                       alpha=0.4, range_padding=0.5)
        """
        scatter_matrix 这个函数调用时候注意
        from pandas.plotting import scatter_matrix
        才能调用,如果用pd.scatter_matrix, 会报错,
        figsize 表示生成图形的大小, diagonal='kde',不添加时,为柱状图,
        arker='o',添加以后生成的颗粒园更大,对生成的园点起作用,
        range_padding,函数表示观察图像的大小,调整大小可以起到放大图像和缩小的作用
         """
        plt.show()

 

总代码

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from pandas.plotting import scatter_matrix

""""总结 
    https://zhuanlan.zhihu.com/p/70835617
    网站内容"""


def jibentongfa():  # 一个图片的基本参数
    plt.title("标题")  # 括号当中输入标题的名称
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 汉字标题需要加上这句话
    # plt.figure(figsize=(4,4))#第二图的图象大小
    # plt.plot(1,4)#x轴和y轴的中间数,图形会在输入的值显示
    # plt.plot(3,3*2)#*2显示2位小数

    plt.xlim(0, 6)  # x轴坐标轴
    plt.ylim((-5, 3))  # y轴坐标轴
    plt.xlabel('X名称')  # x轴标签
    plt.ylabel('Y名称')  # y轴标签
    plt.rcParams['axes.unicode_minus'] = False  # 如果需要将数字设为负数,也可能出现乱码的情况,这时候可以加下面的代码:
    plt.plot(2, 3, label="第一个图像名称")  # 第一个label
    plt.plot(2, 3 * 2, label="第二个图像名称")  # 第二个label
    plt.legend(loc='best')  # 图列位置,可选best(图像右上方),center(图像正中央)等
    x = np.linspace(0, 10, 200)  # 从0到10之间等距产生200个值
    y = np.sin(x)
    y1 = np.cos(x)
    plt.plot(x, y, linestyle='--', color='r')  # linestyle表示图像的线条形状,color首字母表示颜色
    plt.plot(x, y1, linestyle='--', color='b')  # 没有这句话无法生成线条
    plt.annotate(text='标记点', xy=(3, np.sin(3)), xytext=(4, -2), weight='bold', color='b',
                 arrowprops=dict(arrowstyle='-|>', color='k'))  # text参数不能改,xytext表示箭头的起点和终点生成一条arrowstyle样式的线条
    """" annotate 函数
        text: 注释信息内容
        xy:箭头点所在的坐标位置
        xytext:注释内容的坐标位置
        arrowprops:设置指向箭头的参数"""
    plt.show()  # 关闭图像


def duotuxyztu():  # 多个图像在一个图片中
    x = np.linspace(0, 10, 200)  # 从0到10之间等距产生200个值
    # y = np.sin(x)
    ax1 = plt.subplot(2, 2, 1)
    plt.plot(x, np.sin(x), 'k')

    ax2 = plt.subplot(2, 2, 2, sharey=ax1)  # 与 ax1 共享y轴
    plt.plot(x, np.cos(x), 'g')

    ax3 = plt.subplot(2, 2, 3)
    plt.plot(x, x, 'r')

    ax4 = plt.subplot(2, 2, 4, sharey=ax3)  # 与 ax3 共享y轴
    plt.plot(x, 2 * x, 'y')
    """"subplot 第一个参数和第二个参数表示分析几行几个而第3个参数表在第几个位置,
    比如本代码为4个区域,代表第4个区域"""""
    plt.show()


def zuzt():  # 柱状图
    x = np.arange(10)  # arange 生成数组
    y = np.random.randint(0, 20, 10)
    plt.bar(x, y)  # 生成柱状图
    plt.show()


def zzt():  # 柱状图多样式
    df = pd.DataFrame(np.random.rand(10, 3), columns=['a', 'b', 'c'])  # np.random.rand 生成10*3的矩阵
    df.plot(kind='bar', grid=True, colormap='summer_r',
            stacked=True)  # 颜色colormap 参考https://zhuanlan.zhihu.com/p/158871093
    # grid代表网格 kind代表什么样式的图像例如bar表示箱线图,stacked生成的图像是否叠加,可以去掉看自己喜好
    df.plot.barh(grid=True, colormap='BuGn_r')  # 这句话表示图像水平显示
    df.plot.barh(grid=True, colormap='BuGn_r', stacked=True)
    plt.show()


"""散点图"""


class dinatu():
    def jibenyufa(self):  # 散点图基本语法
        x = np.random.rand(10)  # 生成一维数组
        y = np.random.rand(10)
        plt.scatter(x, y)  # x,y组成坐标
        plt.show()

    def jibencshu(self):
        x = np.random.rand(50)
        y = np.random.rand(50)
        colors = np.random.rand(50)  # 随机生成颜色
        t1 = (30 * np.random.rand(50)) ** 2  # 这句话中生成的矩阵要和生成的xy坐标数一直
        # 否则会报错。
        plt.scatter(x, y, t1, c=colors, alpha=0.1)  # alpha 表示颜色的浓度

        plt.show()

    def duotux(self):
        df = pd.DataFrame(np.random.randn(100, 4), columns=list('abcd'))  # columns=list('abcd')表式每一个图名称
        scatter_matrix(df, figsize=(8, 4), marker='o', diagonal='kde',
                       alpha=0.4, range_padding=0.5)
        """
        scatter_matrix 这个函数调用时候注意
        from pandas.plotting import scatter_matrix
        才能调用,如果用pd.scatter_matrix, 会报错,
        figsize 表示生成图形的大小, diagonal='kde',不添加时,为柱状图,
        arker='o',添加以后生成的颗粒园更大,对生成的园点起作用,
        range_padding,函数表示观察图像的大小,调整大小可以起到放大图像和缩小的作用
         """
        plt.show()


if __name__ == '__main__':
    # jibentongfa()
    # duotuxyztu()
    # zuzt()
    # zzt()
    t = dinatu()  # 实例化
    # t.jibenyufa()
    # t.jibencshu()
    t.duotux()

第二天———————————————————— 

class yuanbtu():
    def jichuyongfa(self):
        x = np.random.randint(1, 10, 4)  # x = np.random.randint(1, 10, 3) 生成 1,10 的3个数。数组
        plt.pie(x)  # 饼图 pie 函数
        plt.show()

    def yuanbtubiaoqian(self):
        plt.title("标题")  # 括号当中输入标题的名称
        plt.rcParams['font.sans-serif'] = ['SimHei']
        sizes = [5, 5, 5]
        labels = ['ikun', 'xhz', 'liz']
        plt.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=False, startangle=1000, pctdistance=0.6
                , wedgeprops={'linewidth': 5}, frame=True, rotatelabels=True)
        """
        
        labels:列表,各个扇形的标签,
        autopct:设置饼图内各个扇形百分比显示格式,
        %d%% 整数百分比,
        %0.1f 一位小数, 
        %0.1f%% 一位小数百分比, 
        %0.2f%% 两位小数百分比。
        shadow::布尔值 True 或 False,设置饼图的阴影,默认为 False,不设置阴影。
        pctdistance,百分比所在位置
        wedgeprops :字典类型,默认值 None。用于指定扇形的属性,比如边框线颜色、边框线宽度等。例如:wedgeprops={'linewidth':5} 设置 wedge 线宽为5
        frame 图形加上边框,
        rotatelabels,标签指向内容,可能有点丑,看这个喜好和图象设计
        """
        plt.show()


class zhiftu(yuanbtu):  # 图形美化
    def jichuyongfa(self):  # 直方图 美化
        s = pd.Series(np.random.randn(1000))
        s.hist(bins=100, histtype='bar', align='right',
               orientation='vertical', alpha=1, facecolor='b',density = True)
        # density = True表示密度,如果没有这一句命令,
        # 下句s.plot(kind='kde', style='--',color='b')不会生成曲线图
        s.plot(kind='kde', style='--',color='r')

        plt.show()
        """s,为必选参数,绘制图形的基本参数,
           bins 为直方图长条形数目,默认为10
           facecolor,为显示长条形的颜色
           horizontal和vertical为 orientation中的参数表示水平方向还是垂直方向
           align,为选择对其方式left', 'mid', 'right',
           histtype,生成的图形样式'bar', 'barstacked', 'step', 'stepfilled'
           
           """
    def diejia(self): # 折叠图美化
        df = pd.DataFrame({'a': np.random.randn(500) + 1, 'b': np.random.randn(500),
                           'c': np.random.randn(500) - 1, 'd': np.random.randn(500)},
                          columns=list('abcd'))
        df.plot.hist(stacked=True, bins=100, colormap='Blues_r', alpha=0.5, grid=True)
        # stacked=True折叠图的关键命令
        plt.show()
class xxt(): # 箱线图
    def jichu(self):
        np.random.seed(100)  # np.random.seed生成随机数每次相同
        data = np.random.normal(size=1000, loc=0, scale=1) # loc 分布的均值(中心),scale分布的标准差(宽度)
        plt.boxplot(data, sym='o', whis=1.5)
        plt.show()
    def duogxxt(self):
        np.random.seed(100)  # 生成随机数
        data = np.random.normal(size=(1000, 4), loc=0, scale=1)  # 1000个值得4维数组,np.random.normal从正态(高斯)分布中抽取随机样本
        lables = ['A', 'B', 'C', 'D']
        plt.boxplot(data, labels=lables,vert=False)
        plt.show()

 

 

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from pandas.plotting import scatter_matrix
from scipy.stats import norm

""""总结 :
    b:blue
    g:green
    r:red
    c:cyan
    m:magenta
    y:yellow
    k:black
    w:white
    颜色缩写的符号
    https://zhuanlan.zhihu.com/p/70835617
    网站内容"""


def jibentongfa():  # 一个图片的基本参数
    plt.title("标题")  # 括号当中输入标题的名称
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 汉字标题需要加上这句话
    # plt.figure(figsize=(4,4))#第二图的图象大小
    # plt.plot(1,4)#x轴和y轴的中间数,图形会在输入的值显示
    # plt.plot(3,3*2)#*2显示2位小数

    plt.xlim(0, 6)  # x轴坐标轴
    plt.ylim((-5, 3))  # y轴坐标轴
    plt.xlabel('X名称')  # x轴标签
    plt.ylabel('Y名称')  # y轴标签
    plt.rcParams['axes.unicode_minus'] = False  # 如果需要将数字设为负数,也可能出现乱码的情况,这时候可以加下面的代码:
    plt.plot(2, 3, label="第一个图像名称")  # 第一个label
    plt.plot(2, 3 * 2, label="第二个图像名称")  # 第二个label
    plt.legend(loc='best')  # 图列位置,可选best(图像右上方),center(图像正中央)等
    x = np.linspace(0, 10, 200)  # 从0到10之间等距产生200个值
    y = np.sin(x)
    y1 = np.cos(x)
    plt.plot(x, y, linestyle='--', color='r')  # linestyle表示图像的线条形状,color首字母表示颜色
    plt.plot(x, y1, linestyle='--', color='b')  # 没有这句话无法生成线条
    plt.annotate(text='标记点', xy=(3, np.sin(3)), xytext=(4, -2), weight='bold', color='b',
                 arrowprops=dict(arrowstyle='-|>', color='k'))  # text参数不能改,xytext表示箭头的起点和终点生成一条arrowstyle样式的线条
    """" annotate 函数
        text: 注释信息内容
        xy:箭头点所在的坐标位置
        xytext:注释内容的坐标位置
        arrowprops:设置指向箭头的参数"""
    plt.show()  # 关闭图像


def duotuxyztu():  # 多个图像在一个图片中
    x = np.linspace(0, 10, 200)  # 从0到10之间等距产生200个值
    # y = np.sin(x)
    ax1 = plt.subplot(2, 2, 1)
    plt.plot(x, np.sin(x), 'k')

    ax2 = plt.subplot(2, 2, 2, sharey=ax1)  # 与 ax1 共享y轴
    plt.plot(x, np.cos(x), 'g')

    ax3 = plt.subplot(2, 2, 3)
    plt.plot(x, x, 'r')

    ax4 = plt.subplot(2, 2, 4, sharey=ax3)  # 与 ax3 共享y轴
    plt.plot(x, 2 * x, 'y')
    """"subplot 第一个参数和第二个参数表示分析几行几个而第3个参数表在第几个位置,
    比如本代码为4个区域,代表第4个区域"""""
    plt.show()


def zuzt():  # 柱状图
    x = np.arange(10)  # arange 生成数组
    y = np.random.randint(0, 20, 10)
    plt.bar(x, y)  # 生成柱状图
    plt.show()


def zzt():  # 柱状图多样式
    df = pd.DataFrame(np.random.rand(10, 3), columns=['a', 'b', 'c'])  # np.random.rand 生成10*3的矩阵
    df.plot(kind='bar', grid=True, colormap='summer_r',
            stacked=True)  # 颜色colormap 参考https://zhuanlan.zhihu.com/p/158871093
    # grid代表网格 kind代表什么样式的图像例如bar表示箱线图,stacked生成的图像是否叠加,可以去掉看自己喜好
    df.plot.barh(grid=True, colormap='BuGn_r')  # 这句话表示图像水平显示
    df.plot.barh(grid=True, colormap='BuGn_r', stacked=True)
    plt.show()


"""散点图"""


class dinatu():
    def jibenyufa(self):  # 散点图基本语法
        x = np.random.rand(10)  # 生成一维数组
        y = np.random.rand(10)
        plt.scatter(x, y)  # x,y组成坐标
        plt.show()

    def jibencshu(self):
        x = np.random.rand(50)
        y = np.random.rand(50)
        colors = np.random.rand(50)  # 随机生成颜色
        t1 = (30 * np.random.rand(50)) ** 2  # 这句话中生成的矩阵要和生成的xy坐标数一直
        # 否则会报错。
        plt.scatter(x, y, t1, c=colors, alpha=0.5)  # alpha 表示颜色的浓度

        plt.show()

    def duotux(self):
        df = pd.DataFrame(np.random.randn(100, 4), columns=list('abcd'))  # columns=list('abcd')表式每一个图名称
        scatter_matrix(df, figsize=(8, 4), marker='o', diagonal='kde',
                       alpha=1, range_padding=0.8)
        """
        scatter_matrix 这个函数调用时候注意
        from pandas.plotting import scatter_matrix
        才能调用,如果用pd.scatter_matrix, 会报错,
        figsize 表示生成图形的大小, diagonal='kde',不添加时,为柱状图,
        arker='o',添加以后生成的颗粒园更大,对生成的园点起作用,
        range_padding,函数表示观察图像的大小,调整大小可以起到放大图像和缩小的作用
         """
        plt.show()


class yuanbtu():
    def jichuyongfa(self):
        x = np.random.randint(1, 10, 4)  # x = np.random.randint(1, 10, 3) 生成 1,10 的3个数。数组
        plt.pie(x)  # 饼图 pie 函数
        plt.show()

    def yuanbtubiaoqian(self):
        plt.title("标题")  # 括号当中输入标题的名称
        plt.rcParams['font.sans-serif'] = ['SimHei']
        sizes = [5, 5, 5]
        labels = ['ikun', 'xhz', 'liz']
        plt.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=False, startangle=1000, pctdistance=0.6
                , wedgeprops={'linewidth': 5}, frame=True, rotatelabels=True)
        """
        
        labels:列表,各个扇形的标签,
        autopct:设置饼图内各个扇形百分比显示格式,
        %d%% 整数百分比,
        %0.1f 一位小数, 
        %0.1f%% 一位小数百分比, 
        %0.2f%% 两位小数百分比。
        shadow::布尔值 True 或 False,设置饼图的阴影,默认为 False,不设置阴影。
        pctdistance,百分比所在位置
        wedgeprops :字典类型,默认值 None。用于指定扇形的属性,比如边框线颜色、边框线宽度等。例如:wedgeprops={'linewidth':5} 设置 wedge 线宽为5
        frame 图形加上边框,
        rotatelabels,标签指向内容,可能有点丑,看这个喜好和图象设计
        """
        plt.show()


class zhiftu(yuanbtu):  # 图形美化
    def jichuyongfa(self):  # 直方图 美化
        s = pd.Series(np.random.randn(1000))
        s.hist(bins=100, histtype='bar', align='right',
               orientation='vertical', alpha=1, facecolor='b',density = True)
        # density = True表示密度,如果没有这一句命令,
        # 下句s.plot(kind='kde', style='--',color='b')不会生成曲线图
        s.plot(kind='kde', style='--',color='r')

        plt.show()
        """s,为必选参数,绘制图形的基本参数,
           bins 为直方图长条形数目,默认为10
           facecolor,为显示长条形的颜色
           horizontal和vertical为 orientation中的参数表示水平方向还是垂直方向
           align,为选择对其方式left', 'mid', 'right',
           histtype,生成的图形样式'bar', 'barstacked', 'step', 'stepfilled'
           
           """
    def diejia(self): # 折叠图美化
        df = pd.DataFrame({'a': np.random.randn(500) + 1, 'b': np.random.randn(500),
                           'c': np.random.randn(500) - 1, 'd': np.random.randn(500)},
                          columns=list('abcd'))
        df.plot.hist(stacked=True, bins=100, colormap='Blues_r', alpha=0.5, grid=True)
        # stacked=True折叠图的关键命令
        plt.show()
class xxt(): # 箱线图
    def jichu(self):
        np.random.seed(100)  # np.random.seed生成随机数每次相同
        data = np.random.normal(size=1000, loc=0, scale=1) # loc 分布的均值(中心),scale分布的标准差(宽度)
        plt.boxplot(data, sym='o', whis=1.5)
        plt.show()
    def duogxxt(self):
        np.random.seed(100)  # 生成随机数
        data = np.random.normal(size=(1000, 4), loc=0, scale=1)  # 1000个值得4维数组,np.random.normal从正态(高斯)分布中抽取随机样本
        lables = ['A', 'B', 'C', 'D']
        plt.boxplot(data, labels=lables,vert=False)
        plt.show()


if __name__ == '__main__':
    # 柱状图——————————————————————————————
    # jibentongfa()
    # duotuxyztu()
    # zuzt()
    # zzt()
    # 散点图——————————————————————————————
    # t = dinatu()  # 实例化
    # t.jibenyufa()
    # t.jibencshu()
    # t.duotux()
    # 饼图——————————————————————————————
    # b = yuanbtu()
    # b.jichuyongfa()
    # b.yuanbtubiaoqian()
    # 散点图——————————————————————————————
    # s = zhiftu()
    # s.jichuyongfa()
    # s.diejia()
    # 箱线图——————————————————————————————
    x = xxt()
    x.jichu()
    x.duogxxt()

以上为本人初学记录学习过程。

其中部分内容总结而来如果侵权联系作者删除。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值