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 01 Python
Python松散正则表达式用法分析
Apr 29 Python
Python自定义类的数组排序实现代码
Aug 28 Python
Python中 传递值 和 传递引用 的区别解析
Feb 22 Python
python生成密码字典的方法
Jul 06 Python
Python实现合并两个有序链表的方法示例
Jan 31 Python
python+pyqt5实现图片批量缩放工具
Mar 18 Python
python3.5安装python3-tk详解
Apr 26 Python
Django 外键的使用方法详解
Jul 19 Python
python cv2截取不规则区域图片实例
Dec 21 Python
python range实例用法分享
Feb 06 Python
基于python 等频分箱qcut问题的解决
Mar 03 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
实用函数5
2007/11/08 PHP
C# WinForm中实现快捷键自定义设置实例
2015/01/23 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
html向js方法传递参数具体实现
2013/08/08 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
2013/10/18 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
jQuery实现购物车表单自动结算效果实例
2015/08/10 Javascript
javascript基本语法
2016/05/31 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
Vue.js项目模板搭建图文教程
2017/09/20 Javascript
AngularJS使用ui-route实现多层嵌套路由的示例
2018/01/10 Javascript
vue2.0使用swiper组件实现轮播的示例代码
2018/03/03 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
JS如何实现手机端输入验证码效果
2020/05/13 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
在Python3中使用asyncio库进行快速数据抓取的教程
2015/04/02 Python
python中文件变化监控示例(watchdog)
2017/10/16 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
Python对象转换为json的方法步骤
2019/04/25 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
pycharm导入源码的具体步骤
2020/08/04 Python
Python+kivy BoxLayout布局示例代码详解
2020/12/28 Python
美国滑板店:Tactics
2020/11/08 全球购物
业务内勤岗位职责
2014/04/30 职场文书
导师工作推荐信范文
2014/05/17 职场文书
管理失职检讨书范文
2015/05/05 职场文书