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中文竖排显示的方法
Jul 28 Python
Python错误: SyntaxError: Non-ASCII character解决办法
Jun 08 Python
python 删除大文件中的某一行(最有效率的方法)
Aug 19 Python
Python enumerate索引迭代代码解析
Jan 19 Python
Python SQLite3简介
Feb 22 Python
pandas中的DataFrame按指定顺序输出所有列的方法
Apr 10 Python
Django后台获取前端post上传的文件方法
May 28 Python
Django项目中用JS实现加载子页面并传值的方法
May 28 Python
用python爬取租房网站信息的代码
Dec 14 Python
Django对models里的objects的使用详解
Aug 17 Python
Python接口自动化判断元素原理解析
Feb 24 Python
pycharm部署django项目到云服务器的详细流程
Jun 29 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
php Static关键字实用方法
2010/06/04 PHP
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
2007/03/06 Javascript
EXT中xtype的含义分析
2010/01/07 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
Javascript解析URL方法详解
2014/12/05 Javascript
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
学习JavaScript设计模式之模板方法模式
2016/01/20 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
2017/02/27 Javascript
Javascript前端经典的面试题及答案
2017/03/14 Javascript
jquery.validate.js 多个相同name的处理方式
2017/07/10 jQuery
React Native 使用Fetch发送网络请求的示例代码
2017/12/02 Javascript
对Vue- 动态元素属性及v-bind和v-model的区别详解
2018/08/27 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
13 个npm 快速开发技巧(推荐)
2019/07/04 Javascript
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
2019/08/16 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
2019/09/03 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
Windows平台Python编程必会模块之pywin32介绍
2019/10/01 Python
python关闭占用端口方式
2019/12/17 Python
TensorFlow获取加载模型中的全部张量名称代码
2020/02/11 Python
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
护理不良事件检讨书
2014/02/06 职场文书
新文化运动的口号
2014/06/21 职场文书
个人租房协议书范本
2014/09/30 职场文书
安全月宣传标语
2014/10/07 职场文书
幼儿园百日安全活动总结
2015/05/07 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
Go标准容器之Ring的使用说明
2021/05/05 Golang