python matplotlib 常用方法和绘图实例

导入

import numpy as np
import matplotlib.pyplot as plt

创建一个figure图片

fig=plt.figure()
# 参数
# num 表示的是生成图片的编号
# figsize(x,y) 表示的是 长x,高y 

绘制图像

plt.plot(x,y);
# 参数
# color 线的颜色
# linewidth 线的宽度
# linestyle 线的种类
# label 线的命名

确定图像取值范围

plt.xlim((x,y)) # x 轴 取值范围
plt.ylim((x,y)) # y 轴 取值范围

图像标志

plt.xlabel('somex')
plt.ylabel('somey')

替换x轴参数

plt.xticks(rx);
plt.yticks([1,2,3],['a','b','c']);

Legend

plt.legend(handles=[l1,l2,],labels=['aaa','bbb'],loc='best');
# handles 中的参数与 labels 中的参数一一对应
# loc 表示的是标识的位置 

在图像窗口上画小图

 plt.subplot2grid((2,3),(0,0));

表示将图像窗口分成2行3列,在(0,0)处画一个小图。

设置标题

plt.title()

绘制散点图

plt.scatter(x,y,s=set_size,c=set_color);
# s 表示的是图像大小
# c 表示的是颜色

绘制柱状图

plt.bar(x,y,facecolor='valuef',edgecolor='value_e');
# facecolor 主体颜色
# edgecolor 边框颜色

在图像上显示文字标注

plt.text(x,y,'%x',ha='value_h',va='value_v');
# %x 表示 数据格式
# ha 表示水平对齐方式
# va 表示垂直对齐方式

绘制等高线图

# 1. 生成网格
X,Y = np.meshgrid(x,y) 
# 2. 填充等高线图中的图部分
plt.contourf(X,Y,value,num,alpha=value_a,cmap=value_cmap)
# alpha 表示透明度
# cmap 表示对应点颜色色调风格
# num 表示将等高线图分成几部分
# 3. 绘制等高线图中的线
C = plt.contour(X,Y,value,num,color=value_c,linewidth=value_w)
# 4. 添加等高线数值
plt.clabel(C,inline=True/False,fontsize=value_size)
# inline 表示是否在等高线中
# fontsize 表示字体大小 

绘制image图片

plt.inshow(X);

获取当前轴

ax=plt.gca();

设置轴不可见

ax.spines['loc'].set_color('none');

挪动坐标轴位置

ax.xaxis.set_ticks_position('loc');
ax.yaxis.set_ticks_position('loc');
ax.spines['bottom'].set_position(('data',loc));
ax.spines['left'].set_position(('data',loc));

实例

下面绘图使用的数据是kaggle 网站中入门题中的Titanic中的数据

统计幸存者与遇难者的人数

# 解决中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
# 导入数据
data_train = pd.read_csv('D:/code/Titanic/data/train.csv');
X = pd.value_counts(data_train['Survived']);
fig = plt.figure();
# 1 统计幸存者与遇难者的人数
plt.bar(X.index,X.values);
plt.xticks([0,1],['遇难','幸存']);
plt.title('统计幸存者与遇难者的人数');
plt.ylabel('人数');
for x,y in zip(X.index,X.values):
    plt.text(x-0.05,y+5,'%d'%y);
plt.show();

运行结果:
在这里插入图片描述

统计乘客等级分布

X = pd.value_counts(data_train['Pclass']);
 #print(X);
 plt.bar(X.index,X.values);
 plt.xticks([3,2,1],['普通','中级','高级']);
 plt.xlabel('等级');
 plt.ylabel('人数');
 plt.title('乘客等级分布');
 for x,y in zip(X.index,X.values):
     plt.text(x,y+5,'%d'%y,ha="center");
 plt.show();

运行结果:
在这里插入图片描述

统计年龄情况分布

图像1

    plt.scatter(data_train['Age'],data_train['Survived']);
    plt.yticks([1,0],['幸存','遇难']);

在这里插入图片描述图像2

    ax = plt.gca();
    ax.spines['right'].set_color('none');
    ax.spines['top'].set_color('none');
    ax.xaxis.set_ticks_position('bottom');
    ax.yaxis.set_ticks_position('left');
    ax.spines['bottom'].set_position(('data',0));
    ax.spines['left'].set_position(('data',0));
    data_sur0 = data_train[data_train['Survived']==0];
    data_sur1 = data_train[data_train['Survived']==1];
    X_0 = data_sur0['Age'].value_counts();
    for x,y in zip(X_0.index,X_0.values):
        plt.text(x,y,'%d'%y,ha="center", fontsize=7);
    l1=plt.bar(X_0.index,X_0.values);
    X_1 = data_sur1['Age'].value_counts();
    l2=plt.bar(X_1.index,-X_1.values,color='red');
    for x,y in zip(X_1.index,X_1.values):
        plt.text(x,-y-0.8,'%d'%y,ha="center", fontsize=7);
    plt.legend(handles=[l1,l2,],labels=['遇难','幸存'],loc='best');
    plt.show();

运行结果:
在这里插入图片描述

统计各个舱年龄分布

    X_1 = data_train[data_train['Pclass'] == 1];
    X_2 = data_train[data_train['Pclass'] == 2];
    X_3 = data_train[data_train['Pclass'] == 3];
    X1_num = X_1['Age']
    X2_num = X_2['Age']
    X3_num = X_3['Age']
    l1=X1_num.plot(kind='kde');
    l2=X2_num.plot(kind='kde');
    l3=X3_num.plot(kind='kde');
    plt.legend(labels=['头等舱','二等舱','三等舱'],loc="best");
    plt.ylabel('密度分布');
    plt.xlabel('年龄');
    plt.show();

运行结果:
在这里插入图片描述

统计登船港口人数分布

    X = data_train['Embarked'].value_counts()
    plt.bar(X.index,X.values);
    plt.show();

运行结果:
在这里插入图片描述

乘客各等级获救情况

    ax = plt.gca();
    ax.spines['right'].set_color('none');
    ax.spines['top'].set_color('none');
    ax.xaxis.set_ticks_position('bottom');
    ax.yaxis.set_ticks_position('left');
    ax.spines['bottom'].set_position(('data',0));
    #ax.spines['left'].set_position(('data',0));
    X_0 = data_train[data_train['Survived'] == 0]['Pclass'].value_counts();
    X_1 = data_train[data_train['Survived'] == 1]['Pclass'].value_counts();
    l1=plt.bar(X_0.index,X_0.values);
    l2=plt.bar(X_1.index, -X_1.values);
    plt.xticks([1,2,3],['高等','中等','普通']);
    plt.legend(handles=[l1,l2],labels=['遇难','幸存']);
    for x, y in zip(X_0.index, X_0.values):
        plt.text(x-0.05,y+5,'%d'%y);
    for x, y in zip(X_1.index, X_1.values):
        plt.text(x-0.05,-y-20,'%d'%y);
    plt.show();

在这里插入图片描述

有无Cabin 对乘客存活的影响

    ax = plt.gca();
    ax.spines['right'].set_color('none');
    ax.spines['top'].set_color('none');
    ax.xaxis.set_ticks_position('bottom');
    ax.yaxis.set_ticks_position('left');
    ax.spines['bottom'].set_position(('data',0));
    X_0 = data_train[pd.isnull(data_train['Cabin'])]['Survived'].value_counts();
    X_1 = data_train[pd.notnull(data_train['Cabin'])]['Survived'].value_counts();
    RX_0 = pd.Series([X_0[0],X_1[0]]);
    RX_1 = pd.Series([X_0[1], X_1[1]]);
    l1=plt.bar(RX_0.index,RX_0.values);
    l2=plt.bar(RX_1.index,-RX_1.values);
    plt.xticks([0,1],['无','有']);
    plt.legend(handles=[l1,l2],labels=['遇难','存活'],loc='best');
    for x, y in zip(RX_0.index, RX_0.values):
        plt.text(x-0.05,y+5,'%d'%y);
    for x, y in zip(RX_1.index, RX_1.values):
        plt.text(x-0.05,-y-20,'%d'%y);
    plt.show();

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值