- If you need any help or have any suggestion/feedback ping me here.
-
soccerplots
package now comes with a utility function that can help users to add and modify text without the need of usingtext()
method. -
plot_text()
is the method which can be used to add and modify text as per the users need. -
Here, we will cover the documentation of
plot_text()
method with some examples to show how one can add and modify text.
soccerplots.utils.plot_text(x, y, text, text_dict, ax, color_rest='k', align="left", fontsize=None, **kwargs)
No. | Parameter | About Parameter |
---|---|---|
1. | x | (float) x-coodrinate value for text. |
2. | y | (float) y-coodrinate value for text. |
3. | text | (str) the text that will be added. |
4. | text_dict | (dict) contains words that the user wants to format. |
5. | ax | (ax.Axes) axis object. |
6. | color_rest | (str, optional) color for the text. Defaults to 'k'. |
7. | align | (str, optional) alignment of boxes. Defaults to "left". |
8. | fontsize | (float, optional) size of the text. Default to None. |
9. | **kwargs(optional) | all other keyword arguments are passed on to matplotlib.axes.Axes.text. |
No. | Returns | About |
---|---|---|
1. | ax | (axes.Axes)axis object |
-
Here we will look into some of the examples that can help in adding text using
soccerplots.utils.plot_text()
method. -
Examples Content:
-
Here, we will add a text saying
Hello World!!! This is Python Programming
and will colorPython
withgreen
color andProgramming
withcrimson
color. -
Code Snippet:
import matplotlib.pyplot as plt
from soccerplots.utils import plot_text
## text to be plotted
text = "Hello World!!! This is Python Programming"
## addition info about text
text_dict = dict(
Python = dict(color="green"), ## Python color is "green"
Programming = dict(color="crimson") ## Programming color is "crimson"
)
## create subplot
fig, ax = plt.subplots()
## plot the text
ax = plot_text(
x = 0.5, y = 0.5,
text = text, text_dict = text_dict, ax = ax
)
- Output:
-
We will add a text saying
Hello World!!! Matplotlib is Love
and will additalic
fontstyle toHello World!!!
and colorMatplotlib
andLove
. -
Code Snippet:
import matplotlib.pyplot as plt
from soccerplots.utils import plot_text
## text to be plotted
text = "Hello World!!! Matplotlib is Love"
## addition info about text
text_dict = {
"Hello": dict(fontstyle="italic"), ## Hello is italic
"World!!!": dict(fontstyle="italic"), ## World!!! is italic
"Matplotlib": dict(color="#897941"), ## color to Matplotlib
"Love": dict(color="crimson") ## color to Love
}
## create subplot
fig, ax = plt.subplots()
## plot the text
ax = plot_text(
x = 0.5, y = 0.5,
text = text, text_dict = text_dict, ax = ax
)
- Output:
-
There is an alternative way of doing this.
-
Since we can see that in the above text
Hello
andWorld!!!
are coming together. So without passing them as multiple keys we can pass them as a single key, for that we have to change thetext
a bit. -
The
text
will now look like:Hello_World!!! Matplotlib is Love
and then we will passignore=True
to the dictionary for theHello_World!!!
key intext_dict
.(see code-snippet below) -
_
(underscore) will tell the method that we are combining these two words and the modification will come for both these words,ignore=True
will tell the method to ignore the_
sign in the text and replace it with -
Code Snippet:
import matplotlib.pyplot as plt
from soccerplots.utils import plot_text
## text to be plotted
text = "Hello_World!!! Matplotlib is Love" ## _ has been added
## addition info about text
text_dict = {
"Hello_World!!!": dict(fontstyle="italic", ignore=True), ## ignore_last has been set to True
"Matplotlib": dict(color="#897941"), ## color to Matplotlib
"Love": dict(color="crimson") ## color to Love
}
## create subplot
fig, ax = plt.subplots()
## plot the text
ax = plot_text(
x = 0.5, y = 0.5,
text = text, text_dict = text_dict, ax = ax
)
- Output:
-
Our text here is the same as above
Hello World!!! Matplotlib is Love
and we will colorHello World!!!
also making it italic. -
Again, we will change the text a bit adding
_
betweenHello
andWorld!!!
and will passignore=True
and some color-value to the dictionary. -
Code Snippet:
import matplotlib.pyplot as plt
from soccerplots.utils import plot_text
## text to be plotted
text = "Hello_World!!! Matplotlib is Love" ## added underscore
## addition info about text
text_dict = {
"Hello_World!!!": dict(fontstyle="italic", color="#3524A6", ignore=True), ## added color
"Matplotlib": dict(color="#897941"), ## color to Matplotlib
"Love": dict(color="crimson") ## color to Love
}
## create subplot
fig, ax = plt.subplots()
## plot the text
ax = plot_text(
x = 0.5, y = 0.5,
text = text, text_dict = text_dict, ax = ax
)
- Output:
-
The text is:
Hello World!!! Matplotlib is Love
. -
Here we will add
fontweight="bold"
forMatplotlib
andLove
andHello World!!!
will remain italic and will add some color too. -
Code Snippet:
import matplotlib.pyplot as plt
from soccerplots.utils import plot_text
## text to be plotted
text = "Hello_World!!! Matplotlib is Love"
## addition info about text
text_dict = {
"Hello_World!!!": dict(fontstyle="italic", color="#3524A6", ignore=True), ## italic and color
"Matplotlib": dict(color="#897941", fontweight="bold"), ## bold and color
"Love": dict(color="crimson", fontweight="bold") ## bold and color
}
## create subplot
fig, ax = plt.subplots()
## plot the text
ax = plot_text(
x = 0.5, y = 0.5,
text = text, text_dict = text_dict, ax = ax
)
- Output:
-
Here we will see how to change the size of words in a text.
-
Our text is
This word is small and this word is large
and we will add color toword
and make itbold
and changefontsize
forsmall
andlarge
. -
Code Snippet:
import matplotlib.pyplot as plt
from soccerplots.utils import plot_text
## text to be plotted
text = "This word is small and this word is large"
## addition info about text
text_dict = {
"word": dict(fontweight="bold", color="#897941"), ## bold and color
"small": dict(fontsize="small"), ## fontsize is "small", can pass a floating value as well
"large": dict(fontsize="large") ## fontsize is "large", can pass a floating value as well
}
## create subplot
fig, ax = plt.subplots()
## plot the text
ax = plot_text(
x = 0.5, y = 0.5,
text = text, text_dict = text_dict, ax = ax
)
- Output:
-
Our text here is:
Computer Programming is just awesome
-
And we will increase the fontsize for our whole string also adding color to
awesome
and makingComputer Programming
italic. -
Code Snippet:
import matplotlib.pyplot as plt
from soccerplots.utils import plot_text
## text to be plotted
text = "Computer_programming is just awesome"
## addition info about text
text_dict = {
"awesome": dict(fontweight="bold", color="#897941"), ## bold with color
"Computer_programming": dict(fontstyle="italic", ignore=True) ## italic
}
## create subplot
fig, ax = plt.subplots()
## plot the text
ax = plot_text(
x = 0.5, y = 0.5,
text = text, text_dict = text_dict, ax = ax, fontsize=15 ## increased fontsize
)
- Output:
-
We will now see how to change fontstyle, the text is the same as above.
-
Code Snippet:
import matplotlib.pyplot as plt
from soccerplots.utils import plot_text
## text to be plotted
text = "Computer_programming is just awesome"
## addition info about text
text_dict = {
"awesome": dict(fontweight="bold", color="#897941"),
"Computer_programming": dict(fontstyle="italic", ignore=True)
}
## create subplot
fig, ax = plt.subplots()
## plot the text
ax = plot_text(
x = 0.5, y = 0.5,
text = text, text_dict = text_dict, ax = ax, fontfamily="Purisa" ## added fontstyle
)
- Output:
- Here we will add two lines:
This is Line Number 01
And This is Line Number 02
-
We will add color, italic fontstyle and bold fontweight to
Number 01
, and will add color, oblique fontstyle and roman fontweight toNumber 02
. -
Code Snippet:
import matplotlib.pyplot as plt
from soccerplots.utils import plot_text
## text to be plotted
text = "This is Line Number_01\nAnd This is Line Number_02"
## addition info about text
text_dict = {
"Number_01": dict(color="crimson", fontstyle="italic", fontweight="bold", ignore=True), ## added modifications
"Number_02": dict(color="#897941", fontstyle="oblique", fontweight="roman", ignore=True) ## added modifications
}
## create subplot
fig, ax = plt.subplots()
## plot the text
ax = plot_text(
x = 0.5, y = 0.5,
text = text, text_dict = text_dict, ax = ax
)
- Output:
- Note: You can pass
text
for multiple line strings like this as well:
text = """This is Line Number_01
And This is Line Number_02"""
-
Let's say we have
Corners, Crosses, Freekicks and Passes
as our text and we want to colorCorners
andCrosses
but we don't want to color the,
that are included in those words, what we will do is pass another argumentignore_last=True
, this will ignore the last character of a word and make the required changes. -
Code Snippet:
import matplotlib.pyplot as plt
from soccerplots.utils import plot_text
## text to be plotted
text = """How are the best creators in Europe's top 5 league making chances
through Corners, Crosses, Indirect_Freekicks and Open_Play_Passes?"""
## addition info about text
## ignore_last will ignore the last word
text_dict = {
"Corners,": dict(color="skyblue", ignore_last=True),
"Crosses,": dict(color="gold", ignore_last=True),
"Indirect_Freekicks": dict(color="grey", ignore=True),
"Open_Play_Passes?": dict(color="crimson", ignore=True, ignore_last=True)
}
## create subplot
fig, ax = plt.subplots(facecolor="#121212")
ax.set_facecolor("#121212")
ax.set(xlim=(-2, 2))
ax.axis("off")
## plot the text
ax = plot_text(
x = 0., y = 0.6,
text = text, text_dict = text_dict, ax = ax,
color_rest="#F0FFF0", fontsize=9
)
- Output:
- Let's say we have the following text:
text = """La Liga 2019/20: Expected Performance
Rolling average comparison between goal difference & expected goal difference"""
-
And now we want to have larger fontsize for the first line and a smaller one for the second. We can do this by passing a list of fontsizes to
plot_text
method. -
Code Snippet:
import matplotlib.pyplot as plt
from soccerplots.utils import plot_text
## text to be plotted
text = """La Liga 2019/20: Expected Performance
Rolling average comparison between goal_difference & expected_goal_difference"""
## text dict
text_dict = {
"goal_difference": dict(color="skyblue", ignore=True),
"expected_goal_difference": dict(color="gold", ignore=True)
}
## create subplot
fig, ax = plt.subplots(facecolor="#121212")
ax.set_facecolor("#121212")
ax.set(xlim=(-2, 2))
ax.axis("off")
## plot the text
ax = plot_text(
x = 0., y = 0.6,
text = text, text_dict = text_dict, ax = ax,
color_rest="#F0FFF0", fontsize=[13, 9], va="top" ## list of fontsize and
## va="top" to reduce distance between first and second line
)
- Output:
- Code Snippet:
import matplotlib.pyplot as plt
from soccerplots.utils import plot_text
## file at http://bit.do/johantxt
with open("johan.txt", "r") as ofile:
text = ofile.read()
text_dict = {
"youth_teams": dict(color="#00FF00", fontstyle="italic", ignore=True),
"first_team.": dict(color="#F5F5F5", fontstyle="italic",
fontweight="semibold", ignore=True, ignore_last=True),
"emhasis": dict(color="gold", fontweight="demibold"),
"learning.": dict(color="#00FFFF", ignore_last=True),
"suspicion": dict(color="#F04D4D", fontweight="roman"),
"youth_coaches": dict(color="#00FF00", fontstyle="italic", ignore=True),
"winning.": dict(color="crimson", ignore_last=True),
"reputation.": dict(color="#008080", fontweight="bold", ignore_last=True),
"club.": dict(color="gold", ignore_last=True),
"talent": dict(color="#C674C6"),
"learn,": dict(color="#00FFFF", fontweight="bold", ignore_last=True),
"point?": dict(color="lime", ignore_last=True),
"developing": dict(color="#32CD32"),
"Johan_Cruyff": dict(color="#FFA500", ignore=True, fontsize=15)
}
## create subplot
fig, ax = plt.subplots(figsize=(12, 4), facecolor="#121212")
ax.set_facecolor("#121212")
ax.axis("off")
ax = plot_text(0.5, 0.5, text, text_dict, ax=ax, color_rest="#FFFAFA",
fontsize=12, fontfamily="Norasi")
- Output: