matplotlib绘图

本文介绍了如何使用matplotlib库进行数据可视化,包括解决中文显示问题、绘制折线图、饼图、柱状图、直方图和散点图,以及如何完善图形设置,如调整刻度、处理日期值和绘制子图。通过实例讲解了各个图形的参数设置,帮助读者掌握matplotlib的使用技巧。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

解决中文显示

# 解决中⽂显示问题
plt.rcParams['font.sans-serif'] = [u'SimHei']
plt.rcParams['axes.unicode_minus'] = False

折线图绘制

# 等差数列
x = np.linspace(0,10,100)
y1 = np.sin(x)
y2 = np.cos(x)

plt.plot(x,y,ls=,lw=,c=,marker=,markersize=,markeredgecolor=,markerfacecolor, label=)

  • x: x轴上的数值

  • y: y轴上的数值

  • ls: 折线的风格(‘-‘, ’–‘, ’-.‘和’:‘)

  • lw: 线条宽度

  • c: 颜色

  • marker: 线条上点的形状

  • markersize: 线条上点的形状大小

  • markeredgecolor: 点的边框色

  • markerfacecolor: 点的填充色

  • label: 文本标签

  • 添加文本: 使用plt.title添加标题, 使用plt.xlabel()和ylabel()添加轴标签

  • 添加图例: 使用plt.legend()将图例说明添加到图表中

  • 添加网格: 使用plt.grid()绘制网格线

  • 保存图形: 使用plt.savefig()可以将图形保存为pdf或者其他格式

  • 绘制参考线: 使用plt.axhline和plt.axvline绘制参考线

图例legend中loc中的位置和数字关系的使用

  • ‘best’ 0
  • ‘upper rught’ 1
  • ‘upper left’ 2
  • ‘lower left’ 3
  • ‘lower right’ 4
  • ‘right’ 5
  • ‘center left’ 6
  • ‘center right’ 7
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y1,c='red',lw=2,ls='-',marker='o',markersize=6,markeredgecolor='red',markerfacecolor='yellow',label='y=sin(x)')
plt.plot(x,y2,c='c',lw=2,ls='--',marker='*',markersize=6,markeredgecolor='c',markerfacecolor='y',label='y=cos(x)')
plt.text(6,0.2,'sin(x)',weight='bold',color='red',fontsize=14)
plt.text(5,0.2,'cos(x)',weight='bold',color='c',fontsize=14)
plt.title('y=sin(x)、cos(x)')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend(loc=1,fontsize=12)
plt.grid(ls='--',c='blue')
plt.show()

在这里插入图片描述

data = pd.read_csv(r'E:\python\Python数据分析与挖掘从零开始到实战\数据分析篇\学习笔记\数据\air_data.csv')
data.head()
MEMBER_NO FFP_DATE FIRST_FLIGHT_DATE GENDER FFP_TIER WORK_CITY WORK_PROVINCE WORK_COUNTRY AGE LOAD_TIME ... ADD_Point_SUM Eli_Add_Point_Sum L1Y_ELi_Add_Points Points_Sum L1Y_Points_Sum Ration_L1Y_Flight_Count Ration_P1Y_Flight_Count Ration_P1Y_BPS Ration_L1Y_BPS Point_NotFlight
0 54993 2006/11/2 2008/12/24 6 . 北京 CN 31.0 2014/3/31 ... 39992 114452 111100 619760 370211 0.509524 0.490476 0.487221 0.512777 50
1 28065 2007/2/19 2007/8/3 6 NaN 北京 CN 42.0 2014/3/31 ... 12000 53288 53288 415768 238410 0.514286 0.485714 0.489289 0.510708 33
2 55106 2007/2/1 2007/8/30 6 . 北京 CN 40.0 2014/3/31 ... 15491 55202 51711 406361 233798 0.518519 0.481481 0.481467 0.518530 26
3 21189 2008/8/22 2008/8/23 5 Los Angeles CA US 64.0 2014/3/31 ... 0 34890 34890 372204 186100 0.434783 0.565217 0.551722 0.448275 12
4 39546 2009/4/10 2009/4/15 6 贵阳 贵州 CN 48.0 2014/3/31 ... 22704 64969 64969 338813 210365 0.532895 0.467105 0.469054 0.530943 39

5 rows × 44 columns

# FFP_DATE数据转换
data['FFP_DATE'] = pd.to_datetime(data['FFP_DATE'],format='%Y/%m/%d',errors='coerce')
data.head()
MEMBER_NO FFP_DATE FIRST_FLIGHT_DATE GENDER FFP_TIER WORK_CITY WORK_PROVINCE WORK_COUNTRY AGE LOAD_TIME ... ADD_Point_SUM Eli_Add_Point_Sum L1Y_ELi_Add_Points Points_Sum L1Y_Points_Sum Ration_L1Y_Flight_Count Ration_P1Y_Flight_Count Ration_P1Y_BPS Ration_L1Y_BPS Point_NotFlight
0 54993 2006-11-02 2008/12/24 6 . 北京 CN 31.0 2014/3/31 ... 39992 114452 111100 619760 370211 0.509524 0.490476 0.487221 0.512777 50
1 28065 2007-02-19 2007/8/3 6 NaN 北京 CN 42.0 2014/3/31 ... 12000 53288 53288 415768 238410 0.514286 0.485714 0.489289 0.510708 33
2 55106 2007-02-01 2007/8/30 6 . 北京 CN 40.0 2014/3/31 ... 15491 55202 51711 406361 233798 0.518519 0.481481 0.481467 0.518530 26
3 21189 2008-08-22 2008/8/23 5 Los Angeles CA US 64.0 2014/3/31 ... 0 34890 34890 372204 186100 0.434783 0.565217 0.551722 0.448275 12
4 39546 2009-04-10 2009/4/15 6 贵阳 贵州 CN 48.0 2014/3/31 ... 22704 64969 64969 338813 210365 0.532895 0.467105 0.469054 0.530943 39

5 rows × 44 columns

每年注册人数

data1 = data.groupby(data['FFP_DATE'].dt.year)['MEMBER_NO'].count()

绘制参考线

plt.figure(figsize=(20,8),dpi=80)
plt.plot(data1.index,data1.values,label='不同年份会员注册数')
plt.legend(loc='best')
# 绘制参考线
plt.axhline(y=5000,c='r',ls='--',lw=2)
plt.axvline(x=2012,c='r',ls='--',lw=2)
# 保存图形
plt.savefig('001')
plt.show()

在这里插入图片描述

绘制参考区域

plt.figure(figsize=(20,8),dpi=80)
plt.plot(data1.index,data1.values,label='不同年份会员注册数')
plt.legend(loc='best')
# 绘制参考区域
plt
### 数据可视化中的 Matplotlib 基本使用方法 MatplotlibPython 中一个广泛使用的数据可视化库,它提供了丰富的绘图功能,能够创建线图、散点图、柱状图、直方图等多种图表类型。该库在数据分析和科学计算中发挥着重要作用,可以直观地展示数据的特征和变化趋势,帮助用户更好地理解数据[^1]。 #### 安装 Matplotlib 在使用 Matplotlib 之前,需要先安装。可以通过 pip 安装命令进行安装: ```bash pip install matplotlib ``` 安装完成后,通常使用 `matplotlib.pyplot` 模块进行绘图操作。 #### 基本绘图示例 以下是一个简单的折线图绘制示例: ```python import matplotlib.pyplot as plt # 定义数据 x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] # 绘制折线图 plt.plot(x, y) # 添加标题和坐标轴标签 plt.title("Simple Line Plot") plt.xlabel("X-axis") plt.ylabel("Y-axis") # 显示图形 plt.show() ``` #### 常见图表类型 - **散点图**:用于展示两个变量之间的关系。使用 `plt.scatter(x, y)` 函数绘制。 - **柱状图**:用于比较不同类别的数据。使用 `plt.bar(categories, values)` 函数绘制。 - **直方图**:用于展示数据分布情况。使用 `plt.hist(data, bins)` 函数绘制。 - **饼图**:用于展示各部分在整体中的占比。使用 `plt.pie(sizes, labels=labels)` 函数绘制。 #### 图表自定义 Matplotlib 提供了丰富的自定义选项,例如设置标题、坐标轴标签、图例、网格、颜色、线型等。这些功能可以提升图表的可读性和美观性。例如,可以通过 `plt.legend()` 添加图例,使用 `plt.grid(True)` 显示网格线。 #### 在 Web 环境中使用 Matplotlib Matplotlib 还可以与 Web 技术结合使用,实现动态和交互式的可视化效果。例如,可以通过 Flask 或 Django 框架将图表嵌入网页中,或者使用 `matplotlib.backends.backend_agg` 生成图像并以 Base64 编码形式返回给前端显示[^4]。 此外,Matplotlib 也支持将图表保存为图像文件,常用格式包括 PNG、PDF、SVG 等。保存图像的函数为 `plt.savefig("output.png")`。 #### 与其他库的结合 Matplotlib 通常与 NumPy 和 Pandas 配合使用。NumPy 可用于生成数据,而 Pandas 则提供结构化数据操作功能,使得数据可视化更加高效和灵活[^3]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值