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_linewidth:float网格线宽度; 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()
        

 

posted on 2021-10-08 20:15  架构艺术  阅读(126)  评论(0编辑  收藏  举报