Я знаю этот ответ, Можно ли управлять ориентацией маркера matplotlib? и документацию по маркерам, но можно ли взять существующий символ маркера matplotlib (нерегулярный многоугольник) и повернуть его?
В частности, я хотел бы повернуть тонкий ромбовидный символ («d») на 90 градусов так, чтобы его длинная ось была горизонтальной.






Это можно сделать, если вы создадите класс стиля маркера для ромба, а затем сами измените его свойство преобразования с помощью поворота, по какой-либо причине matplotlib не предоставил эти атрибуты класса для определенных маркеров. Я привел пример ниже.
import matplotlib as mpl
import matplotlib.pyplot as plt
# make a markerstyle class and modify the transform property by 90 degrees
t = mpl.markers.MarkerStyle(marker='d')
t._transform = t.get_transform().rotate_deg(90)
plt.scatter((0,1), (0,1), marker=t, s=100)
Маркер "d" представляет собой перекошенную версию алмаза "D". Вы можете создать такой ромбовидный маркер и наклонить его в другую сторону.
Для произвольных углов вместо этого вы можете повернуть маркер.
import matplotlib.pyplot as plt
from matplotlib.markers import MarkerStyle
fig, ax = plt.subplots()
plt.scatter([1,2,3],[1,2,3], s=225, marker = "d")
m = MarkerStyle("D")
m._transform.scale(1.0, 0.6)
plt.scatter([1,2,3],[2,3,4], s=225, marker=m, color = "crimson")
m = MarkerStyle("d")
m._transform.rotate_deg(60)
plt.scatter([1,2,3],[3,4,5], s=225, marker=m, color = "limegreen")
plt.margins(0.5)
plt.show()
(Я создал отдельный вопрос, stackoverflow.com/questions/64106682/… и открыл github.com/matplotlib/matplotlib/issues/18600, чтобы попытаться найти исправление.)
Это именно то, что я ищу ... за исключением того, что я хочу использовать панель ошибок вместо разброса. Что примечательно, это не удается! Последняя ошибка -
TypeError: float() argument must be a string or a number, not 'MarkerStyle'. Кто-нибудь знает исправление?