以数字作为符号+图例的matplotlib散点图
matlplotlib scatterplot with numbers as symbols + legend
我想绘制一个散点图,其中有彩色数字而不是点作为符号。
我做了如下
n=np.arange(1,14,1)
fig, axs = plt.subplots(1, 2)
axs[0].scatter(x, y, linestyle='None', color="white")
for i, txt in enumerate(n):
axs[0].annotate(txt, (x[i], y[i]), color=x_y_colours[i], ha="center", va="center")
成功了,但现在我不知道如何创建图例!我想要彩色数字作为符号,然后是标签。
谢谢大家!
您可以使用markers in latex form,使用文本或数字作为标记。为此,您可以编写 marker='$...$'
,类似于 latex 在 matplotlib 标签中的使用方式。请注意,这些标记会自动居中。
import matplotlib.pyplot as plt
import numpy as np
n = np.arange(1, 14)
theta = np.pi * n * (3 - np.sqrt(5))
r = np.sqrt(n)
x = r * np.cos(theta)
y = r * np.sin(theta)
x_y_colours = plt.get_cmap('hsv')(n / n.max())
x_y_labels = [*'abcdefghijklm']
fig, ax = plt.subplots()
for xi, yi, color_i, label_i, txt in zip(x, y, x_y_colours, x_y_labels, n):
ax.scatter(xi, yi, marker=f'${txt}$', s=200, color=color_i, label=label_i)
ax.legend(markerscale=0.5, bbox_to_anchor=[1.01, 1.01], loc='upper left')
plt.tight_layout()
plt.show()
我想绘制一个散点图,其中有彩色数字而不是点作为符号。 我做了如下
n=np.arange(1,14,1)
fig, axs = plt.subplots(1, 2)
axs[0].scatter(x, y, linestyle='None', color="white")
for i, txt in enumerate(n):
axs[0].annotate(txt, (x[i], y[i]), color=x_y_colours[i], ha="center", va="center")
成功了,但现在我不知道如何创建图例!我想要彩色数字作为符号,然后是标签。
谢谢大家!
您可以使用markers in latex form,使用文本或数字作为标记。为此,您可以编写 marker='$...$'
,类似于 latex 在 matplotlib 标签中的使用方式。请注意,这些标记会自动居中。
import matplotlib.pyplot as plt
import numpy as np
n = np.arange(1, 14)
theta = np.pi * n * (3 - np.sqrt(5))
r = np.sqrt(n)
x = r * np.cos(theta)
y = r * np.sin(theta)
x_y_colours = plt.get_cmap('hsv')(n / n.max())
x_y_labels = [*'abcdefghijklm']
fig, ax = plt.subplots()
for xi, yi, color_i, label_i, txt in zip(x, y, x_y_colours, x_y_labels, n):
ax.scatter(xi, yi, marker=f'${txt}$', s=200, color=color_i, label=label_i)
ax.legend(markerscale=0.5, bbox_to_anchor=[1.01, 1.01], loc='upper left')
plt.tight_layout()
plt.show()