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 基础学习教程
Feb 08 Python
Python中变量交换的例子
Aug 25 Python
浅析Python中的多进程与多线程的使用
Apr 07 Python
处理Python中的URLError异常的方法
Apr 30 Python
python特性语法之遍历、公共方法、引用
Aug 08 Python
python画柱状图--不同颜色并显示数值的方法
Dec 13 Python
Django认证系统user对象实现过程解析
Mar 02 Python
pandas的resample重采样的使用
Apr 24 Python
python 邮件检测工具mmpi的使用
Jan 04 Python
Django扫码抽奖平台的配置过程详解
Jan 14 Python
OpenCV-Python实现油画效果的实例
Jun 08 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
May 20 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
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
Javascript base64编码实现代码
2011/12/02 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
用JS中split方法实现彩色文字背景效果实例
2016/08/24 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
laravel5.4+vue+element简单搭建的示例代码
2017/08/29 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
vue实现循环切换动画
2018/10/17 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
使用vue实现通过变量动态拼接url
2020/07/22 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
python的常见命令注入威胁
2013/02/18 Python
python实现图书管理系统
2018/03/12 Python
Python 读写文件的操作代码
2018/09/20 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
python队列原理及实现方法示例
2019/11/27 Python
Python批量启动多线程代码实例
2020/02/18 Python
Python datetime 格式化 明天,昨天实例
2020/03/02 Python
python实现简单俄罗斯方块
2020/03/13 Python
html5 postMessage解决跨域、跨窗口消息传递方案
2016/12/20 HTML / CSS
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
编码实现字符串转整型的函数
2012/06/02 面试题
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
求职信的最佳写作思路
2014/02/01 职场文书
《走一步再走一步》教学反思
2014/02/15 职场文书
毕业生如何写自荐信
2014/03/26 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
庐山导游词
2015/02/03 职场文书
2015年团支书工作总结
2015/04/03 职场文书
为什么不建议在go项目中使用init()
2021/04/12 Golang
常用的文件对应的MIME类型汇总
2022/04/26 HTML / CSS