Я пытаюсь изменить размер стрелки.
В функции arrow
я могу установить длину и ширину головы, но это не меняет размер стрелки на графике.
Как изменить размер стрелки на графике?
Юля: v1.10.4
Сюжеты: v1.40.5
using Plots
plot([0,1], [0,1], label = "Bool", arrow=true)
plot!([0,1], [0,.8], label = "Closed", arrow=:closed)
plot!([0,1], [0,.6], label = "Closed lw5", lw=5, arrow=:closed)
plot!([0,1], [0,.4], label = "Closed size0.9", arrow=(:closed, 0.9))
plot!([0,1], [0,.2], label = "arrow", arrow=arrow(:closed, 0.9))
arrow()
#Plots.Arrow(:simple, :head, 0.3, 0.3)
arrow(:closed, 0.9)
#Plots.Arrow(:closed, :head, 0.9, 0.9)
На странице API Plots.Arrow говорится, что мы можем передавать до четырех аргументов — стиль стрелки, сторону, на которой вы хотите, чтобы стрелка была, длина и ширина стрелки (я думаю, вы уже поняли это на основе своего кода, но дали ответ ради потомков).
К сожалению, несмотря на то, что стрелки указаны как поддерживаемые серверной частью GR по умолчанию, похоже, не все атрибуты стрелок в этом API поддерживаются.
Самый простой способ «исправить» это — просто переключить используемый вами бэкэнд. то есть делаю:
using Plots
pyplot() #switch from default GR to pyplot backend
plot([0,1],[0,1], label = "args = :closed, :head, 1., 1.", arrow=(Plots.arrow(:closed,:head,1.,1.)))
plot!([0,1.],[0,2.], label = "args = :closed, :head, 5., 3.", arrow=(Plots.arrow(:closed,:head,5.,3.)))
plot!(legend=:topleft)
производит желаемое поведение:
Если вы запустите тот же код без предварительного изменения бэкэнда, размеры стрелок не изменятся... к сожалению, многие вещи (особенно связанные с геометрией) еще не работают в бэкэнде GR по умолчанию. Если вы действительно настроены на использование GR и хотите это сделать, вам (на данный момент) придется рисовать стрелки самостоятельно. На самом деле это не так уж и сложно, но требует некоторой дополнительной работы. Я могу показать вам, как это сделать, если вы хотите пойти по этому пути, но более простое решение, которое работает так, как говорит API, — это просто переключить серверные части на тот, который поддерживает все атрибуты стрелок.
pythonplot()
тоже работает. (В документации говорится, что pyplot устарел, его заменяет pythonplot.)