Python数据可视化-Matplotlib学习笔记(2)--画图进阶_python 1951 1952 1950s-程序员宅基地

技术标签: python  matplotlib  数据可视化  

1. 一个区域画多个图

还是以画折线图为例,在笔记(1)中,画了一张图,但有的时候我们需要在一个大区域画好几张小图。具体实现看下面代码:

import matplotlib.pyplot as plt
fig = plt.figure() # 定义区域
ax1 = fig.add_subplot(3,2,1) # 添加子图,参数3,2,1代表区域划分为3行2列共6个区域,顺序为1开始从左到右,从上到下。1为在1区域添加子图。即前两个参数代表布局,第三个参数代表位置。
ax2 = fig.add_subplot(3,2,3) # 3为在3区域添加子图
ax3 = fig.add_subplot(3,2,6) # 6为在6区域添加子图
plt.show() # 这里不给图填充数据,我们画一下看效果
# ax = fig.add_subplot(1,1,1) # 参数111为填充整个区域

这里写图片描述


下面来实际画一下,还是用笔记(1)中的数据:

import pandas as pd
import matplotlib.pyplot as plt

unrate = pd.read_csv('unrate.csv') # 读csv文件
unrate['DATE'] = pd.to_datetime(unrate['DATE'])
unrate['MONTH'] = unrate['DATE'].dt.month # 也可以将'DATE'转换为数字月份

first_twelve = unrate[0:12] # 取前12行数据

# fig = plt.figure()
fig = plt.figure(figsize=(10, 12)) # figsize=(10, 12)参数为手动设定区域(长,宽)的大小

ax1 = fig.add_subplot(2, 1, 1)
plt.xticks(rotation=20) # 旋转20度
plt.xlabel('Month')
plt.ylabel('Unemployment Rate')
plt.title('Monthly Unemployment Trends, 1948')

ax2 = fig.add_subplot(2, 1, 2)
plt.xticks(rotation=0) # 不旋转,或者直接不要这条语句
plt.xlabel('Month')
plt.ylabel('Unemployment Rate')
plt.title('Monthly Unemployment Trends, 1948')

ax1.plot(first_twelve['DATE'], first_twelve['VALUE'])
ax2.plot(first_twelve['MONTH'], first_twelve['VALUE'])

plt.show()

这里写图片描述

2. 一个图中画两条线

import pandas as pd
import matplotlib.pyplot as plt

unrate = pd.read_csv('unrate.csv') # 读csv文件
unrate['DATE'] = pd.to_datetime(unrate['DATE'])
unrate['MONTH'] = unrate['DATE'].dt.month

fig = plt.figure(figsize=(7, 5))

plt.xlabel('Month')
plt.ylabel('Unemployment Rate')
plt.title('Monthly Unemployment Trends, 1948 & 1949')

plt.plot(unrate[0:12]['MONTH'], unrate[0:12]['VALUE'], c='red') # c='red'定义画线为红色
plt.plot(unrate[12:24]['MONTH'], unrate[12:24]['VALUE'], c='blue') # c='blue'定义画线为蓝色
# 如果有多条线需要画,可以多写这么几条函数,也可以像下面代码中,用一个循环解决

plt.show()

即红色为1948年,蓝色为1949年数据。
这里写图片描述

3. 一个图中画多条线

import pandas as pd
import matplotlib.pyplot as plt

unrate = pd.read_csv('unrate.csv') # 读csv文件
unrate['DATE'] = pd.to_datetime(unrate['DATE'])
unrate['MONTH'] = unrate['DATE'].dt.month

fig = plt.figure(figsize=(10, 6))

plt.xlabel('Month')
plt.ylabel('Unemployment Rate')
plt.title('Monthly Unemployment Trends')

colors = ['red', 'blue', 'green', 'orange', 'black']
for i in range(5):
    start_index = i * 12
    end_index = (i + 1) * 12
    subset = unrate[start_index:end_index]
    plt.plot(subset['MONTH'], subset['VALUE'], c=colors[i])

plt.show()

按colors清单里定义的5种颜色,依次画线,分别为1948、1949、1950、1951、1952
这里写图片描述

4. 在图中添加提示标签
这里写图片描述
实现起来也很简单,之前基础上修改3处代码就可以了,实现看下面代码:
在for部分

for i in range(5):
    start_index = i * 12
    end_index = (i + 1) * 12
    subset = unrate[start_index:end_index]
    label = str(1948 + i) # 修改部分1,增加这句
    plt.plot(subset['MONTH'], subset['VALUE'], c=colors[i], label=label) # 修改部分2,把label=label加进去
plt.legend(loc='best') # 修改部分3,用这句把提示标签画出来,loc参数决定标签在图中放的位置
# print(help(plt.legend)) # 查看plt.legend函数都有什么参数可选
plt.show()

这里写图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lwplwf/article/details/67634710

智能推荐

bochs 2.2.6 编译和GDB调试_gdb怎么调试bochs-程序员宅基地

文章浏览阅读1.3k次。Table of Contents1 在ubuntu 10.04上面编译bochs 2.2.6遇到了一些编译问题1.1 修改源文件 symbols.cc1.2 安装如下package:1.3 config1.4 make1 在ubuntu 10.04上面编译bochs 2.2.6遇到了一些编译问题symbols.cc: At global scope_gdb怎么调试bochs

机试练习06:poj3349——哈希表应用-程序员宅基地

文章浏览阅读82次。一、题解方法此题不能采用暴力枚举的办法,利用哈希表先将输入数据分类,然后针对key值相同的雪花,再进一步进行细致地判断。key值采取雪花6个arm值加和,进行粗略比较,因为只有在key值相同的前提下,才有可能两个雪花完全一致。如果两个雪花key值相同,再分别比较每一个arm的长度,顺时针、逆时针比较判断二者异同。只要发现存在相同的雪花,就返回结果。二、题解代码 1...

手把手教你配置:Jenkins+Github+Webhook +Nginx自动化打包部署Vue项目_nginx 配置修改 jenkins 自动部署-程序员宅基地

文章浏览阅读1.3k次。前面的话这篇文章记录阿里云服务器的配置。小柒所使用的系统是CentOS.连接服务器进入自己的云服务器 --》 进入实例:点击更多,重置自己的密码:重置之后,重启实例。点击远程连接:成功登录之后:安装nginxyum -y install nginx// 检查是否安装成功nginx -v 成功安装:安装好的文件位置:/usr/sbin/nginx:主程序/et..._nginx 配置修改 jenkins 自动部署

web表单注册验证过程及源码_注册表单里面性别代码怎么写-程序员宅基地

文章浏览阅读3.1k次。效果图: 第一部分:学习要点:1.核心方法2.option 参数3.工具方法传统的表单提交,需要多次跳转页面,极大的消耗资源也缺乏良好的用户体验。而这款form.js 表单的 Ajax 提交插件将解决这个问题。一.核心方法官方网站:http://ma_注册表单里面性别代码怎么写

OmniGraffle 7 Mac 注册码(仅做记录)_omnigraffle7许可证密钥-程序员宅基地

文章浏览阅读8k次。OmniGraffle 7 Mac 注册码账号:Appked密码:MFWG-GHEB-HYTW-CGHT-CSXU-QCNC-SXU_omnigraffle7许可证密钥

宝塔搭建ECS下载站时Apache httpd访问出现中文路径与文件名乱码问题的解决方法_宝塔 下载文件名乱码-程序员宅基地

文章浏览阅读1k次。宝塔搭建ECS下载站时Apache httpd访问出现路径与文件名乱码问题的解决方法_宝塔 下载文件名乱码

随便推点

Java项目:基于java+ssm富锦市业余足球联赛管理系统-程序员宅基地

文章浏览阅读271次。足球联赛管理系统主要目的是对足球联赛中心所有的足球联赛信息进行管理,并且合理管理好管理员发布球队、球员和比赛信息,会员浏览查看球队和比赛信息的流程。提高足球联赛管理的工作效率,降低管理的成本。本系统选用Windows作为服务器端的操作系统,开发语言选用Java,数据库选用Mysql,SSM(Spring+SpringMVC+MyBatis)框架,使用mybatis数据库连接技术,使用eclipse作为系统应用程序的开发工具,Web服务器选用Tomcat版本。下面分别简单阐述一下这几个功能模块需求。1.登

jsdbc mysql.ocx_JS直接访问数据 -SQLite | 学步园-程序员宅基地

文章浏览阅读146次。JavaScript DataBase ConnectorJSDBC:提供Javascript有效的连接数据库,目前支持MySQL、SQLite、ACCESS,后期会支持更多的数据库;在从事AJAX开发的工程师肯定会希望有一个通过AJAX直接连接数据库的组件,这样,可以省掉后台很多的操作步骤,比如免去了部署JAVA的运行环境,免去了写很多复杂的JDBC调用,不管出于调试的需要还是应用的需要,JSD..._jsdbc

一种巧妙获取Android状态栏高度的办法_getresources().getidentifier("status_bar_height-程序员宅基地

文章浏览阅读1.2k次。这是在我研究相对布局和绝对布局的时候顺带发现的。我们都知道,普通的Android界面如图所示,从上到下依次是statusbar,actionbar,内容,虚拟按键。要获取状态栏高度,一种比较常规的做法是: private int getStatusBarHeight(Context context) { int result = 0; _getresources().getidentifier("status_bar_height

android源码编译记录_android打开编译终端记录-程序员宅基地

文章浏览阅读336次。android源码编译_android打开编译终端记录

docker运行grafana_docker 部署 grafana.ini 配置 root_url-程序员宅基地

文章浏览阅读2.1k次。官方文档:http://docs.grafana.org/docker run -d -p 3000:3000 --name=grafana --network host \-e "GF_SERVER_ROOT_URL=http://grafana.server.name" \-e "GF_SECURITY_ADMIN_PASSWORD=admin" \grafana/grafana..._docker 部署 grafana.ini 配置 root_url

【rocketmq启动nameserver失败】_nameserver:未找到命令-程序员宅基地

文章浏览阅读1.4k次。【rocketmq启动nameserver失败】_nameserver:未找到命令