PDF python plot is blurry - image interpolation?












1















I want to include a python-generated pdf plot into an Overleaf Latex document. However the image appears blurry. A minimal example is below. I generate two plots with imshow, one with interpolation='none', one with interpolation='nearest'. Used versions are Python 2.7.15 and matplotlib 2.2.3.



Using the pdf-viewer evince 3.20.2, imshow_none.pdf has perfectly sharp pixels, while imshow_nearest.pdf shows blurry pixel edges and also pixel sizes may be different. Within the Overleaf-built-in pdf viewer under Firefox 52.5.0, everything is vice versa, with the blurrying being worse. When downloading the compiled pdf from Overleaf, the situation is as when viewing the files under evince. Png screenshots and the overleaf latex file are found below.



I am not an expert on interpolation. Do the pdf viewers use the matplotlib interpolation parameters or their own interpolation method? How comes once the blurry image is imshow_none.pdf, once imshow_nearest.pdf? Is the interpolation method somehow stored in the pdf? In the tags? How to read out this information? Any way to create a file that is sharp both under evince and Overleaf?



Evince: imshow, interpolation='none'
Evince: imshow, interpolation='nearest'Overleaf: imshow, interpolation='nearest'Overleaf: imshow, interpolation='none'



Python code:



import numpy as np
import matplotlib
import matplotlib.pyplot as plt

print sys.version
print matplotlib.__version__

np.random.seed(100)
a = np.random.rand(100,50)

plt.imshow(a, cmap='binary', aspect='auto', interpolation='none', origin='lower')
plt.title('imshow, interpolation: none')
plt.savefig('/home/proxauf/test_pdf_plot_interpolation/imshow_none.pdf')
plt.close()

plt.imshow(a, cmap='binary', aspect='auto', interpolation='nearest', origin='lower')
plt.title('imshow, interpolation: nearest')
plt.savefig('/home/proxauf/test_pdf_plot_interpolation/imshow_nearest.pdf')
plt.close()


Latex code:



documentclass{article}
usepackage[utf8]{inputenc}
usepackage{graphicx}
usepackage{float}

begin{document}

begin{figure}[H]
centering
includegraphics{imshow_none.pdf}
end{figure}

begin{figure}[H]
centering
includegraphics{imshow_nearest.pdf}
end{figure}

end{document}









share|improve this question























  • Relevant: issues/12065.

    – ImportanceOfBeingErnest
    17 hours ago













  • Thanks for the link. It's very useful :)

    – bproxauf
    16 hours ago











  • Is there any way to tell whichever pdf reader to force 'nearest' interpolation? Because the python generated 'nearest' image is still blurry when viewed with Evince.

    – bproxauf
    11 hours ago











  • Not sure, that would depend on the pdf-reader. Maybe asking a question on a site where apple-specific issues are handled?

    – ImportanceOfBeingErnest
    11 hours ago











  • If you use pcolormesh (and ax.set_aspect(1) if needed) I think the image will not be blurry. You may want to rasterize the pcolor (rasterized=True in the list of kwargs).

    – Jody Klymak
    10 hours ago
















1















I want to include a python-generated pdf plot into an Overleaf Latex document. However the image appears blurry. A minimal example is below. I generate two plots with imshow, one with interpolation='none', one with interpolation='nearest'. Used versions are Python 2.7.15 and matplotlib 2.2.3.



Using the pdf-viewer evince 3.20.2, imshow_none.pdf has perfectly sharp pixels, while imshow_nearest.pdf shows blurry pixel edges and also pixel sizes may be different. Within the Overleaf-built-in pdf viewer under Firefox 52.5.0, everything is vice versa, with the blurrying being worse. When downloading the compiled pdf from Overleaf, the situation is as when viewing the files under evince. Png screenshots and the overleaf latex file are found below.



I am not an expert on interpolation. Do the pdf viewers use the matplotlib interpolation parameters or their own interpolation method? How comes once the blurry image is imshow_none.pdf, once imshow_nearest.pdf? Is the interpolation method somehow stored in the pdf? In the tags? How to read out this information? Any way to create a file that is sharp both under evince and Overleaf?



Evince: imshow, interpolation='none'
Evince: imshow, interpolation='nearest'Overleaf: imshow, interpolation='nearest'Overleaf: imshow, interpolation='none'



Python code:



import numpy as np
import matplotlib
import matplotlib.pyplot as plt

print sys.version
print matplotlib.__version__

np.random.seed(100)
a = np.random.rand(100,50)

plt.imshow(a, cmap='binary', aspect='auto', interpolation='none', origin='lower')
plt.title('imshow, interpolation: none')
plt.savefig('/home/proxauf/test_pdf_plot_interpolation/imshow_none.pdf')
plt.close()

plt.imshow(a, cmap='binary', aspect='auto', interpolation='nearest', origin='lower')
plt.title('imshow, interpolation: nearest')
plt.savefig('/home/proxauf/test_pdf_plot_interpolation/imshow_nearest.pdf')
plt.close()


Latex code:



documentclass{article}
usepackage[utf8]{inputenc}
usepackage{graphicx}
usepackage{float}

begin{document}

begin{figure}[H]
centering
includegraphics{imshow_none.pdf}
end{figure}

begin{figure}[H]
centering
includegraphics{imshow_nearest.pdf}
end{figure}

end{document}









share|improve this question























  • Relevant: issues/12065.

    – ImportanceOfBeingErnest
    17 hours ago













  • Thanks for the link. It's very useful :)

    – bproxauf
    16 hours ago











  • Is there any way to tell whichever pdf reader to force 'nearest' interpolation? Because the python generated 'nearest' image is still blurry when viewed with Evince.

    – bproxauf
    11 hours ago











  • Not sure, that would depend on the pdf-reader. Maybe asking a question on a site where apple-specific issues are handled?

    – ImportanceOfBeingErnest
    11 hours ago











  • If you use pcolormesh (and ax.set_aspect(1) if needed) I think the image will not be blurry. You may want to rasterize the pcolor (rasterized=True in the list of kwargs).

    – Jody Klymak
    10 hours ago














1












1








1








I want to include a python-generated pdf plot into an Overleaf Latex document. However the image appears blurry. A minimal example is below. I generate two plots with imshow, one with interpolation='none', one with interpolation='nearest'. Used versions are Python 2.7.15 and matplotlib 2.2.3.



Using the pdf-viewer evince 3.20.2, imshow_none.pdf has perfectly sharp pixels, while imshow_nearest.pdf shows blurry pixel edges and also pixel sizes may be different. Within the Overleaf-built-in pdf viewer under Firefox 52.5.0, everything is vice versa, with the blurrying being worse. When downloading the compiled pdf from Overleaf, the situation is as when viewing the files under evince. Png screenshots and the overleaf latex file are found below.



I am not an expert on interpolation. Do the pdf viewers use the matplotlib interpolation parameters or their own interpolation method? How comes once the blurry image is imshow_none.pdf, once imshow_nearest.pdf? Is the interpolation method somehow stored in the pdf? In the tags? How to read out this information? Any way to create a file that is sharp both under evince and Overleaf?



Evince: imshow, interpolation='none'
Evince: imshow, interpolation='nearest'Overleaf: imshow, interpolation='nearest'Overleaf: imshow, interpolation='none'



Python code:



import numpy as np
import matplotlib
import matplotlib.pyplot as plt

print sys.version
print matplotlib.__version__

np.random.seed(100)
a = np.random.rand(100,50)

plt.imshow(a, cmap='binary', aspect='auto', interpolation='none', origin='lower')
plt.title('imshow, interpolation: none')
plt.savefig('/home/proxauf/test_pdf_plot_interpolation/imshow_none.pdf')
plt.close()

plt.imshow(a, cmap='binary', aspect='auto', interpolation='nearest', origin='lower')
plt.title('imshow, interpolation: nearest')
plt.savefig('/home/proxauf/test_pdf_plot_interpolation/imshow_nearest.pdf')
plt.close()


Latex code:



documentclass{article}
usepackage[utf8]{inputenc}
usepackage{graphicx}
usepackage{float}

begin{document}

begin{figure}[H]
centering
includegraphics{imshow_none.pdf}
end{figure}

begin{figure}[H]
centering
includegraphics{imshow_nearest.pdf}
end{figure}

end{document}









share|improve this question














I want to include a python-generated pdf plot into an Overleaf Latex document. However the image appears blurry. A minimal example is below. I generate two plots with imshow, one with interpolation='none', one with interpolation='nearest'. Used versions are Python 2.7.15 and matplotlib 2.2.3.



Using the pdf-viewer evince 3.20.2, imshow_none.pdf has perfectly sharp pixels, while imshow_nearest.pdf shows blurry pixel edges and also pixel sizes may be different. Within the Overleaf-built-in pdf viewer under Firefox 52.5.0, everything is vice versa, with the blurrying being worse. When downloading the compiled pdf from Overleaf, the situation is as when viewing the files under evince. Png screenshots and the overleaf latex file are found below.



I am not an expert on interpolation. Do the pdf viewers use the matplotlib interpolation parameters or their own interpolation method? How comes once the blurry image is imshow_none.pdf, once imshow_nearest.pdf? Is the interpolation method somehow stored in the pdf? In the tags? How to read out this information? Any way to create a file that is sharp both under evince and Overleaf?



Evince: imshow, interpolation='none'
Evince: imshow, interpolation='nearest'Overleaf: imshow, interpolation='nearest'Overleaf: imshow, interpolation='none'



Python code:



import numpy as np
import matplotlib
import matplotlib.pyplot as plt

print sys.version
print matplotlib.__version__

np.random.seed(100)
a = np.random.rand(100,50)

plt.imshow(a, cmap='binary', aspect='auto', interpolation='none', origin='lower')
plt.title('imshow, interpolation: none')
plt.savefig('/home/proxauf/test_pdf_plot_interpolation/imshow_none.pdf')
plt.close()

plt.imshow(a, cmap='binary', aspect='auto', interpolation='nearest', origin='lower')
plt.title('imshow, interpolation: nearest')
plt.savefig('/home/proxauf/test_pdf_plot_interpolation/imshow_nearest.pdf')
plt.close()


Latex code:



documentclass{article}
usepackage[utf8]{inputenc}
usepackage{graphicx}
usepackage{float}

begin{document}

begin{figure}[H]
centering
includegraphics{imshow_none.pdf}
end{figure}

begin{figure}[H]
centering
includegraphics{imshow_nearest.pdf}
end{figure}

end{document}






python pdf matplotlib latex interpolation






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 18 hours ago









bproxaufbproxauf

1418




1418













  • Relevant: issues/12065.

    – ImportanceOfBeingErnest
    17 hours ago













  • Thanks for the link. It's very useful :)

    – bproxauf
    16 hours ago











  • Is there any way to tell whichever pdf reader to force 'nearest' interpolation? Because the python generated 'nearest' image is still blurry when viewed with Evince.

    – bproxauf
    11 hours ago











  • Not sure, that would depend on the pdf-reader. Maybe asking a question on a site where apple-specific issues are handled?

    – ImportanceOfBeingErnest
    11 hours ago











  • If you use pcolormesh (and ax.set_aspect(1) if needed) I think the image will not be blurry. You may want to rasterize the pcolor (rasterized=True in the list of kwargs).

    – Jody Klymak
    10 hours ago



















  • Relevant: issues/12065.

    – ImportanceOfBeingErnest
    17 hours ago













  • Thanks for the link. It's very useful :)

    – bproxauf
    16 hours ago











  • Is there any way to tell whichever pdf reader to force 'nearest' interpolation? Because the python generated 'nearest' image is still blurry when viewed with Evince.

    – bproxauf
    11 hours ago











  • Not sure, that would depend on the pdf-reader. Maybe asking a question on a site where apple-specific issues are handled?

    – ImportanceOfBeingErnest
    11 hours ago











  • If you use pcolormesh (and ax.set_aspect(1) if needed) I think the image will not be blurry. You may want to rasterize the pcolor (rasterized=True in the list of kwargs).

    – Jody Klymak
    10 hours ago

















Relevant: issues/12065.

– ImportanceOfBeingErnest
17 hours ago







Relevant: issues/12065.

– ImportanceOfBeingErnest
17 hours ago















Thanks for the link. It's very useful :)

– bproxauf
16 hours ago





Thanks for the link. It's very useful :)

– bproxauf
16 hours ago













Is there any way to tell whichever pdf reader to force 'nearest' interpolation? Because the python generated 'nearest' image is still blurry when viewed with Evince.

– bproxauf
11 hours ago





Is there any way to tell whichever pdf reader to force 'nearest' interpolation? Because the python generated 'nearest' image is still blurry when viewed with Evince.

– bproxauf
11 hours ago













Not sure, that would depend on the pdf-reader. Maybe asking a question on a site where apple-specific issues are handled?

– ImportanceOfBeingErnest
11 hours ago





Not sure, that would depend on the pdf-reader. Maybe asking a question on a site where apple-specific issues are handled?

– ImportanceOfBeingErnest
11 hours ago













If you use pcolormesh (and ax.set_aspect(1) if needed) I think the image will not be blurry. You may want to rasterize the pcolor (rasterized=True in the list of kwargs).

– Jody Klymak
10 hours ago





If you use pcolormesh (and ax.set_aspect(1) if needed) I think the image will not be blurry. You may want to rasterize the pcolor (rasterized=True in the list of kwargs).

– Jody Klymak
10 hours ago












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54250441%2fpdf-python-plot-is-blurry-image-interpolation%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54250441%2fpdf-python-plot-is-blurry-image-interpolation%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Liquibase includeAll doesn't find base path

How to use setInterval in EJS file?

Petrus Granier-Deferre