Python绘制分类图的方法


Posted in Python onApril 20, 2021

前言

遥感影像分类图一般为特定数值对应一类地物,用Python绘制时,主要在颜色的映射和对应的图例生成。

plt.matplotlib.colors.ListedColormap支持自定义颜色。matplotlib.patches mpatches对象可以生成一个矩形对象,控制其颜色和地物类型的颜色对应就可以生成地物分类的图例了。具体用法可以自行Google和百度。下面给出一个模拟地物分类数据的可视化例子。

代码

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(0)
data = np.random.randint(0, 3, size=(100,100))

colors = dict((
                (0, (0, 255, 0, 255)), # 前三位RGB,255代表256色
                (1, (0, 0, 255, 255)),  
                (2, (255, 255, 0, 255)),  
             ))

# 转换为0-1
for k in colors:
    v = colors[k]
    _v = [_v / 255.0 for _v in v]
    colors[k] = _v
    
index_colors = [colors[key] if key in colors else
                (255, 255, 255, 0) for key in range(0, len(colors))]

cmap = plt.matplotlib.colors.ListedColormap(index_colors, 'Classification', len(index_colors)) # n等于颜色表长度,否则被截断或被重复
# cmap = plt.matplotlib.colors.ListedColormap(['gray', 'orange', 'k'], 'Classification')

plt.rcParams['font.family'] = 'Arial'
plt.rcParams['font.size'] = 10
plt.rcParams['font.weight'] = 'bold'

fig, ax = plt.subplots(figsize=(4,3.5), dpi=300)
ax.imshow(data, cmap=cmap, interpolation='none')

# 绘制矩形的补丁, 用来生成图例,fig.add_artist()才会在图中显示出来 
import matplotlib.patches as mpatches 
rectangles = [mpatches.Rectangle((0, 0,), 1, 1, facecolor=index_colors[i]) 
              for i in range(len(index_colors))]

labels = ['forest',
          'water',
          'urban']

ax.legend(rectangles, labels,
          bbox_to_anchor=(1.4, 0.25), fancybox=True, frameon=False,)
# 取消刻度和标签显示
ax.tick_params(which='major', bottom=0, left=0)
ax.set_xticklabels('')
ax.set_yticklabels('')

效果图:

Python绘制分类图的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python写的PHPMyAdmin暴力破解工具代码
Aug 06 Python
Python实现计算文件夹下.h和.cpp文件的总行数
Apr 23 Python
详解Python中的Descriptor描述符类
Jun 14 Python
Python win32com 操作Exce的l简单方法(必看)
May 25 Python
Python实现连接postgresql数据库的方法分析
Dec 27 Python
centos6.8安装python3.7无法import _ssl的解决方法
Sep 17 Python
Python实现正则表达式匹配任意的邮箱方法
Dec 20 Python
对python:threading.Thread类的使用方法详解
Jan 31 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
Aug 29 Python
Python 日志logging模块用法简单示例
Oct 18 Python
通过Turtle库在Python中绘制一个鼠年福鼠
Feb 03 Python
python 多线程死锁问题的解决方案
Aug 25 Python
Pytest allure 命令行参数的使用
在pyCharm中下载第三方库的方法
Python控制台输出俄罗斯方块移动和旋转功能
Apr 18 #Python
深入理解python多线程编程
Apr 18 #Python
Python实现文本文件拆分写入到多个文本文件的方法
Apr 18 #Python
python批量更改目录名/文件名的方法
Apr 18 #Python
python解决12306登录验证码的实现
You might like
PHP5中MVC结构学习
2006/10/09 PHP
PHP中数组的分组排序实例
2014/06/01 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
2021/03/09 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
JavaScript检查某个function是否是原生代码的方法
2014/08/20 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
js确认框confirm()用法实例详解
2016/01/07 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
vue中实现在外部调用methods的方法(推荐)
2018/02/08 Javascript
红黑树的插入详解及Javascript实现方法示例
2018/03/26 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
Python计算三角函数之asin()方法的使用
2015/05/15 Python
python获得一个月有多少天的方法
2015/06/04 Python
python检查字符串是否是正确ISBN的方法
2015/07/11 Python
Python的语言类型(详解)
2017/06/24 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
2021/01/28 Python
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
宿舍卫生检讨书
2014/01/16 职场文书
八一建军节感言
2014/02/28 职场文书
就业证明函
2015/06/17 职场文书
关于职业道德的心得体会
2016/01/18 职场文书
汽车销售合同文本
2019/08/08 职场文书
PHP控制循环操作的时间
2021/04/01 PHP
Python中json.dumps()函数的使用解析
2021/05/17 Python
redis的list数据类型相关命令介绍及使用
2022/01/18 Redis
Javascript中Microtask和Macrotask鲜为人知的知识点
2022/04/02 Javascript
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL