Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem with Font awesome on VsCode #33

Open
MalikQasimAli opened this issue Jan 20, 2023 · 8 comments
Open

Problem with Font awesome on VsCode #33

MalikQasimAli opened this issue Jan 20, 2023 · 8 comments

Comments

@MalikQasimAli
Copy link

I have a strange problem with the PyWaffle library. I am running the examples and everything is working fine except the examples with fontawesome.

I am running the following code and the result shows distorted picture.

dict_users = {'Regular': 62, 'New': 20, 'Churned': 16, 'Suspended': 2}
df = pd.Series(dict_users)
colors_list = ['slateblue', 'limegreen', 'red', 'grey']
colors = {df.index[i]:colors_list[i] for i in range(len(df))}
fig = plt.figure(FigureClass=Waffle,
                 figsize=(10,5),
                 values=dict_users,
                 rows=10,
                 colors=list(colors.values()),
                 icons=['user','user-plus', 'user-minus', 'user-clock'],
                 font_size=15,
                 icon_legend=True,
                 legend={'bbox_to_anchor': (1.55, 1), 'fontsize': 15, 'frameon': False})              
plt.title('User dynamics in July 2021', fontsize=20)
plt.show()

I am also having the the following warning message : IPython\core\pylabtools.py:151: UserWarning: Tight layout not applied. The bottom and top margins cannot be made large enough to accommodate all axes decorations.
fig.canvas.print_figure(bytes_io, **kw)

I also tried to use the command fig.set_tight_layout(False)
but the warning message did not go away.

output

@gyli
Copy link
Owner

gyli commented Jan 26, 2023

I am not able to reproduce this issue, and I got following result

Screenshot 2023-01-25 at 10 06 10 PM

The libraries I am testing:
fontawesomefree 6.2.1
matplotlib 3.6.3
pywaffle 1.1.0

Could you share more details of the library versions, and how it was executed?

@Langhammer
Copy link

Langhammer commented Feb 20, 2023

I have the same problem, I had installed
matplotlib 3.6.3
fontawesomefree 6.3.0
pywaffle 1.1.0

but I tried it also with fontawesomefree 6.2.1. For changing the version, I followed the instructions on the website.

I executed this in a Jupyter Notebook in VSCode with python 3.10.0.
Plotting characters works fine, the problem only occurs when plotting icons.

@gyli
Copy link
Owner

gyli commented Feb 21, 2023

Hi @MalikQasimAli and @Langhammer , could you share more info other than versions of matplotlib, fontawesomefree and pywaffle, like VS code version and platform?

I am still not able to reproduce this issue with versions same as Langhammer mentioned above. Python 3.10.0, matplotlib 3.6.3, fontawesomefree 6.3.0, and pywaffle 1.1.0 in VS Code notebook.
Screenshot 2023-02-20 at 9 14 34 PM

@jhncls
Copy link

jhncls commented Feb 28, 2023

I can reproduce the problem on my machine with matplotlib 3.5.3, while with matplotlib 3.5.2 it works well.
Python 3.7.4, Windows 10 with PyCharm.

The issue can be simplified to the following, where the icon is rendered much too large.

from matplotlib import pyplot as plt
import matplotlib.font_manager as fm

prop = fm.FontProperties(size=20)
prop.set_file('C:\\Projects\\test\\venv\\lib\\site-packages\\fontawesomefree\\static\\fontawesomefree\\otfs\\Font Awesome 6 Free-Solid-900.otf')
plt.text(0.5, 0.5, 'a', fontproperties=prop)
plt.show()

image

Setting the fontsize to something small doesn't really help; it renders some garbled lines. Here is what happens with size 1:
image

@Rustic-Citrus
Copy link

Rustic-Citrus commented Feb 28, 2023

I am having exactly the same problem. I asked a question on StackOverflow and another user redirected me here.

Below is some information about the modules I am using:

Name: pywaffle
Version: 1.1.0
Summary: PyWaffle is an open source, MIT-licensed Python package for plotting waffle charts.
Home-page: https://github.com/gyli/PyWaffle
Author: Guangyang Li
Author-email: mail@guangyangli.com
License: MIT
Location: C:\Users\harry\AppData\Roaming\Python\Python311\site-packages
Requires: fontawesomefree, matplotlib
Required-by:
---
Name: fontawesomefree
Version: 6.1.1
Summary: Font Awesome Free
Home-page: https://github.com/FortAwesome/Font-Awesome
Author: Font Awesome
Author-email: hello@fontawesome.com
License: UNKNOWN
Location: C:\Users\harry\AppData\Roaming\Python\Python311\site-packages
Requires:
Required-by: pywaffle
---
Name: matplotlib
Version: 3.7.0
Summary: Python plotting package
Home-page: https://matplotlib.org
Author: John D. Hunter, Michael Droettboom
Author-email: matplotlib-users@python.org
License: PSF
Location: C:\Users\harry\AppData\Roaming\Python\Python311\site-packages
Requires: contourpy, cycler, fonttools, kiwisolver, numpy, packaging, pillow, pyparsing, python-dateutil
Required-by: ipympl, pywaffle

I attempted to uninstall the matplotlib-3.7.0 and reinstall matplotlib-3.5.2 to see if it would work for me as well, but it raised a legacy-install-failure (see the log below for details).

ErrorLog_2023-02-28.txt

So, does this mean that there is a compatibility issue between versions of matplotlib after 3.5.2 and pywaffle-1.1.0?

EDIT: For clarification, it does not make a difference whether I run a Python script through PowerShell, run a JupyterNotebook in the browser or a JupyterNotebook through Visual Studio Code; I get the same problem.

@Langhammer
Copy link

Langhammer commented Feb 28, 2023

I run a jupyter notebook in vscode 1.75.1. Interestingly, it works on binder with the same requirements.txt.
this time I am using matplotlib 3.7.0.
A small example:

from matplotlib import pyplot as plt
from pywaffle import Waffle

fig = plt.figure(
    FigureClass=Waffle,
    rows=1,
    icons='person',
    font_size=3,
    values={'a':1, 'b':2, 'c':3}
)

grafik

@gyli
Copy link
Owner

gyli commented Mar 3, 2023

Based on @jhncls's finding, we can basically narrow root cause down to rendering font awesome in matplotlib. I also guess that it only happens on Windows, since that is all the cases reported above, and I am not able to reproduce it with 2 mac that I own.

His testing codes

from matplotlib import pyplot as plt
import matplotlib.font_manager as fm

prop = fm.FontProperties(size=20)
prop.set_file('C:\\Projects\\test\\venv\\lib\\site-packages\\fontawesomefree\\static\\fontawesomefree\\otfs\\Font Awesome 6 Free-Solid-900.otf')
plt.text(0.5, 0.5, 'a', fontproperties=prop)
plt.show()

outputs the correct result on my end. So could you submit this issue on matplotlib repo?

cc @Langhammer @MalikQasimAli @Rustic-Citrus

@Langhammer
Copy link

@gyli Yes, it seems to be a problem with matplotlib on windows.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants