簡體   English   中英

以非常高的質量在 Python 中保存圖像

[英]Saving images in Python at a very high quality

如何以非常高的質量保存 Python 圖?

也就是說,當我繼續放大保存在 PDF 文件中的對象時,為什么沒有任何模糊?

另外,保存它的最佳模式是什么?

png , eps ? 還是別的? 我不能做pdf ,因為有一個隱藏的數字會與Latexmk編譯Latexmk

如果您正在使用Matplotlib並試圖在LaTeX文檔中獲得好的數字,請另存為EPS 具體來說,在運行命令繪制圖像后嘗試這樣的事情:

plt.savefig('destination_path.eps', format='eps')

我發現 EPS 文件效果最好,而dpi參數才是真正讓它們在文檔中看起來不錯的原因。

要在保存之前指定圖形的方向,只需在plt.savefig調用之前調用以下plt.savefig ,但在創建繪圖之后(假設您已使用名稱為ax的軸進行繪圖):

ax.view_init(elev=elevation_angle, azim=azimuthal_angle)

其中elevation_angle是一個數字(以度為單位),指定極角(從垂直 z 軸向下),而azimuthal_angle指定方位角(圍繞 z 軸)。

我發現通過首先繪制圖像然后旋轉它並觀察角度的當前值出現在實際繪圖下方的窗口底部是最容易確定這些值的。 請記住,默認情況下會顯示 x、y、z 位置,但是當您開始單擊 + 拖動 + 旋轉圖像時,它們會替換為兩個角度。

只是為了添加我的結果,也使用 Matplotlib。

.eps 使我所有的文本都加粗並刪除了透明度。 .svg 為我提供了實際上看起來像我的圖表的高分辨率圖片。

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
# Do the plot code
fig.savefig('myimage.svg', format='svg', dpi=1200)

我使用了 1200 dpi,因為很多科學期刊需要 1200 / 600 / 300 dpi 的圖像,具體取決於圖像的內容。 GIMPInkscape 中轉換為所需的 dpi 和格式。

顯然 dpi 並不重要,因為 .svg 是矢量圖形並且具有“無限分辨率”。

好的,我發現spencerlyon2 的答案有效。 但是,如果有人發現自己不知道如何處理那一行,我必須這樣做:

beingsaved = plt.figure()

# Some scatter plots
plt.scatter(X_1_x, X_1_y)
plt.scatter(X_2_x, X_2_y)

beingsaved.savefig('destination_path.eps', format='eps', dpi=1000)

如果您使用的是seaborn圖,而不是 Matplotlib,您可以像這樣保存 .png 圖像:

假設您有一個matrix對象( PandasNumPy ),並且您想要獲取熱圖:

import seaborn as sb

image = sb.heatmap(matrix)   # This gets you the heatmap
image.figure.savefig("C:/Your/Path/ ... /your_image.png")   # This saves it

此代碼與最新版本的 Seaborn 兼容。 Stack Overflow 周圍的其他代碼僅適用於以前的版本。

我喜歡的另一種方式是這樣。 我設置下一個圖像的大小如下:

plt.subplots(figsize=(15,15))

然后我在控制台中繪制輸出,我可以從中復制粘貼到我想要的位置。 (由於 Seaborn 是建立在 Matplotlib 之上的,所以不會有任何問題。)

您可以使用以下方法將圖形保存為 1920x1080(或 1080p):

fig = plt.figure(figsize=(19.20,10.80))

你也可以走得更高或更低。 上述解決方案適用於打印,但現在您希望創建的圖像進入 PNG/JPG 或以寬屏幕格式顯示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM