Issue
I am producing some plots using Matplotlib
(v 3.2.2) and the mplhep
tu embed the style used by my collaboration. I noticed that, if I save plots with .png format the output is normal, but if I save them in .pdf I got this message:
'texgyreheros-regular.otf' can not be subsetted into a Type 3 font. The entire font will be embedded in the output.
However it seems that the output plot is always ok. Do you know how to "correct" this or at least hide this sort of warning message? Thanks!
The function I am using to plot is the following:
def PlotVarVsTime( dataframe, title, channel ):
"""
Function used to plot each row of the dataframe and save it.
Args:
dataframe ( dataframe ): the interested dataframe.
title ( string ): the variable name for plot title.
channel ( string ): the channel name.
"""
# Filling a plot, for each dataframe row, with points
print( "Making plots...", end = "\n" )
for row_index in dataframe.index:
# Filling single plot for the correspinding row
columns_container = np.array( [] )
fig, ax = plt.subplots()
for column in dataframe.loc[ :, dataframe.columns != "Channel" ]:
x = Decimal( column )
y = dataframe[ column ][ row_index ]
ax.scatter( x, y, c = "blue" )
columns_container = np.append( columns_container, column )
# Plot settings
time_start = ft.IntToTime( int( columns_container[ 0 ] ) )
time_end = ft.IntToTime( int( columns_container[ -1 ] ) )
ax.set_title( dataframe[ "Channel" ][ row_index ] + "\n" + "(" + time_start + " - " + time_end + ")", fontsize = 15 )
ax.set_xlabel( "Time (yy/mm/dd/h/m/s)", fontsize = 15 )
ax.set_ylabel( title, fontsize = 15 )
ax.set_xlim( columns_container[ 0 ], columns_container[ -1 ] )
ax.tick_params( axis = 'both', labelsize = 13 )
ax.xaxis.offsetText.set_fontsize( 15 )
# Saving plot
output_name = ft.NameToStr( dataframe[ "Channel" ][ row_index ] )
print( "Doing " + output_name + " plots..." )
fig.canvas.start_event_loop( sys.float_info.min ) # Workaround for Exception in Tkinter callback
plt.savefig( "img/" + channel + "/" + title + "/pdf/" + output_name + ".pdf", bbox_inches = "tight", dpi = 100 );
fig.canvas.start_event_loop( sys.float_info.min ) # Workaround for Exception in Tkinter callback
plt.savefig( "img/" + channel + "/" + title + "/png/" + output_name + ".png", bbox_inches = "tight", dpi = 100 )
plt.clf()
plt.close()
columns_container = np.array( [] )
print()
print( "Plots have been saved in:", end = "\n" )
print( "- PDF:", ft.Colored( "img/" + channel + "/" + title + "/pdf/", cl.OutColor.green ), end = "\n" )
print( "- PNG:", ft.Colored( "img/" + channel + "/" + title + "/png/", cl.OutColor.green ), end = "\n" )
EDIT 1
I am using the option:
plt.style.use( hep.style.ATLAS )
from mplhep library.
Solution
I finally solved this issue. The problem was due to the usage of an older version of Matplotlib. Once I've updated the module the problem disappeared.
Answered By - Gianluca Bianco
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.