J'ai une grande quantité de données à partir de laquelle je voudrais créer un tracé de dispersion et l'inclure dans mon document de latex. J'utilise Gnuplot pour générer le tracé de dispersion avec le format de sortie EPSLATEX pour pouvoir importer facilement les données sur mon document de latex. P>
Mon problème est que les fichiers EPS sont trop gros (environ 14 Mo par figure) qui entraîneront un très grand document de sortie. Il est clair que la raison est que toutes les données sont incluses dans le fichier EPS qui n'est pas nécessaire. p>
Cependant, je n'ai pas pu trouver un moyen de compresser le fichier EPS. Le seul moyen est de réduire le nombre de points d'échantillonnage que je n'ai que pour des raisons techniques, je préférerais ne pas le faire. p>
Quelqu'un peut-il me suggérer un moyen de réduire la taille des parcelles EPS? p>
J'ai essayé d'utiliser ImageMagick et j'ai réduit la résolution des fichiers EPS (comme Merci d'avance, P> convert -units pixelsperinch trot.eps -densatu2 300 tracé2.eps code>) mais il rétrécit les dimensions qui ne sont pas ce que je veux . p>
3 Réponses :
Le problème avec les fichiers .eps n'est pas nécessairement résolution (ce sont des graphiques vectoriels), mais la quantité d'informations gnuplot inclut lors de la création du fichier. Gnuplot a tendance à dessiner des fichiers .ps avec beaucoup d'informations supplémentaires, en particulier pour les parcelles 2D et les parcelles avec de nombreux points. Par exemple, pour une grille de carrés rouges jointes aux bords pour faire une grande place rouge, Gnuplot attira des tonnes de petits carrés rouges au lieu de la grande place. Ce problème est mentionné à la fin de Ce blog post a >, où ils disent que On dirait que vous n'utilisez pas Hors de curiosité, combien de points êtes-vous traquent? Si vous pouviez donner une idée de la quantité de données que vous utilisez, avec un exemple de code que vous utilisez actuellement, nous pourrions peut-être donner de meilleures idées. P> tracé ... avec image code> crée une sortie beaucoup plus petite que
SPLOT code> pour effectuer des cartes de chaleur. P>
SPLOT CODE>, cependant, vous pouvez donc essayer de créer un fichier .pdf au lieu de .eps, et si vous avez besoin de .eps le convertir en utilisant
pdf2ps code > ou un autre programme. Cela pourrait aider ... p>
J'utilise TRACE CODE>:
SET TERMINAL EPSLATEX Taille 8cm, Colorext de 8cm ColorText; Définir la sortie "tracé.tex"; TRACE "TEMP.DAT" en utilisant 2: 4 W p Titre "" code>; où "Temp.dat" est un fichier contenant environ 1'000'000 lignes chacune ayant les données souhaitées dans les deuxième et quatrième colonnes.
Je vois. Je suis d'accord avec la réponse de Raphaël - si vous souhaitez montrer un million de points de données, cela donnera lieu à un énorme dossier, quelle que soit votre si vous utilisez des graphiques vectoriels. Je suggérerais de faire une image de référence haute résolution à la place ou filtrant les données d'une certaine manière, comme avec la commande chaque code>.
La version actuelle de Développement GNUPLOT a une option Niveau3 code> pour la borne PostScript et EPSLATEX qui utilise un codage PNG pour les bitmaps intégrés à partir de
TRACE ... avec image code>. Cela peut réduire considérablement la taille de l'image.
Ma solution pour ce problème est la commande "TOUTES" dans gnuplot, c'est-à-dire comme ceci, vous pouvez déjà réduire la taille des graphiques EPS par ~ un facteur de 10. Bien sûr Vous devez vous découvrir combien de données vous pouvez omettre sans perdre trop d'informations, c'est-à-dire que la figure doit toujours contenir toutes les fonctionnalités que vous souhaitez visualiser. p> Si cela n'est pas recherché, je convertis normalement le EPS à une image raster de la taille appropriée et de la convertir en EPS. Aussi, vous devez également jouer avec la résolution, etc. p> p>
Merci beaucoup. J'ai essayé cela, cela aide à des étendues, mais le problème est que la taille de la sortie EPS est toujours grande (si j'inclus 5 parcelles de ce type dans mon document de latex, la taille du fichier PDF résultant serait aussi grande que 6 Mo) . Peut-être que je devrais utiliser un facteur de descente plus grand mais suffisamment petit pour conserver les fonctionnalités que je veux exposer.
J'ai rencontré un problème similaire dans lequel un tracé de dispersion de plus de 10 ^ 6 points a entraîné des fichiers PDF de> 100 Mo. Les points ont été dessinés avec une très faible opacité (1%), de sorte que de nombreux points en couches seraient visibles du tout, ce qui entraînerait quelque chose de plus d'une distribution de densité lisse plutôt que d'une parcelle de dispersion. Ainsi, j'étais très réticent à suivre les conseils de Raphael Roth et de pointe les données.
Au lieu de cela, j'ai trouvé utile de créer un script gnuplot séparé pour tracer les données à l'aide du terminal code> Terminal de PnGCAIRO images de résolution suffisante. Cette parcelle n'a aucun axes, pas de tics, pas de bordure ni de marges - juste les données dessinées dans les coordonnées appropriées: p> puis, dans la parcelle réelle (pour laquelle je utilisé le terminal Notez que je trace à l'aide de l'autre (Ticless) Ensemble d'axes pour vous assurer que L'image remplit la zone de graphique sans aucune bordure, de sorte que les tics des axes X1Y1 correspondent à la position réelle des points de la parcelle de diffusion. P> Le PNG a fini que quelques douzaines de kilo-octets, le PDF était un couple de MB. Je pense que le style de tracé J'espère que quelqu'un trouvera quelqu'un cela utile. p> p> cairolatx code>), je trace cette image PNG: p>
rgbalpha code> (similaire à
avec image code>) n'est pas le plus efficace mais c'était assez bon pour moi. P>
Voir aussi tex.stackexchange.com/a/131106/33933 pour des tests connexes de mon côté.
@Christoph vous n'arrivez pas à savoir s'il y a une option comme niveau3 code> pour le terminal
Cairolatx code>? Ou est-ce la valeur par défaut?
Sur une autre note, quelque chose à conscience est le comportement (malheureux) du moteur PDF d'Apple (ainsi que le visualiseur PDF.JS dans Firefox et (éventuellement?) Chrome) pour appliquer une hausse lissée (interpolation) aux pngs intégrés dessinés < Code> avec image code>. Pour être clair, je ne veux pas dire l'interpolation (souhaitée) de PM3D code> mais celui qui ne devrait pas vraiment être là. Cela peut être évité à l'aide de
avec des pixels d'image code> qui redevient les rectangles de traction (entraînant des fichiers volumineux). Voir
gnuplot> Aide Image Pixels Code>
Cairolatx Code> n'a pas une telle option AFAIK, de tels détails sont différés au Caire, alors que epslatex est écrit octet-octet par Gnuplot. Vous voudrez peut-être aussi essayer
définir la terminal Tikz Externimages Code>, n'ai pas essayé cela par moi-même, pourtant. Le problème d'interpolation se produit-il aussi avec PDF? J'étais conscié que des pseudonymes EPS, voir mes commentaires à Stackoverflow.com/q/25736904/2604213
Oui, cela se produit également avec la sortie PDF. Et ce n'est même pas limité à la prévisualisation.
Très belle réponse, c'est une bien meilleure alternative aux données descendant. NB: La résolution apparente de l'image peut être réglée en modifiant la taille du terminal PNGCAIRO, mais en gardant la taille du terminal Cairolatex (ou EPSLATEX) de la même manière.