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()
            

  • 相关阅读:
    Linux # $
    python英文学习字典
    python中read(),readline(),和readlines()
    if _name_ =="_main_"
    win10菜单打不开,任务栏右击没有反应
    python中csv转json文件出现:File was loaded in the wrong encoding: 'UTF-8'
    Python字典
    python 匿名函数实现求素数平方和
    Python快速排序的实现
    P1880 [NOI1995]石子合并
  • 原文地址:https://www.cnblogs.com/LIAOBO/p/15382680.html
Copyright © 2011-2022 走看看