Estoy intentando hacer un gráfico de densidad 2D en Python usando tikzplotlib. Necesito tener la barra de colores (y el eje z correspondiente) en la escala logarítmica.
Aquí está el ejemplo de la figura en png que quiero tener en formato tex:
Aquí está el código que estoy usando en 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")
El problema es que los datos son demasiado grandes y tikzplotlib los guarda como un archivo png separado que luego se carga en 2D.tex. Pero ya no está en la escala logarítmica.
He investigado mucho, pero todas las respuestas que he encontrado se refieren a casos en los que el gráfico de densidad está definido por una matriz o función. Yo, en cambio, tengo un np.array enorme.
Estaré agradecido por cualquier ayuda
Respuesta1
Esto parece ser un error en tikzplotlib y probablemente no pueda resolverse por completo sin una comprensión más profunda del módulo. En general, por más conveniente que sea, desaconsejo usarlo lejos de gráficos de líneas simples. La razón es que tikzplot es propenso a errores y en la mayoría de los casos necesita ajustes manuales en el código generado. Otra razón es tener gráficos consistentes con un esquema consistente, que debería configurarse mejor con lotes LaTex/PGFP "puros". Esto se logra mejor con "estilos/plantillas" definidos en PGFPlots.
Para responder a su pregunta: una posible solución sería exportar los datos y compilar el documento con LuaLatex. LuaLatex no tiene límite de tamaño y lo recomiendo mucho, porque tiene muchas otras ventajas sobre pdfLaTex. Si desea crear su documento completo y no solo el gráfico, probablemente tendrá que hacer algunos ajustes en su documento.
Ver¿Qué paquetes debo cargar con LuaTex?para más información.
Espero que esta respuesta te ayude un poco.