Estou tentando fazer um gráfico de densidade 2D em python usando tikzplotlib. Preciso ter a barra de cores (e o eixo z correspondente) na escala logarítmica.
Aqui está o exemplo da figura em png que desejo ter no formato tex:
Aqui está o código que estou usando em 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")
O problema é que os dados são muito grandes e o tikzplotlib os salva como um arquivo png separado que é então carregado em 2D.tex. Mas então não está mais na escala logarítmica.
Pesquisei bastante, mas todas as respostas que encontrei tratam de casos em que o gráfico de densidade é definido por uma matriz ou função. Em vez disso, tenho um enorme np.array.
Ficarei grato por qualquer ajuda
Responder1
Este parece ser um bug no tikzplotlib e provavelmente não pode ser resolvido completamente sem uma compreensão mais profunda do módulo. Em geral, por mais conveniente que seja, não aconselho usá-lo fora de gráficos de linhas simples. A razão é que o tikzplot está sujeito a erros e na maioria dos casos necessita de ajustes manuais no código gerado. Outra razão é ter gráficos consistentes com um esquema consistente, que deve ser melhor definido com lotes LaTex/PGFP "puros". Isto é melhor conseguido com "estilos/modelos" definidos em PGFPlots.
Para responder sua pergunta: uma possível solução seria exportar os dados e compilar o documento com LuaLatex. LuaLatex não tem limite de tamanho e eu recomendo fortemente, pois tem muitas outras vantagens em relação ao pdfLaTex. Se você quiser criar todo o seu documento e não apenas o gráfico, provavelmente terá que fazer alguns ajustes no seu documento.
VerQuais pacotes devo carregar com LuaTex?Para maiores informações.
Espero que esta resposta o ajude um pouco.