Работа с размерами изображения. (* <- *) помечает важные изменения в вашем коде, остальные - это, в основном, размер шрифта: </p>
intense = Reverse[Round[Rationalize /@ N[10^Range[0, 3, 1/3]]]];
values = Range[0, 9/10, 1/10];
imgSize = 400; (* <- *)
Off[Ticks::ticks]
IntersectionDp1 = {{1., 588.377}, {2.15443, 580.306}, {4.64159, 573.466},
{10., 560.664}, {21.5443, 552.031}, {46.4159, 547.57}, {100., 545.051},
{215.443, 543.578}, {464.159, 542.281}, {1000., 541.346}}
FindD1 = ListLogLinearPlot[Map[List, IntersectionDp1], Frame -> True,
AxesOrigin -> {-1, 0},
PlotMarkers ->
With[{markerSize = 0.04},
{Graphics[{Lighter[Blue, #], Disk[]}], markerSize} &
/@ Range[9/10, 0, -1/10]], Filling -> Axis, FillingStyle -> Opacity[0.8],
PlotRange -> {{.5, 1100}, {540, 600}}, ImageSize -> imgSize]; (* <- *)
intensityLegend =
Rasterize[Column[
Prepend[
Reverse@MapThread[ (* <- *)
Function[{intensity, values},
Row[{Graphics[{(Lighter[Blue, values]),
Rectangle[{0, 0}, {4, 1}], Black,
Text[Style[ToString[intensity], 30, Bold], {2, .5}]}]}]],
{intense, values}],
Text[Style["Photons Number", Bold, 25]]]],
ImageSize -> {Automatic, (* <- *)
IntegerPart@
First[imgSize Cases[AbsoluteOptions[FindD1],
HoldPattern[AspectRatio -> x_] -> x]]}];
Grid[{{intensityLegend, FindD1}, {intensityLegend, FindD1}}, Frame -> True]
![enter image description here](https://i.stack.imgur.com/vZUGi.png)
Где я перевернул столбец интенсивности для эстетических целей.
Редактировать
Если вы явно не укажете опцию ImageSize для графика, вы разочарованно обнаружите, что AbsoluteOptions[Plot, "ImageSize"]
возвращает "Automatic"
!
Редактировать Ответ на комментарий @ 500 ниже
Выражение:
ImageSize -> {Automatic, (* <- *)
IntegerPart@
First[imgSize Cases[AbsoluteOptions[FindD1],
HoldPattern[AspectRatio -> x_] -> x]]}];
действительно является рабочей заменой чего-то, что должно работать , но не , чтобы получить размер изображения графика:
ImageSize -> {Automatic, Last@AbsoluteOptions[FindD1,"ImageSize"]}
Итак, что делает IntegerPart[...]
, так это получает вертикальный размер изображения графика, умножая imgSize
на AspectRatio
графика.
Чтобы понять, как это работает, запустите код и введите:
AbsoluteOptions[FindD1]
, и вы увидите там параметры печати. Затем функция Cases [] просто извлекает опцию AspectRatio
.
На самом деле есть более чистый способ сделать то, что делает Дело []. Это:
AbsoluteOptions[FindD1,"AspectRatio"]
но есть еще одна ошибка в функции AbsoluteOptions, которая не позволяет нам использовать ее таким образом.