How to increase the size of a png picture for the heatmap of the correlation? - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: How to increase the size of a png picture for the heatmap of the correlation? (/thread-35157.html) |
How to increase the size of a png picture for the heatmap of the correlation? - lulu43366 - Oct-05-2021 Good evening to the community I am working with the file "Santé3". I would like to create and download a png picture with a good definition for my heatmap of correlation where we can see the entire heatmap of the correlation. I tried some codes but I have still words which are not showed. from pandas import read_csv import matplotlib.pyplot as plt import seaborn as sns import numpy as np import numpy.ma as ma import pandas as pd dataset = pd.read_csv('Santé3.csv', sep= ';', encoding='latin-1', index_col=0) dataset.drop(['Dynaverage'], axis=1, inplace=True) corr = dataset.corr() plt.figure(figsize=(200,30)) plt.subplots(figsize=(15,8)) sns.heatmap(corr, cmap='coolwarm', vmin=-1, vmax=1, annot=True, mask=mask) plt.savefig("correlation.png")Thank you for your answer. RE: How to increase the size of a png picture for the heatmap of the correlation? - deanhystad - Oct-05-2021 Have you tried setting dpi in the savefig call or saving to a svg file? RE: How to increase the size of a png picture for the heatmap of the correlation? - lulu43366 - Oct-05-2021 Dear deanhystad, I think dpi is related to the quality of the image, not the size. from pandas import read_csv import matplotlib.pyplot as plt import seaborn as sns import numpy as np import numpy.ma as ma import pandas as pd dataset = pd.read_csv('Santé3.csv', sep= ';', encoding='latin-1', index_col=0) dataset.drop(['Dynaverage'], axis=1, inplace=True) corr = dataset.corr() plt.figure(figsize=(200,30)) plt.subplots(figsize=(15,8)) sns.heatmap(corr, cmap='coolwarm', vmin=-1, vmax=1, annot=True, mask=mask) plt.savefig("correlation.png", dpi=400) RE: How to increase the size of a png picture for the heatmap of the correlation? - deanhystad - Oct-05-2021 Did you try it? If I capture a 3x3 plot at 100dpy the image is 300x300 pixels. At the 1000dpi the same image is 3000x3000 pixels RE: How to increase the size of a png picture for the heatmap of the correlation? - lulu43366 - Oct-05-2021 Dear deanhystad, it's not working with svg file. from pandas import read_csv import matplotlib.pyplot as plt import seaborn as sns import numpy as np import numpy.ma as ma import pandas as pd dataset = pd.read_csv('Santé3.csv', sep= ';', encoding='latin-1', index_col=0) dataset.drop(['Dynaverage'], axis=1, inplace=True) corr = dataset.corr() plt.figure(figsize=(200,30)) plt.subplots(figsize=(15,8)) sns.heatmap(corr, cmap='coolwarm', vmin=-1, vmax=1, annot=True, mask=mask) plt.savefig("correlation.svg", dpi=400) RE: How to increase the size of a png picture for the heatmap of the correlation? - lulu43366 - Oct-05-2021 (Oct-05-2021, 07:06 PM)deanhystad Wrote: Did you try it? If I capture a 3x3 plot at 100dpy the image is 300x300 pixels. At the 1000dpi the same image is 3000x3000 pixels With a DPI of 1000, you can see that it doesn't change. I can't see the labels. from pandas import read_csv import matplotlib.pyplot as plt import seaborn as sns import numpy as np import numpy.ma as ma import pandas as pd dataset = pd.read_csv('Santé3.csv', sep= ';', encoding='latin-1', index_col=0) dataset.drop(['Dynaverage'], axis=1, inplace=True) corr = dataset.corr() plt.figure(figsize=(200,30)) plt.subplots(figsize=(15,8)) sns.heatmap(corr, cmap='coolwarm', vmin=-1, vmax=1, annot=True, mask=mask) plt.savefig("correlation.png", dpi=1000) RE: How to increase the size of a png picture for the heatmap of the correlation? - deanhystad - Oct-05-2021 It works as I mentioned. When capturing a pyplot plot (I don't have seaborn) my 100dpi plot was 300x300 pixels and the 1000dpi plot was 3000x3000 pixels when opened in Paint. This must be a seaborn thing. I found this when looking for resizing a heatmap. Looks like the kitchen sink approach. https://stackoverflow.com/questions/43335973/how-to-generate-high-resolution-heatmap-using-seaborn plt.figure(figsize=(6, 6), dpi = 600) # I would go higher than this sns.heatmap(corr, cmap="Blues", annot=True, annot_kws={"size": 8}) #Make labels and annotation bigger too plt.tick_params(axis = 'x', labelsize = 12) # x font label size plt.tick_params(axis = 'y', labelsize = 12) # y font label size RE: How to increase the size of a png picture for the heatmap of the correlation? - lulu43366 - Oct-05-2021 Thank you so much deanhystad. I can see the labels with a good definition with this code. from pandas import read_csv import matplotlib.pyplot as plt import numpy as np import numpy.ma as ma import pandas as pd dataset = pd.read_csv('Santé3.csv', sep= ';', encoding='latin-1', index_col=0) dataset.drop(['Dynaverage'], axis=1, inplace=True) corr = dataset.corr() plt.figure(figsize=(6,6), dpi=1000) plt.subplots(figsize=(15,8)) sns.heatmap(corr, cmap='coolwarm', vmin=-1, vmax=1, annot=True, mask=mask, annot_kws={"size":8}) plt.tick_params(axis = 'y', labelsize = 5) plt.tick_params(axis = 'x', labelsize = 5) plt.savefig("correlation.png", dpi=2000) RE: How to increase the size of a png picture for the heatmap of the correlation? - deanhystad - Oct-05-2021 I bet it is the dpi setting in plt.figure(). You have to set the dpi before making the heatmap so seaborn can use the higher dpi setting. Why are you calling plt.figure and plt.subplots? When I run your code it shows two plot windows; an empty 6x6 window and a 15x8 window that contains a plot (mine is a line plot). You can remove either and you will still get a png image file. From what you've said in earlier posts I don't think the dpi setting in plt.savefig() is doing anything. Seaborne must be drawing a raster image, and changing the dpi is not going to increase the resolution of the png file. Setting the dpi in plt.savefig worked for me because the plot I was saving was vector graphics, and vector graphics rescale very well. RE: How to increase the size of a png picture for the heatmap of the correlation? - deanhystad - Oct-06-2021 A few questions. In post #5 you say "it's not working with svg file." Does the program crash? Doesn't it generate the file? Can't you use the file? How is it "not working"? In post #6 you post an image and say "I can't see the labels". Which labels? When I look at the attached image I can see axis labels and annotations. And the labels and annotations look good. Where are there supposed to be labels that I cannot see? |