首页 > 其他分享 >Matplotlib库(二)

Matplotlib库(二)

时间:2023-02-12 21:23:21浏览次数:43  
标签:线图 None plt df Matplotlib 评分 fontsize

Matplotlib库(二)

准备工作:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']   #图中可以显示中文
plt.rcParams['axes.unicode_minus'] = False   #图中可以显示负号
df = pd.read_excel('movie_data3.xlsx')   #读取豆瓣电影数据

1. 双轴图绘制

from scipy.stats import norm  #用来计算概率分布
fig = plt.figure(figsize = (10,8))
ax1 = fig.add_subplot(111)
n,bins,patches = ax1.hist(df['评分'],bins = 100,colors = 'm')

ax1.set_ylabel('电影数量',fontsize = 15)
ax1.set_xlabel('评分',fontsize = 15)
ax1.set_title('频率直方图',fontsize = 20)

y = norm.pdf(bins,df['评分'].mean(),df['评分'].std())  #获得正态分布的概率密度函数
ax2 = ax1.twinx()   #创建图ax2,与图ax1共用x轴
ax2.plot(bins,y,'b--')
ax2.set_ylabel('概率分布')
plt.show()

2. 绘制散点图

要求根据电影时长和电影评分绘制散点图:

x = df['时长']
y = df['评分']
plt.figure(figsize = (10,8))
plt.scatter(x,y,colors = 'c',marker = 'p')
plt.title('电影时长与评分散点图',fontsize = 20)
plt.xlabel('时长',fontsize = 15)
plt.ylabel('评分',fontsize = 15)
plt.show()

3. 箱线图

3.1. 单个箱线图

plt.boxplot(x,notch= None,sym = None,vert = None,whis = None,positions = None,widths = None,patch_artist = None,meanline = None,showmeans = None,showcaps = None,showbox = None,showfliers = None,boxprops = None,labels = None,flierprops = None,medianprops = None,meanprops = None,capprops = None,whiskerprops = None)

参数解释:

x:要绘制箱线图的数据

notch:是否凹口展现箱线图,默认非凹口

sym:指定异常点的形状,默认以+显示

vert:箱线图是否垂直摆放,默认垂直

whis:指定上下须与上下四分位数的距离,默认1.5倍的四分位数差

positions:指定箱线图的位置,默认为[0,1,2,…]

widths:指定箱线图的宽度,默认为0.5

patch_artist:是否填充箱体颜色

meanline:是否用线的形式表示均值,默认用点表示

showmeans:是否显示均值,默认不显示

showcaps:是否显示箱线图顶端和末端的两条线,默认显示

showbox:是否显示箱线图的箱体,默认显示

showfliers:是否显示异常值,默认显示

boxprops:设置箱体属性,如边框颜色、填充颜色等

labels:添加标签,类似于图例的功能

flierprops:设置异常值属性,如异常值点的形状、大小、填充颜色等

medianprops:设置中位数的属性,如线的类型、粗细等

meanprops:设置均值属性,如点的大小颜色等

capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等

whiskerprops:设置须的属性,如颜色、粗细、线的类型等

## 绘制美国电影评分的箱线图
data = df[df['产地'] == '美国']['评分']
plt.figure(figsize = (10,6))
plt.boxplot(data,whis = 2,flierprops = {'marker':'o','markerfacecolor':'r','color':'k'},
           patch_artist = True,boxprops = {'color':'k','facecolor':'y','lw':2})
plt.title('美国电影评分',fontsize = 20)
plt.show()

3.2. 多组数据箱线图

data1 = df[df.产地 == '中国大陆']['评分']
data2 = df[df.产地 == '日本']['评分']
data3 = df[df.产地 == '中国香港']['评分']
data4 = df[df.产地 == '英国']['评分']
data5 = df[df.产地 == '法国']['评分']

plt.figure(figsize = (12,8))
plt.boxplot([data1,data2,data3,data4,data5],labels = ['中国大陆','日本','中国香港','英国','法国'],whis = 2,
            flierprops = {'marker':'o','markerfacecolor':'r','color':'k'},vert = False)
ax = plt.gca()
ax.patch.set_facecolor('gray')  #设置背景填充颜色
ax.patch.set_alpha(0.1)   #设置背景透明度


plt.title('电影评分箱线图',fontsize = 20)
plt.show()

4. 相关系数矩阵图--热力图

data = df[['投票人数','评分','时长']]
## 使用pandas库中封装的函数画两两之间的散点图
%pylab inline
result = pd.plotting.scatter_matrix(data[::100],diagonal = 'hist',color = 'k',alpha = 0.3,figsize = (10,10))
  • 用seaborn库画热力图

    seaborn.heatmap(data,vmin = None,vmax = None,cmap = None,center = None,robust = False,annot = None,fmt = '.2g',annot_kws = None,linewidths = 0,linecolor = 'white',cbar = True,cbar_kws = None,cbar_ax = None,square = False,xticklabels = 'auto',mask = None,ax = None)
    

    data:矩阵数据集,可以是数组,也可以是DataFrame

    vmin和vmax分别是热力图颜色取值的最小最大值

    annot:默认是False,不显示注释

    annot_kws:设置注释属性

    例如,绘制投票人数、评分、时长之间相关系数的热力图:

    import seaborn as sns
    
    corr = data.corr()   #计算相关系数
    corr = abs(corr)   #取绝对值,只看相关关系大小,不看正相关还是负相关
    
    fig = plt.figure(figsize = (10,8))
    ax = fig.add_subplot(111)
    
    ax = sns.heatmap(corr,vmax = 1,vmin = 0,annot = True,annot_kws = {'size':13,'weight':'bold'},linewidths = 0.05)
    
    plt.xticks(fontsize = 15)
    plt.yticks(fontsize = 15)
    
    plt.show()
    

标签:线图,None,plt,df,Matplotlib,评分,fontsize
From: https://www.cnblogs.com/DYDNyang/p/17114735.html

相关文章