Я пытаюсь сделать 2D-график плотности в python с использованием tikzplotlib. Мне нужно иметь цветовую шкалу (и соответствующую ось z) в логарифмической шкале.
Вот пример рисунка в формате png, который я хочу получить в формате tex:
Вот код, который я использую на Python:
f = figure(figsize=(16.2,12.6))
ax = f.add_axes([0.2, 0.02, 0.72, 0.79])
axcolor = f.add_axes([0.95, 0.05, 0.02, 0.72])
im = ax.matshow(fun(X, Y), norm=LogNorm(vmin=1e-1, vmax=1e2))
t = [1e-2, 1e-1, 1e0, 1e1, 1e2]
f.colorbar(im, cax=axcolor, ticks=t)
tikzplotlib.save("2D.tex")
Проблема в том, что данные слишком большие, и tikzplotlib сохраняет их как отдельный файл png, который затем загружается в 2D.tex. Но тогда они больше не находятся в логарифмической шкале.
Я провел большое количество исследований, но все ответы, которые я нашел, касаются случаев, когда график плотности определяется матрицей или функцией. У меня же вместо этого есть огромный np.array.
Буду благодарен за любую помощь.
решение1
Похоже, это ошибка в tikzplotlib, и, вероятно, ее нельзя полностью решить без более глубокого понимания модуля. В общем, как бы удобно это ни было, я не советую использовать его вдали от простых линейных графиков. Причина в том, что tikzplot склонен к ошибкам и в большинстве случаев требует ручной корректировки в сгенерированном коде. Другая причина — иметь согласованные графики с согласованной схемой, которую лучше устанавливать с помощью «чистого» LaTex/PGFPlots. Лучше всего это достигается с помощью «стилей/шаблонов», определенных в PGFPlots.
Отвечая на ваш вопрос: возможным решением будет экспорт данных и компиляция документа с помощью LuaLatex. LuaLatex не имеет ограничений по размеру, и я настоятельно рекомендую его, поскольку у него есть много других преимуществ по сравнению с pdfLaTex. Если вы хотите создать весь документ, а не только график, вам, вероятно, придется внести некоторые изменения в документ.
ВидетьКакие пакеты следует загружать с помощью LuaTex?Чтобы получить больше информации.
Надеюсь, этот ответ вам хоть немного поможет.