Как вы разместите текст вне графика в математике? Быстрый поиск в Google приведет вас к
http://reference.wolfram.com/mathematica/howto/AddTextOutsideThePlotArea.html
Этого недостаточно, поскольку вы хотите добиться этого с помощью кода. Вот простой пример размещения текста в системе mathematica:
Show[
Plot[x^3, {x, -1, 1},
Frame -> True,
ImageSize -> Medium,
FrameLabel -> {"x", "y"},
PlotRange -> {{-1, 1}, {-1, 1}}
],
Graphics[
Text[Style["A", Bold, 14, Red], {.5, .5}]]
]
Буква A помещается в точку (.5, .5) относительно графика. Есть ли способ разместить текст относительно размера изображения? Насколько мне известно, все сделано в координатах сюжета. У меня есть временное решение: установить для параметра PlotRangeClipping
значение False
и задать текст, указав правильные координаты.
Show[
Plot[
x^3, {x, -1, 1},
Frame -> True,
ImageSize -> Medium,
FrameLabel -> {"x", "y"},
PlotRange -> {{-1, 1}, {-1, 1}}
],
Graphics[
Text[
Style["A", Bold, 14, Red],
{-1.2, 1}
]
],
PlotRangeClipping -> False
]
Недостатком этого метода является то, что если мы изменим диапазон графика, то нам нужно пересчитать координаты текста, чтобы сохранить его там, где мы хотим (относительно всего изображения).
Попробуйте расположить Текст
A за пределами сюжета.
Framed[
Show[
Graphics[
{Orange, Disk[{0, 0}, 3.5]},
Frame -> True,
PlotRange -> {{-3, 3}, {-3, 3}},
PlotRangeClipping -> True,
FrameLabel -> {"x", "y"}
],
Graphics[
Text[
Style["A", Bold, 14],
ImageScaled[{.1, .95}]
]
]
]
]
Чтобы найти другое решение этой проблемы, я начал другой пост, который дал мне идеи для преодолеть проблему, которая была у решения Belisarius: экспорт окончательной фигуры в PDF представлял собой растровую версию фигуры. Найдите решение в моем другом сообщении здесь .
Поскольку ссылки на изображения исчезли, а ссылка в предыдущем редактировании была изменена, я решил обновить изображения и включить модифицированное решение ответа Саймона .
Идея состоит в том, чтобы создать маску и включить маску перед рисованием меток. Таким образом
мы создаем собственный plotRangeClipping
.
mask2D = Graphics[{Gray,
Polygon[{
ImageScaled[{-0.5, -0.5}],
ImageScaled[{-0.5, 1.5}],
ImageScaled[{1.5, 1.5}],
ImageScaled[{1.5, -0.5}],
ImageScaled[{-0.5, -0.5}],
Scaled[{0, 0}],
Scaled[{1, 0}],
Scaled[{1, 1}],
Scaled[{0, 1}],
Scaled[{0, 0}],
ImageScaled[{-0.5, -0.5}]
}]
}];
В некоторых случаях использование ImageScaled
из {1,1}
недостаточно для обрезки основного изображения. Именно по этой причине
Я дал больший охват, используя 1,5
и -0,5
. Теперь мы можем нарисовать изображение с меткой следующим образом:
Framed@Show[
Graphics[
{
Orange,
Disk[{0, 0}, 3.5]
},
Frame -> True,
PlotRange -> {{-3, 3}, {-3, 3}},
FrameLabel -> {"x", "y"}
],
mask2D,
Graphics[
Text[
Style["A", Bold, 14],
ImageScaled[{0, 1}],
{-1, 1}
]
],
Background -> Red
]
Вот желаемое изображение:
Обратите внимание, что я изменил фон изображения на красный. Это можно легко изменить, изменив свойство Фон
, а для маски просто измените Серый
на любой цвет, который вы предпочитаете (например, белый).