如何将 Matplotlib 标记符号显示为字符串
How to show Matplotlib Marker symbols as a string
我正在尝试设置我的 Matplotlib 多图的“副标题”,如下所示:
plt.gcf().suptitle("pc1\npc2", fontsize=10)
如下图所示:
现在我想展示一种伪图例,而不是下一行的 'pc2',但没有任何装饰,只是简单的符号,如下面相应的 R 图中所示:
看到第二行显示 'square' 后跟 MRP 一词,另一个正方形后跟 XRD 等等?我正在尝试复制它(不完全但接近)。正如您在我上面显示的代码行中看到的那样,换行符“\n”将标题文本字符串推到下一行。如果我可以使用标记符号(正方形、三角形、星形等)大致格式化第二行,那么我已经准备就绪。确切的标记并不重要,我可以使用任何可以被标题字符串解释和显示为符号的标记。我选择的标记向量如下所示(但可以更改为任何一组 5 个符号):
markers_list = ["s", "o", "*", "^", "+"]
如果您想查看整个 Python 代码和更多详细信息,可以在以下线程中查看:
我不想显示该线程中讨论的图例。第二行的简单字符串表示就足够了。
这是一个在其中一个图上使用图例但将其定位在图形坐标中的示例。
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(12)
import seaborn.apionly as sns
plt.rcParams["figure.figsize"] = 7,3.5
markers_list = ["s", "o", "*", "^", "+"]
labels = ["MRP","XRD","Geochem","GC", "OR"]
fig, axes = plt.subplots(ncols=3)
for i, ax in enumerate(axes):
a = np.random.normal(size=(66))
sns.distplot(a, ax=ax, hist_kws={"ec":"k","fc":(i/3.,0,1-i/3.)})
this_x= np.array([-1,0,1.5])
data_x, data_y = ax.lines[0].get_data()
this_y = np.interp(this_x, data_x, data_y)
for i, m, l in zip(range(len(labels)), markers_list, labels):
ax.plot(this_x, this_y-i*0.016, marker=m, markersize = 3,
color="black", ls="", label=l)
fig.suptitle("pc1",x=0.5,y=0.98)
axes[0].legend(loc="lower center", ncol=5,
bbox_to_anchor=(0.5,0.8),bbox_transform=plt.gcf().transFigure)
plt.tight_layout()
plt.subplots_adjust(top=0.8)
plt.show()
我正在尝试设置我的 Matplotlib 多图的“副标题”,如下所示:
plt.gcf().suptitle("pc1\npc2", fontsize=10)
如下图所示:
现在我想展示一种伪图例,而不是下一行的 'pc2',但没有任何装饰,只是简单的符号,如下面相应的 R 图中所示:
看到第二行显示 'square' 后跟 MRP 一词,另一个正方形后跟 XRD 等等?我正在尝试复制它(不完全但接近)。正如您在我上面显示的代码行中看到的那样,换行符“\n”将标题文本字符串推到下一行。如果我可以使用标记符号(正方形、三角形、星形等)大致格式化第二行,那么我已经准备就绪。确切的标记并不重要,我可以使用任何可以被标题字符串解释和显示为符号的标记。我选择的标记向量如下所示(但可以更改为任何一组 5 个符号):
markers_list = ["s", "o", "*", "^", "+"]
如果您想查看整个 Python 代码和更多详细信息,可以在以下线程中查看:
我不想显示该线程中讨论的图例。第二行的简单字符串表示就足够了。
这是一个在其中一个图上使用图例但将其定位在图形坐标中的示例。
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(12)
import seaborn.apionly as sns
plt.rcParams["figure.figsize"] = 7,3.5
markers_list = ["s", "o", "*", "^", "+"]
labels = ["MRP","XRD","Geochem","GC", "OR"]
fig, axes = plt.subplots(ncols=3)
for i, ax in enumerate(axes):
a = np.random.normal(size=(66))
sns.distplot(a, ax=ax, hist_kws={"ec":"k","fc":(i/3.,0,1-i/3.)})
this_x= np.array([-1,0,1.5])
data_x, data_y = ax.lines[0].get_data()
this_y = np.interp(this_x, data_x, data_y)
for i, m, l in zip(range(len(labels)), markers_list, labels):
ax.plot(this_x, this_y-i*0.016, marker=m, markersize = 3,
color="black", ls="", label=l)
fig.suptitle("pc1",x=0.5,y=0.98)
axes[0].legend(loc="lower center", ncol=5,
bbox_to_anchor=(0.5,0.8),bbox_transform=plt.gcf().transFigure)
plt.tight_layout()
plt.subplots_adjust(top=0.8)
plt.show()