Изменение стиля по умолчанию maptlotlib на seaborn приводит к тому, что некоторые маркеры легенды не отображаются должным образом.
Рассмотрим следующее MWE, в котором все маркеры легенды из официальной документации построеныСначала графики создаются в стиле по умолчанию, а затем в стиле Сиборна.
from matplotlib.lines import Line2D
import matplotlib.pyplot as plt
# https://matplotlib.org/api/markers_api.html
keys = ["point", "pixel", "circle", r"triangle_down", r"triangle_up",
r"triangle_left", r"triangle_right", r"tri_down", r"tri_up",
r"tri_left", r"tri_right", "octagon", "square", "pentagon",
"plus (filled)", "star", "hexagon1", "hexagon2", "plus", "x",
"x (filled)", "diamond", r"thin_diamond", "vline", "hline"]
values = [".", ",", "o", "v", "^", "<", ">", "1", "2", "3", "4", "8", "s", "p",
"P", "*", "h", "H", "+", "x", "X", "D", "d", "|", "_"]
# Make dictionary of markers and their description
markers = dict(zip(keys, values))
# Plot all markers with default style and seaborn style
for style in 'default', 'seaborn':
plt.style.use(style)
# Create handles for legend call
legend_elements = []
for key, value in markers.items():
legend_elements.append(Line2D([0], [0], markersize=10, marker=value,
label=key))
# Create the figure
fig, ax = plt.subplots(figsize=[6, 4])
ax.legend(handles=legend_elements, loc='center', ncol=3)
plt.show()
Выше приведены два следующих графика:
Обратите внимание, что при использовании стиля по умолчанию все маркеры отображаются должным образом.Однако с seaborn некоторые маркеры этого не делают (tri_down, tri_up, tri_left, tri_right, plus, x, vline).Похоже, заполненные маркеры работают, а другие нет.Может ли это быть как-то связано с цветом заливки и цветом кромки?
Может кто-нибудь объяснить, почему маркеры морского рожка не отображаются так, как я ожидаю, или что я делаю неправильно?Спасибо.