首页 > 解决方案 > 如何使用 matplotlib 在极坐标图上放置文本?

问题描述

这是 matplotlib Scatter plot onpolar axis文档中的一个演示

import numpy as np
import matplotlib.pyplot as plt


# Fixing random state for reproducibility
np.random.seed(19680801)

# Compute areas and colors
N = 150
r = 2 * np.random.rand(N)
theta = 2 * np.pi * np.random.rand(N)
area = 200 * r**2
colors = theta

fig = plt.figure()
ax = fig.add_subplot(projection='polar')
c = ax.scatter(theta, r, c=colors, s=area, cmap='hsv', alpha=0.75)

在此处输入图像描述

现在我想用一些文本替换这些点,比如在此处输入图像描述

我应该对这些代码做哪些修改?

另外,我也想放图而不是文字,可以吗?

谢谢!!! 在此处输入图像描述

标签: pythonmatplotlibdata-visualization

解决方案


这是原始代码:

import numpy as np
import matplotlib.pyplot as plt


# Fixing random state for reproducibility
np.random.seed(19680801)

# Compute areas and colors
N = 150
r = 2 * np.random.rand(N)
theta = 2 * np.pi * np.random.rand(N)
area = 200 * r**2
colors = theta

fig = plt.figure()
ax = fig.add_subplot(projection='polar')
c = ax.scatter(theta, r, c=colors, s=area, cmap='hsv', alpha=0.75)

如果添加这两行:

plt.text(0.67, 0.9, 'I am cartesian coordinate', transform=plt.gcf().transFigure)
plt.text(np.pi, r[len(r)-1], 'I am polar coordinate')

你会得到

在此处输入图像描述

如果您添加此代码:

im = Image.open('smurf.png')
newax = fig.add_axes([0.5, 0.5, 0.2, 0.2], zorder=1)
newax.imshow(im)
newax.axis('off')
newax = fig.add_axes([0.3, 0.3, 0.2, 0.2], zorder=1)
newax.imshow(im)
newax.axis('off')

你会得到

在此处输入图像描述

但它需要转换计算才能得到极坐标


推荐阅读