python - 用 python 绘制一个包含 X、Y、半径、强度的矩阵
问题描述
我有一个包含以下列的数组:X(位置),Y(位置),R(半径)和强度(半径内)我想绘制一个(X,Y)地图,其中包含具有不同半径的圆和每个圆将根据强度列显示颜色。我在周围看到了这个阴谋之王。为了使情节清晰,我计划将强度分成 4 或 5 个箱,以便只有 4 或 5 种颜色。我正在考虑使用“plt.imshow”,但我不想要一个方形像素,我想要具有不同半径的圆圈。如果有人有一些想法,我会很感激..谢谢
解决方案
通常,您会为此类数据使用散点图。但是,我发现如果我将每个点绘制为注释标记,我可以最大程度地控制标记的大小和颜色,这正是您解决此问题所需要的。假设您在 csv 文件中有以下示例数据:
x,y,radius,intensity
1,4,3,10
2,4,4,20
4,2,5,30
6,8,3,40
8,10,2,50
9,4,6,50
3,2,3,20
您可以像这样绘制它:
import pandas as pd
from matplotlib import pyplot as plt
df = pd.read_csv('sample2.csv')
intensity_range = (df.intensity.max()-df.intensity.min())
colors = ['red','orange', 'yellow', 'green', 'blue']
for _,row in df.iterrows():
plt.annotate(text=' ', xy= (row['x'],row['y']), size= row['radius'], bbox={"boxstyle":"circle","color":colors[int(row['intensity']*4/intensity_range)-1]})
plt.xlim(df.x.min() - 1, df.x.max() + 1)
plt.ylim(df.y.min() - 1, df.y.max() + 1)
plt.show()
您可以使用相同的注释策略来添加自定义颜色条,如下所示。使用下面代码中的常量,让它看起来像你想要的那样。
for i, color in enumerate(colors):
plt.annotate(text= str(i* intensity_range//4 + df.intensity.min()).ljust(8, ' '), xy=(df.x.mean() + i, df.y.max()+ 1), size=(10), bbox={"boxstyle": "square", "color": color})
推荐阅读
- javascript - 去抖功能没有按预期工作,好像它没有被执行
- oracle - 无法从 C# 通过 Wallet 连接到 Oracle DB
- r - 多组-boxplot-R
- ios - 未找到 Xcode 模块“adjust_sdk”
- android - 应用程序(API > 23)在使用企业时是否必须要求授予“危险权限”?
- android - 在片段内使用 Android Studio 中的 Google Places API
- apache-kafka - 使用 Kafka Schema Registry 进行测试/QA/Prod 设置
- java - 通过 SSL 从 Spring Boot 连接到 artemis AMQP
- excel - Office365 Excel 作为 GCP BigQuery 的源
- r - 在 LC50 毒性分析中使用概率分析时产生的 NaNS