zoukankan      html  css  js  c++  java
  • matplotlib--可视化库

     matplotlib可视化库---接口文档

    https://matplotlib.org/stable/api/pyplot_summary.html

    1、失业率数据

    import pandas as pd
    unrate = pd.read_csv('unrate.csv')
    # pd.to_datetime() 将int、float、str、datetime类型等数据转换为datetime unrate[
    'DATE'] = pd.to_datetime(unrate['DATE']) #help(pd.to_datetime) unrate.head(12)

     2、折线图:plt.plot(x,y)  /  plt.show()  使用不同的pyplot函数,我们可以创建、自定义和显示图形

    import matplotlib.pyplot as plt
    
    # 使用不同的pyplot函数,我们可以创建、自定义和显示图形。
    plt.plot()
    plt.show()
    #help(plt.plot)
    #help(plt.show)
    #help(plt.xticks)

     3、折线图:plt.plot(x,y) 传入x,y对应的数据         plt.xticks(rotation=45) x坐标,文字45度

           plt.xlabel('x坐标名')

      plt.ylabel('y坐标名')

      plt.title('图标题名')

    first_twelve = unrate[0:120]
    # plt.plot(x,y) 传入x,y对应的数据
    plt.plot(first_twelve['DATE'], first_twelve['VALUE'])
    # x坐标,文字45度
    plt.xticks(rotation=45)
    plt.xlabel('Month')
    plt.ylabel('Unemployment Rate')
    plt.title('Monthly Unemployment Trends, 1948')
    plt.show()

     4、plt.figure(figsize=(10, 10))定义子图尺寸

    import numpy as np
    fig = plt.figure()
    # plt.figure(figsize=(10, 10))定义子图尺寸
    fig = plt.figure(figsize=(10, 10))
    ax1 = fig.add_subplot(2,1,1)
    ax2 = fig.add_subplot(2,1,2)
    
    ax1.plot(np.random.randint(1,5,5), np.arange(5))
    ax2.plot(np.arange(10)*3, np.arange(10))
    plt.show()

     5、figure.add_subplot(a,b,index) 构图函数,a*b个子图,a表示行,b表示列,index表示第几个

    # figure.add_subplot(a,b,index) 构图函数,a*b个子图,a表示行,b表示列,index表示第几个
    import matplotlib.pyplot as plt
    fig = plt.figure()                        # matplotlib.figure.Figure
    # fig = plt.figure(figsize=(10,6))        # matplotlib.figure.Figure
    type(fig) # matplotlib.figure.Figure # 3 * 2 个子图 # ax1位于第1个子图 ax1 = fig.add_subplot(3,2,1) # ax2位于第3个子图 ax2 = fig.add_subplot(3,2,3) # ax3位于第6个子图 ax3 = fig.add_subplot(3,2,6) plt.show()

      

     6、折线图:plt.plot(x1, y1, c='colorName')    plt.plot(x2, y2, c='colorName')  两个部分

    unrate['MONTH'] = unrate['DATE'].dt.month
    # 定义图的尺寸
    fig = plt.figure(figsize=(8,4))
    # 第一年的月失业率,红色的线
    plt.plot(unrate[0:12]['MONTH'], unrate[0:12]['VALUE'],c='red')
    # 第二年的月失业率,蓝色的线
    plt.plot(unrate[12:24]['MONTH'],unrate[12:24]['VALUE'],c='blue')
    
    plt.show()

     7、不同年份用不同颜色表示:1:红  2:蓝  3:绿  4:橙  5:黑

    # 定义图的尺寸
    fig = plt.figure(figsize=(12,6))
    # 不同年份用不同颜色表示:1:红  2:蓝  3:绿  4:橙  5:黑
    colors = ['red', 'blue', 'green', 'orange', 'black']
    #[0:4]
    for i in range(5):
        # 按12行,进行数据分片
        start_index = i * 12
        end_index = (i + 1) * 12
        subset = unrate[start_index:end_index]
        # 将每个数据分片,填充plot画图,MONTH作为x坐标值,VALUE作为y坐标值,颜色从colors中轮训
        plt.plot(subset['MONTH'], subset['VALUE'], c=colors[i])
        
    plt.show()

     8、plt.legend(loc='xxx') 在坐标轴上显示标签注释图例

    # 定义图的尺寸
    fig = plt.figure(figsize=(12,6))
    # 不同年份用不同颜色表示:1:红  2:蓝  3:绿  4:橙  5:黑
    colors = ['red', 'blue', 'green', 'orange', 'black']
    #[0:4]
    for i in range(5):
        # 按12行,进行数据分片
        start_index = i * 12
        end_index = (i + 1) * 12
        subset = unrate[start_index:end_index]
        # 为每个颜色的线命名
        label = str(1948 + i)
        # 将每个数据分片,填充plot画图,MONTH作为x坐标值,VALUE作为y坐标值,颜色从colors中轮训
        plt.plot(subset['MONTH'], subset['VALUE'], c=colors[i],label=label)
    
    # plt.legend(loc='xxx') 在坐标轴上显示标签注释图例
    #plt.legend(loc='best')
    plt.legend(loc='upper left' )
    plt.show()
    #help(plt.legend)

     9、plt.legend(loc='xxx') 在坐标轴上显示注释图例   ;   plt.xlabel(name)x轴名   ;  plt.ylabel(name) y轴名     ; plt.title(name)  坐标轴名

    fig = plt.figure(figsize=(12, 6))
    colors = ['red', 'blue', 'green', 'orange', 'black']
    
    for i in range(5):
        # 按12行,进行数据分片
        start_index = i * 12
        end_index = (i + 1) * 12
        subset = unrate[start_index: end_index]
        # 为每个颜色的线命名
        label = str(1948 + i)
        # 将每个数据分片,填充plot画图,MONTH作为x坐标值,VALUE作为y坐标值,颜色从colors中轮训
        plt.plot(subset['MONTH'], subset['VALUE'], c=colors[i], label=label)
        
    # plt.legend(loc='xxx') 在坐标轴上显示标签注释图例
    plt.legend(loc='upper left')
    # x轴名
    plt.xlabel('Month, Integer')
    # y轴名
    plt.ylabel('Unemployment Rate, Percent')
    # plt.title('图名') 坐标轴名
    plt.title('Monthly Unemployment Trends, 1948-1952')
    
    plt.show()

    10、ax.bar()在柱形图中,展示第一部电影的各项分数

    import pandas as pd
    reviews = pd.read_csv('fandango_scores.csv')
    cols = ['FILM', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']
    norm_reviews = reviews[cols]
    #print(reviews.head(3))
    # 第一部电影的各项分数
    norm_reviews[:1]

    import matplotlib.pyplot as plt
    from numpy import arange
    
    num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']
    # 取出第一行,所有数值
    bar_heights = norm_reviews.loc[0, num_cols].values       # array([4.3, 3.55, 3.9, 4.5, 5.0], dtype=object)
    #bar_positions = arange(5) + 0.75                        # array([0.75, 1.75, 2.75, 3.75, 4.75])
    bar_positions = [0.3, 1.5, 3.0, 3.5, 8]                  # x坐标
    
    # help(plt.subplots)
    # fig,axs = plt.subplots(nrows=1, mcols=1)  创建n行m列的子图集,默认生成一个子图
    fig, ax = plt.subplots()
    
    # ax.bar(x,height,width=0.8) 条形图/柱形图
    #help(ax.bar)
    ax.bar(bar_positions,bar_heights,0.3)   # 柱形图的x坐标位置,柱形高度,柱形宽度0.3
    plt.show()
    # help(plt)

     11、ax.bar(x,height,width=0.8) 柱形图:x坐标位置,柱形高度,柱形宽度0.3

      ax.set_xticks(lst)  设置记号x坐标的位置:x轴上的一个记号

      ax.set_xticklabels  设置字符串标签记号的x坐标,标签倾斜45度

      ax.set_xlabel('x_name') 设置x坐标名

      ax.set_ylabel('y_name')  设置y坐标名

      ax.set_title('Avengers: Age of Ultron (2015)电影的平均用户评分')

      fig.set_size_inches((w, h)) 设置子图尺寸(W宽,h高)

    num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']
    # 柱形的高度
    bar_heights = norm_reviews.loc[0, num_cols].values  # array([4.3, 3.55, 3.9, 4.5, 5.0], dtype=object)
    # 柱形的x坐标位置
    bar_positions = [0.3, 1.5, 3.0, 3.5, 8]
    # 记号的x坐标位置
    #tick_positions = range(1,6)
    tick_positions = [0.3, 1.5, 3.0, 3.5, 8]
    # fig, axs = plt.subplots(nrows=1, mcols=1) 创建n行m列的子图集,默认生成一个子图
    # fig 设置子图尺寸
    # ax 填充数据,及子图样式
    fig, ax = plt.subplots()
    
    # fig.set_size_inches((w, h)) 设置子图尺寸(W宽,h高)
    fig.set_size_inches((12,8))
    
    # ax.bar(x,height,width=0.8) 柱形图:x坐标位置,柱形高度,柱形宽度0.3
    ax.bar(bar_positions, bar_heights, 0.3)
    
    # ax.set_xticks(lst)  设置记号x坐标的位置:x轴上的一个记号
    ax.set_xticks(tick_positions)
    
    # ax.set_xticklabels  设置字符串标签记号的x坐标,标签倾斜45度
    ax.set_xticklabels(num_cols, rotation=45)
    
    # ax.set_xlabel('x_name') 设置x坐标名
    ax.set_xlabel('Rating Source')
    # ax.set_ylabel('y_name')  设置y坐标名
    ax.set_ylabel('Average Rating')
    # ax.set_title('Avengers: Age of Ultron (2015)电影的平均用户评分')
    ax.set_title('Avengers: Age of Ultron (2015)')
    plt.show()

    12、ax.barh() 横向柱形图 

    import matplotlib.pyplot as plt
    from numpy import arange
    num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']
    
    # 对比第一部电影的各项分数: 横向展示分数高低情况,纵向各项指标名
    bar_widths = norm_reviews.loc[0, num_cols]
    # 纵向y坐标位置:各项指标名的位置
    bar_positions = [0.3, 1.5, 3.0, 3.5, 8]
    tick_positions = [0.3, 1.5, 3.0, 3.5, 8]
    # fig, axs = plt.subplots(nrows=1, mcols=1) 创建n行m列的子图集,默认生成一个子图
    # fig 设置子图尺寸
    # ax 填充数据,及子图样式
    fig, ax = plt.subplots()
    
    # fig.set_size_inches((w, h)) 设置子图尺寸(W宽,h高)
    fig.set_size_inches((12,8))
    
    # ax.barh(y, width) 横向柱形图
    ax.barh(bar_positions, bar_widths, 0.3)
    
    # ax.set_yticks(tick_positions) 设置y轴标签位置
    ax.set_yticks(tick_positions)
    # ax.set_yticklabels(num_cols) 设置y轴标签名
    ax.set_yticklabels(num_cols)
    # ax.set_ylabel('Rating Source') 设置y轴名
    ax.set_ylabel('Rating Source')
    # ax.set_xlabel('Average Rating') 设置x轴名
    ax.set_xlabel('Average Rating')
    # ax.set_title('子图标题')   设置子图标题名字
    ax.set_title('Average User Rating For Avengers: Age of Ultron(2015)')
    plt.show

     13、 ax.scatter(x, y)  散点图

    fig, ax = plt.subplots()
    # help(ax.scatter)
    # ax.scatter(x, y)  散点图: 影评分作为x,用户评分作为y
    ax.scatter(norm_reviews['Fandango_Ratingvalue'], norm_reviews['RT_user_norm'])
    # ax.set_xlabel('x_name') 设置x轴名字
    ax.set_xlabel('Fandango')
    # ax.set_ylabel('y_name') 设置y轴名字
    ax.set_ylabel('Rotten Tomatoes')
    plt.show()

    # plt.figure(figsize=(5, 10))创建一个图形,定义子图尺寸
    fig = plt.figure(figsize=(8, 16))
    # fig.add_subplot(n, m, x) 定义图形,有n行m列的子图,添加一个子图位于第x个位置
    ax1 = fig.add_subplot(2, 1, 1)
    # fig.add_subplot(2, 1, 2) 定义图形,有2行1列的子图,添加一个子图位于第2个位置
    ax2 = fig.add_subplot(2, 1, 2)
    
    
    # ax1散点图:数据填充x和y轴数据
    ax1.scatter(norm_reviews['Fandango_Ratingvalue'],  norm_reviews['RT_user_norm'])
    # ax1散点图:设置x轴名字
    ax1.set_xlabel('Fandango')
    # ax1散点图:设置y轴名字
    ax1.set_ylabel("Rotten Tomatoes")
    
    # ax2散点图: 填充x和y轴数据。对调ax1的xy轴
    ax2.scatter(norm_reviews['RT_user_norm'], norm_reviews['Fandango_Ratingvalue'])
    # ax2散点图:设置x轴名字。对调ax1的xy轴
    ax2.set_xlabel("Rotten Tomatoes")
    # ax2散点图:设置y轴名字。对调ax1的xy轴
    ax2.set_ylabel("Fandango")
    
    plt.show()

    # fig, axs = plt.subplots(nrows=1, mcols=1) 创建n行m列的子图集,默认生成一个子图
    fig,(ax1, ax2) = plt.subplots(2,1)
    
    # fig.set_size_inches((w, h)) 设置子图尺寸(W宽,h高)
    fig.set_size_inches((12,8))
    
    # ax1散点图:数据填充x和y轴数据
    ax1.scatter(norm_reviews['Fandango_Ratingvalue'],  norm_reviews['RT_user_norm'])
    # ax1散点图:设置x轴名字
    ax1.set_xlabel('Fandango')
    # ax1散点图:设置y轴名字
    ax1.set_ylabel("Rotten Tomatoes")
    
    # ax2散点图: 填充x和y轴数据。对调ax1的xy轴
    ax2.scatter(norm_reviews['RT_user_norm'], norm_reviews['Fandango_Ratingvalue'])
    # ax2散点图:设置x轴名字。对调ax1的xy轴
    ax2.set_xlabel("Rotten Tomatoes")
    # ax2散点图:设置y轴名字。对调ax1的xy轴
    ax2.set_ylabel("Fandango")
    
    plt.show()

     14、ax.hist(x, 20)用于绘制直方图

    直方图(Histogram),又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型,纵轴表示分布情况。
    直方图是数值数据分布的精确图形表示。 这是一个连续变量(定量变量)的概率分布的估计,并且被卡尔·皮尔逊(Karl Pearson)首先引入。它是一种条形图。 为了构建直方图,第一步是将值的范围分段,即将整个值的范围分成一系列间隔,然后计算每个间隔中有多少值。 这些值通常被指定为连续的,不重叠的变量间隔。 间隔必须相邻,并且通常是(但不是必须的)相等的大小。

    import pandas as pd
    import matplotlib.pyplot as plt
    reviews = pd.read_csv('fandango_scores.csv')
    cols = ['FILM', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue']
    norm_reviews = reviews[cols]
    norm_reviews[:5]
    
    # Series.value_counts(): 每个值有在该列中有多少重复值。
    fandango_distribution = norm_reviews['Fandango_Ratingvalue'].value_counts()
    # Series.sort_index() 按索引排序,默认升序
    fandango_distribution = fandango_distribution.sort_index()
    
    imdb_distribution = norm_reviews['IMDB_norm'].value_counts()
    imdb_distribution = imdb_distribution.sort_index()
    
    print(fandango_distribution)
    print(imdb_distribution)
    2.7     2
    2.8     2
    2.9     5
    3.0     4
    3.1     3
    3.2     5
    3.3     4
    3.4     9
    3.5     9
    3.6     8
    3.7     9
    3.8     5
    3.9    12
    4.0     7
    4.1    16
    4.2    12
    4.3    11
    4.4     7
    4.5     9
    4.6     4
    4.8     3
    Name: Fandango_Ratingvalue, dtype: int64
    2.00     1
    2.10     1
    2.15     1
    2.20     1
    2.30     2
    2.45     2
    2.50     1
    2.55     1
    2.60     2
    2.70     4
    2.75     5
    2.80     2
    2.85     1
    2.90     1
    2.95     3
    3.00     2
    3.05     4
    3.10     1
    3.15     9
    3.20     6
    3.25     4
    3.30     9
    3.35     7
    3.40     1
    3.45     7
    3.50     4
    3.55     7
    3.60    10
    3.65     5
    3.70     8
    3.75     6
    3.80     3
    3.85     4
    3.90     9
    3.95     2
    4.00     1
    4.05     1
    4.10     4
    4.15     1
    4.20     2
    4.30     1
    Name: IMDB_norm, dtype: int64
    fig, (ax1,ax2,ax3) = plt.subplots(3,1)
    
    # fig.set_size_inches((w, h)) 设置子图尺寸(W宽,h高)
    fig.set_size_inches((12,8))
    # ax.hist(x, 20)用于绘制直方图
    # ax.hist(a,bins=10,range=None,weights=None,density=False);
    # a是待统计数据的数组;
    # bins指定统计的区间个数;
    # range是一个长度为2的元组,表示统计范围的最小值和最大值,默认值None,
    #      表示范围由数据的范围决定
    # weights为数组的每个元素指定了权值,histogram()会对区间中数组所对应的权值进行求和
    # density为True时,返回每个区间的概率密度;为False,返回每个区间中元素的个数
    ax1.hist(norm_reviews['Fandango_Ratingvalue'])
    ax2.hist(norm_reviews['Fandango_Ratingvalue'],bins=5)
    ax3.hist(norm_reviews['Fandango_Ratingvalue'], range=(4, 5),bins=20)
    plt.show()

    #help(ax1.hist)
    fig = plt.figure(figsize=(8, 20))
    ax1 = fig.add_subplot(4,2,1)
    ax2 = fig.add_subplot(4,2,2)
    ax3 = fig.add_subplot(4,2,3)
    ax4 = fig.add_subplot(4,2,4)
    
    # ax.hist()绘制直方图
    ax1.hist(norm_reviews['Fandango_Ratingvalue'], bins=20, range=(0,5))
    # ax.set_title 设置图标题
    ax1.set_title('Distribution of Fandango Ratings')
    # ax.set_xlim,  ax.set_ylim  设置x,y轴的数据范围限制
    ax1.set_ylim(0, 50)
    
    #
    ax2.hist(norm_reviews['RT_user_norm'], 20, range=(0,3))
    ax2.set_title('Distribution of Rotten Tomatoes Ratings')
    ax2.set_ylim(0,10)
    
    ax3.hist(norm_reviews['Metacritic_user_nom'], 20, range=(0,5))
    ax3.set_title('Distribution of Metacritic Ratings')
    ax3.set_ylim(0, 50)
    
    ax4.hist(norm_reviews['IMDB_norm'], 20, range=(0,50))
    ax4.set_title('Distribution of IMDB Ratings')
    ax4.set_ylim(0, 190)
    
    plt.show()

     15、Axes.boxplot() 箱形图

    它由五个数值点组成:最小值(min),下四分位数(Q1),中位数(median),上四分位数(Q3),最大值(max)。也可以往盒图里面加入平均值(mean)。

    fig, ax = plt.subplots()
    type(norm_reviews['RT_user_norm'])  # pandas.core.series.Series
    # ax.boxplot() 箱线图
    ax.boxplot(norm_reviews['RT_user_norm'])
    # ax.set_xticklabels(str_list)  设置x刻度标签名
    ax.set_xticklabels(['Rotten Tomatoes'])
    #help(ax.set_xticklabels)
    ax.set_ylim(0,5)
    plt.show()

    fig = plt.figure(figsize=(10,8))
    ax = fig.add_subplot(1,1,1)
    
    # 数据
    num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue']
    # type(norm_reviews[num_cols].values)  # numpy.ndarray
    
    # ax.boxplot(arr)  箱线图
    ax.boxplot(norm_reviews[num_cols].values)
    # ax.set_xticklabels(x_label_arr, rot) 设置x刻度的标签
    ax.set_xticklabels(num_cols, rotation=90)
    # ax.set_ylim()  设置y轴的数据范围限制
    ax.set_ylim(0, 5)
    plt.show()

    16、 plt.plot(x, y)   折线图

             plt.plot(x, y,c='blue/green/yellow',label='折现名')   折线图:线颜色、名字

    import pandas as pd
    import matplotlib.pyplot as plt
    
    women_degrees = pd.read_csv('percent-bachelors-degrees-women-usa.csv')
    women_degrees[:3]
    # plt.plot(x, y)   折线图
    plt.plot(women_degrees['Year'], women_degrees['Biology'])
    plt.show()

    # 生物学学位按性别授予的百分比 x%
    # plt.plot(x, y,c='blue/green/yellow',label='折现名')   折线图
    plt.plot(women_degrees['Year'], women_degrees['Biology'],c='blue', label='Women')
    plt.plot(women_degrees['Year'], 100-women_degrees['Biology'],c='red', label='Men')
    # plt.legend(loc='xxx') 在坐标轴上显示标签注释图例,这里指定注解在图右上侧
    plt.legend(loc='upper right')
    # plt.title('图名') 坐标轴名   ps:中文名会报错
    plt.title('Percentage of Biology Degrees Awarded By Gender')
    plt.show()

     ax.tick_params(axis=‘both’, **kwargs) 设置图展示参数

    axis : 可选{‘x’, ‘y’, ‘both’} ,选择对哪个轴操作,默认是’both’
    reset : bool,如果为True,则在处理其他参数之前将所有参数设置为默认值。 它的默认值为False。
    which : 可选{‘major’, ‘minor’, ‘both’} 选择对主or副坐标轴进行操作
    direction/tickdir : 可选{‘in’, ‘out’, ‘inout’}刻度线的方向
    size/length : float, 刻度线的长度
    width : float, 刻度线的宽度
    color : 刻度线的颜色,我一般用16进制字符串表示,eg:’#EE6363’
    pad : float, 刻度线与刻度值之间的距离
    labelsize : float/str, 刻度值字体大小
    labelcolor : 刻度值颜色
    colors : 同时设置刻度线和刻度值的颜色
    zorder : float ,Tick and label zorder.
    bottom, top, left, right : bool, 分别表示上下左右四边,是否显示刻度线,True为显示
    labelbottom, labeltop, labelleft, labelright :bool, 分别表示上下左右四边,是否显示刻度值,True为显示
    labelrotation : 刻度值逆时针旋转给定的度数,如20
    gridOn: bool ,是否添加网格线; grid_alpha:float网格线透明度 ; grid_color: 网格线颜色; grid_linefloat网格线宽度; grid_linestyle: 网格线型
    tick1On, tick2On : bool分别表表示是否显示axis轴的(左/下、右/上)or(主、副)刻度线
    label1On,label2On : bool分别表表示是否显示axis轴的(左/下、右/上)or(主、副)刻度值

    # 画一个图
    fig, ax = plt.subplots()
    # 再画一个图
    fig, ax = plt.subplots()
    # ax.plot(x, y,c='blue/green/yellow',label='折现名')   折线图  :如果不指定c='color'会自动赋值不同颜色
    # ax.plot(women_degrees['Year'], women_degrees['Biology'],c='blue', label='Women')
    # ax.plot(women_degrees['Year'], 100-women_degrees['Biology'],c='red', label='Men')
    ax.plot(women_degrees['Year'], women_degrees['Biology'], label='Women')
    ax.plot(women_degrees['Year'], 100-women_degrees['Biology'], label='Men')
    
    
    # ax.tick_params(axis=‘both’, **kwargs) 设置图展示参数
    ax.tick_params(bottom=False, top=False, left=False, right=False)
    # ax.set_title('name')  图标题名   ps:中文名会报错
    ax.set_title('Percentage of Biology Degrees Awarded By Gender')
    # ax.legend(loc='xxx') 在坐标轴上显示标签注释图例,这里指定注解在图右上侧
    ax.legend(loc='upper right')
    
    plt.show()

    fig, (ax1, ax2) = plt.subplots(2,1)
    # fig.set_size_inches((w, h)) 设置子图尺寸(W宽,h高)
    fig.set_size_inches((12,8))
    ax1.plot(women_degrees['Year'], women_degrees['Biology'], c='yellow', label='Women')
    ax1.plot(women_degrees['Year'], 100-women_degrees['Biology'],c='green', label='Man')
    ax2.plot(women_degrees['Year'], women_degrees['Biology'], c='red', label='Women')
    ax2.plot(women_degrees['Year'], 100-women_degrees['Biology'],c='green', label='Man')
    # 隐藏刻度线
    ax.tick_params(bottom=False, top=False, left=False, right=False)
    
    # ax.spines: axes会获取到四个轴
    # type(ax.spines)   # collections.OrderedDict
    # type(ax.spines.items())   # odict_items
    # 将四个轴都隐藏
    for key, spine in ax2.spines.items():
        spine.set_visible(False)
    # 将折线注解展示在右上角
    ax1.legend(loc='upper right')
    ax2.legend(loc='upper right')
    plt.show()

    # 学科大类
    major_cats = ['Biology', 'Computer Science', 'Engineering', 'Math and Statistics']
    # 初始化画板
    fig = plt.figure(figsize=(12,12))
    for sp in range(0,4):
        ax = fig.add_subplot(2, 2, sp+1)
        # ax.plot(x,y,c='color',label='line label')
        ax.plot(women_degrees['Year'], women_degrees[major_cats[sp]], c='blue', label='Women')
        ax.plot(women_degrees['Year'], 100-women_degrees[major_cats[sp]], c='red', label='Man')
        
    # plt.legend(loc='upper/right/center/..')
    plt.legend(loc='upper right')
    plt.show()
    
    major_cats = ['Biology', 'Computer Science', 'Engineering', 'Math and Statistics']
    fig = plt.figure(figsize=(18, 12))
    for sp in range(0, 4):
        # fig.add_subplot(2, 2, sp+1)  定义n*m个子图,初始化第k个图
        ax = fig.add_subplot(2, 2, sp+1)
        # ax.plot(x,y,c='color',label='line name')  折线图,并设置颜色,折线注解
        ax.plot(women_degrees['Year'], women_degrees[major_cats[sp]], c='yellow', label='Women')
        ax.plot(women_degrees['Year'], 100-women_degrees[major_cats[sp]], c='green', label='Man')
        # 将ax的四个坐标轴隐藏
        for key, spine in ax.spines.items():
            spine.set_visible(False)
        # ax.set_xlim(start, end) 设置x轴范围
        ax.set_xlim(1968, 2011)
        # ax.set_ylim(start,end)  设置y轴范围
        ax.set_ylim(0, 100)
        # ax.set_title('title name')  设置图的标题
        ax.set_title(major_cats[sp])
        # ax.tick_params()  设置刻度线参数,这里隐藏四个轴上的所有刻度线
        ax.tick_params(bottom=False, top=False, left=False, right=False)
        #plt.legend(loc='upper/right/left/..')  设置折线注解位置
        plt.legend(loc='upper right')
        
    #plt.legend(loc='upper/right/left/..')  设置折线注解位置
    #plt.legend(loc='upper right')
    plt.show()

    # 颜色
    import pandas as pd
    import matplotlib.pyplot as plt
    
    # pandas.read_csv('file_path')  从csv文件读取数据到DataFrame
    women_degrees = pd.read_csv('percent-bachelors-degrees-women-usa.csv')
    # 学科大类
    major_cats = ['Biology', 'Computer Science', 'Engineering', 'Math and Statistics']
    
    # 自定义颜色
    cb_dark_blue = (90/255, 107/255, 164/255)
    cb_orange = (255/255, 128/255, 114/255)
    
    # matplotlib.pyplot.figure(figsize=(x,y)) 初始化一个画板
    fig = plt.figure(figsize=(18, 12))
    
    # for循环画子图
    for sp in range(0,4):
        # fig.add_subplot(2,2,n) 画2*2的第n个子图
        ax = fig.add_subplot(2,2,sp+1)
        # ax.plot(x,y,c=color,label='label name')
        ax.plot(women_degrees['Year'], women_degrees[major_cats[sp]], c=cb_dark_blue, label='Women')
        ax.plot(women_degrees['Year'], 100-women_degrees[major_cats[sp]], c=cb_orange, label='Man')
        # for循环: spine.set_visible(False)  隐藏四个轴
        for key, spine in ax.spines.items():
            # print(key)  # left right bottom top
            spine.set_visible(False)
        # ax.set_xlim(n,m)  设置x范围
        ax.set_xlim(1968, 2011)
        # ax.set_ylim(n,m)  设置y范围
        ax.set_ylim(0,100)
        # ax.set_title('title name')  设置标题名
        ax.set_title(major_cats[sp])
        # ax.tick_params()  设置刻度线
        ax.tick_params(bottom=False, top=False, left=False, right=False)
        # plt.legend(loc='upper/right/left/center/..')  设置折线注解位置
        plt.legend(loc='upper right')
        
    plt.show()

    # 设置线的粗细
    
    # 定义线的颜色
    cb_dark_blue = (0/255, 107/255, 164/255)
    cb_orange = (255/255, 128/255, 16/255)
    
    # plt.figure(figsize=(n,m))  初始化画板
    fig = plt.figure(figsize=(16,12))
    
    # for循环
    for sp in range(0, 4):
        # fig.add_subplot(n, m, k)  # 定义n*m个子图的第k个子图
        ax = fig.add_subplot(2, 2, sp+1)
        # ax.plot(x,y,c=color,label='label name')  # 绘制折线图,设置颜色,线的标签,linewidth=10线的粗细
        ax.plot(women_degrees['Year'], women_degrees[major_cats[sp]], c=cb_dark_blue, label='Women', linewidth=10)
        ax.plot(women_degrees['Year'], 100-women_degrees[major_cats[sp]], c=cb_orange, label='Man', linewidth=10)
        # for循环:隐藏四个轴
        for key, spine in ax.spines.items():
            # spine.set_visible(False)  隐藏轴
            spine.set_visible(False)
        # ax.set_xlim(n,m)  # 设置x的范围
        ax.set_xlim(1968, 2011)
        # ax.set_ylim(n,m)   # 设置y的范围
        ax.set_ylim(0,100)
        # ax.set_title(major_cats[sp])  # 设置子图的标题
        ax.set_title(major_cats[sp])
        # ax.tick_params()   # 设置刻度线
        ax.tick_params(bottom=False, top=False, left=False, right=False)
        # plt.legend(loc='upper right')   # 设置线注解的位置
        plt.legend(loc='upper right')
        
    plt.show()

    stem_cats = ['Engineering', 'Computer Science', 'Psychology', 'Biology', 'Physical Sciences', 'Math and Statistics']
    # 定义画板
    fig = plt.figure(figsize=(12,8))
    
    # for循环,绘制子图
    for sp in range(0, 6):
        # fig.add_subplot(n,m,k)  # 定义n*m个子图,初始化第k个子图
        ax = fig.add_subplot(1, 6, sp+1)
        # ax.plot(x,y,c=color,label='xx',linewidth=3)  # 绘制折线图,设置颜色,线粗细linewidth
        ax.plot(women_degrees['Year'], women_degrees[stem_cats[sp]],c=cb_dark_blue, label='Women', linewidth=3)
        ax.plot(women_degrees['Year'], 100-women_degrees[stem_cats[sp]], c=cb_orange, label='Man', linewidth=3)
        # for循环:隐藏所有轴
        for key, spine in ax.spines.items():
            spine.set_visible(False)
        # ax.set_xlim(n,m)  # 设置x轴范围
        ax.set_xlim(1968, 2011)
        ax.set_ylim(0,100)
        # ax.set_title('xx')  # 设置标题
        ax.set_title(stem_cats[sp])
        ax.tick_params(bottom=False, top=False, left=False, right=False)
        plt.legend(loc='center')
        
    plt.show()

    # fig=plt.figure(figsize=(n,m))   # 定义一个画板
    fig = plt.figure(figsize=(18,3))
    
    # for绘制子图
    for sp in range(0,6):
        ax = fig.add_subplot(1, 6, sp+1)  # 绘制第sp+1个图
        ax.plot(women_degrees['Year'], women_degrees[stem_cats[sp]], c=cb_dark_blue, label='Women', linewidth=5)
        ax.plot(women_degrees['Year'], 100-women_degrees[stem_cats[sp]], c=cb_orange, label='Man', linewidth=5)
        for key, spine in ax.spines.items():
            spine.set_visible(False)
        ax.set_xlim(1968, 2011)
        ax.set_ylim(0, 100)
        ax.set_title(stem_cats[sp])
        ax.tick_params(bottom=False, top=False, left=False, right=False)
        
        if sp == 0:
            # ax.text(x,y,str)   # 设置str显示位置(x,y)
            ax.text(1980,80,'Women')
            ax.text(2000,20,"Man")
        elif sp == 5:
            ax.text(2000,62,'Women')
            ax.text(1990,35,'Man')
    plt.show()
            

  • 相关阅读:
    SqlServer 查看数据库中所有存储过程
    SqlServer 查看数据库中所有视图
    SqlServer 查询表的详细信息
    SqlServer 遍历修改字段长度
    net core 操作Redis
    Tuning SharePoint Workflow Engine
    Open With Explorer
    Download language packs for SharePoint 2013
    Change Maximum Size For SharePoint List Template when Saving
    Six ways to store settings in SharePoint
  • 原文地址:https://www.cnblogs.com/LIAOBO/p/15382680.html
Copyright © 2011-2022 走看看