柯摩的BLOG

Forget before get.


  • 首页

  • 人生小记

  • 关于

  • 标签118

  • 分类10

  • 归档32

  • 运动日记

  • 相册

  • 热门

  • 友链

  • 搜索

一文解决--matplotlib绘制极坐标热力图并插值优化

发表于 2020-05-13 分类于 Python 阅读次数: 阅读次数: | 字数: 804 评论数:
本文字数: 2k 阅读时长 ≈ 2 分钟

图画的好看,文看的舒心。

0️⃣ 前言

  又到了毕业季,学弟学妹们开始了毕设之旅,提到毕设想到了什么呢?对,没错,必备技巧就是绘制各种精美绝伦,举世无双的高清美图。这不,我刚炖了碗鲜美的极坐标热力图气象图汤。😢
  如下:
在这里插入图片描述
在这里插入图片描述

1️⃣ 数据准备

  数据可以是随机产生,或者放在csv文件中读。在csv中存储格式如下:
| pos | 0 | 30 | 60 | 90 |
|——-|———————|———————|———————|———————|
| 0 | 1.101447148 | 1.308827831 | 1.526038083 | 1.603848713 |
| 30 | 1.101447148 | 1.279591136 | 1.49432297 | 1.577829862 |
| 60 | 1.101447148 | 1.204513965 | 1.435064241 | 1.52576792 |
| 90 | 1.101447148 | 1.108569817 | 1.404547306 | 1.499676995 |
| 120 | 1.101447148 | 1.204513965 | 1.435064241 | 1.52576792 |
| 150 | 1.101447148 | 1.279591136 | 1.49432297 | 1.577829862 |
| 180 | 1.101447148 | 1.308827831 | 1.526038083 | 1.603848713 |
| 210 | 1.101447148 | 1.279591136 | 1.49432297 | 1.577829862 |
| 240 | 1.101447148 | 1.204513965 | 1.435064241 | 1.52576792 |
| 270 | 1.101447148 | 1.108569817 | 1.404547306 | 1.499676995 |
| 300 | 1.101447148 | 1.204513965 | 1.435064241 | 1.52576792 |
| 330 | 1.101447148 | 1.279591136 | 1.49432297 | 1.577829862 |
| 360 | 1.101447148 | 1.308827831 | 1.526038083 | 1.603848713 |

  因为要绘制的是极坐标图,所以列名代表的就是弧度,而行名代表的就是半径。
csv文件下载:data.csv,下载后复制成四份,分别命名为data1.csv,data2.csv,data3.csv,data4.csv。

2️⃣ 代码

2️⃣.1️⃣ 导入需要的包

1
2
3
4
import numpy as np
import pandas as pd
from scipy.interpolate import interp2d # 后面需要的插值库
from matplotlib import pyplot as plt

2️⃣.2️⃣ 从csv文件中读取数据

1
2
3
4
5
6
7
8
data1 = pd.read_csv('data1.csv')
data2 = pd.read_csv('data2.csv')
data3 = pd.read_csv('data3.csv')
data4 = pd.read_csv('data4.csv')
data = [data1, data2, data3, data4]
pos = np.array(data['pos']/180*np.pi)
ind = np.array(data.columns[1:], dtype=np.int)
values = np.array(data[ind.astype('str')])

2️⃣.3️⃣ 随机产生数据

1
2
3
pos = np.radians(np.linspace(0, 360, 30))
ind = np.arange(0, 90, 10)
values = np.random.random((pos.size, ind.size))

2️⃣.4️⃣ 全部代码(方便大家直接复制运行)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import numpy as np
import pandas as pd
from scipy.interpolate import interp2d
from matplotlib import pyplot as plt

data1 = pd.read_csv('data1.csv')
data2 = pd.read_csv('data2.csv')
data3 = pd.read_csv('data3.csv')
data4 = pd.read_csv('data4.csv')
data = [data1, data2, data3, data4]


def plot_weather_heatmap(dataList, title):
plt.figure(figsize=(25, 25))
for i in range(len(dataList)):
data = dataList[i]
'''
方法一:从csv文件中读取数据
'''

# pos = np.array(data['pos']/180*np.pi)
# ind = np.array(data.columns[1:], dtype=np.int)
# values = np.array(data[ind.astype('str')])

'''
方法二:随机产生数据
'''
pos = np.radians(np.linspace(0, 360, 30))
ind = np.arange(0, 90, 10)
values = np.random.random((pos.size, ind.size))

#计算插值函数
func = interp2d(pos, ind, values.T, kind='cubic')
tnew = np.linspace(0, 2*np.pi, 200) # theta
#绘图数据点
rnew = np.linspace(0, 90, 100) # r
vnew = func(tnew, rnew)
tnew, rnew = np.meshgrid(tnew, rnew)
ax = plt.subplot(2, 2, i+1, projection='polar')
plt.pcolor(tnew, rnew, vnew, cmap='jet')
plt.grid(c='black')
plt.colorbar()
ax.set_theta_zero_location("N")
ax.set_theta_direction(-1)
plt.title(title[i], fontsize=20)
#设置坐标标签标注和字体大小
plt.xlabel(' ', fontsize=15)
plt.ylabel(' ', fontsize=15)

#设置坐标刻度字体大小
plt.xticks(fontsize=15, rotation=90)
plt.yticks(fontsize=15)
# cb.set_label("Pixel reflectance")


title = ['Spring', 'Summer', 'Autumn', 'Winter']
plot_weather_heatmap(data, title)
plt.savefig("pic.png", dpi=300)
plt.show()

3️⃣ cmap参数,为了更好看

  关于下面这句中的jet参数是指定图的色域,可以更换。

1
plt.pcolor(tnew, rnew, vnew, cmap='jet')

可选值如下

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章推荐
  • 从零实现朴素贝叶斯分类器(离散情况)--以学生分班为例
  • 利用Selenium秒填朋友圈各种问卷星调查问卷
  • 简单地打造一个搜索工具--爬取所有网页并创造单词的反向索引
  • 天池二手车价格预测Task1-2—赛题理解与数据分析
  • 高性能分布式计算(HPC)作业1--节点实时通信
喜欢就支持一下吧~
柯摩 微信支付

微信支付

柯摩 支付宝

支付宝

  • 本文作者: 柯摩
  • 本文链接: https://kemo.xyz/一文解决-matplotlib绘制极坐标热力图并插值优化.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
matplotlib python 热力图 极坐标 插值 画图 pandas 气象图 毕业论文
Tweet
Share
Link
Plus
Share
Class
Send
Send
Pin
利用Selenium秒填朋友圈各种问卷星调查问卷
天池_二手车价格预测_Task4_建模调参
------------- 本 文 结 束 感 谢 您 的 阅 读 -------------
  • 文章目录
  • 站点概览
柯摩

柯摩

真实自有万钧之力
32 日志
10 分类
118 标签
RSS
GitHub E-Mail Weibo QQ Wechat Twitter Bilibili
Creative Commons
  1. 1. 0️⃣ 前言
  2. 2. 1️⃣ 数据准备
  3. 3. 2️⃣ 代码
    1. 3.1. 2️⃣.1️⃣ 导入需要的包
    2. 3.2. 2️⃣.2️⃣ 从csv文件中读取数据
    3. 3.3. 2️⃣.3️⃣ 随机产生数据
    4. 3.4. 2️⃣.4️⃣ 全部代码(方便大家直接复制运行)
  4. 4. 3️⃣ cmap参数,为了更好看
0%

Tag Cloud

  • Algorithm1
  • Anaconda31
  • Barrier1
  • BeautifulSoup1
  • BoxPlot1
  • CUDA1
  • CVM1
  • DataMining3
  • Diary5
  • ECS1
  • ESXi3
  • Editor8
  • Go1
  • Hexo1
  • IPFS2
  • IQR1
  • Job1
  • Jupyter3
  • Jupyter Notebook1
  • Lasso正则化1
  • Learning1
  • LightGBM1
  • Linear Regression1
  • Linux8
  • MATLAB1
  • MySQL1
  • Navie Bayes1
  • Next1
  • Nvidia5
  • OJ1
  • Onehot1
  • PaddleOCR1
  • Pandas Head1
  • PySimpleGUI1
  • Pycharm1
  • Python1
  • Pytorch1
  • RTX 2070 Super4
  • Reading1
  • Ridge正则化1
  • SSH1
  • Science Uranology1
  • Searcher1
  • Selenium1
  • Sticker1
  • Study3
  • Thinking2
  • Tianchi3
  • Ubuntu8
  • VMware1
  • X Server1
  • XGBoost1
  • Xftp1
  • Xshell3
  • alive_progress1
  • cross validation1
  • css1
  • cuDNN1
  • custom1
  • distributed system3
  • fan1
  • groupby1
  • matplotlib1
  • multithreading3
  • nvidia-settings1
  • pandas7
  • python9
  • requests1
  • seaborn3
  • set_gpu_fans_public2
  • socket3
  • svm1
  • xorg.conf1
  • 二进制1
  • 五折交叉验证1
  • 内存优化1
  • 决策树1
  • 分布式1
  • 分布式计算2
  • 包裹式(wrapper)1
  • 博客1
  • 反向索引1
  • 回忆1
  • 地铁线路优化1
  • 多层感知机(MLP)1
  • 多线程3
  • 嵌入式(embedding)1
  • 感情1
  • 插值1
  • 数学建模1
  • 日记1
  • 朋友圈1
  • 朴素贝叶斯1
  • 极坐标1
  • 梯度提升树(GBDT)1
  • 正则表达式1
  • 正态分布1
  • 毕业论文1
  • 气象图1
  • 温馨1
  • 热力图1
  • 画图1
  • 目标函数1
  • 真挚1
  • 私有网络1
  • 约束条件1
  • 网格调参1
  • 节点通信3
  • 虚拟机3
  • 调查问卷1
  • 贝叶斯调参1
  • 贪心调参1
  • 过滤式(filter)1
  • 遗传算法1
  • 问卷星1
  • 随机森林1
  • 随笔2
  • 风扇1
© 2015 – 2021 柯摩 | 站点总字数: 162k | 站点阅读时长 ≈ 2:27
全站共 77.3k 字
载入天数...载入时分秒...
皖ICP备 - 19020907 | 苏公网安备 32050802011200号
总访客量 人 | 总访客数 次