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实现得到一个给定类的虚函数
Sep 28 Python
在Python中marshal对象序列化的相关知识
Jul 01 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
Jul 13 Python
python虚拟环境virtualenv的安装与使用
Sep 21 Python
Flask之flask-session的具体使用
Jul 26 Python
Python生成器generator用法示例
Aug 10 Python
Python实现FTP弱口令扫描器的方法示例
Jan 31 Python
Python按钮的响应事件详解
Mar 04 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
Oct 30 Python
pytorch构建多模型实例
Jan 15 Python
PyQt5事件处理之定时在控件上显示信息的代码
Mar 25 Python
Python OrderedDict字典排序方法详解
May 21 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 set_time_limit()函数的使用详解
2013/06/05 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
CodeIgniter分页类pagination使用方法示例
2016/03/28 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
JS 控件事件小结
2012/10/31 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
js中style.display=""无效的解决方法
2014/10/30 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
vue实现折线图 可按时间查询
2020/08/21 Javascript
跟老齐学Python之list和str比较
2014/09/20 Python
python使用urlparse分析网址中域名的方法
2015/04/15 Python
Python中super关键字用法实例分析
2015/05/28 Python
在Django的模板中使用认证数据的方法
2015/07/23 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
2017/11/08 Python
Python3 伪装浏览器的方法示例
2017/11/23 Python
在CMD命令行中运行python脚本的方法
2018/05/12 Python
Python安装及Pycharm安装使用教程图解
2019/09/20 Python
PyCharm中关于安装第三方包的三个建议
2020/09/17 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
2014年药剂科工作总结
2014/11/26 职场文书
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python