I'm trying to make a graph using plotly
library and I want to make some texts in bold here's the code used :
import plotly.express as px
import pandas as pd
data = {
"lib_acte":["test 98lop1", "test9665 opp1", "test QSDFR1", "test ABBE1", "testtest21","test23"],
"x":[12.6, 10.8, -1, -15.2, -10.4, 1.6],
"y":[15, 5, 44, -11, -35, -19],
"circle_size":[375, 112.5, 60,210, 202.5, 195],
"color":["green", "green", "green", "red", "red", "red"],
"textfont":["normal", "normal", "normal", "bold", "bold", "bold"],
}
#load data into a DataFrame object:
df = pd.DataFrame(data)
fig = px.scatter(
df,
x="x",
y="y",
color="color",
size='circle_size',
text="lib_acte",
hover_name="lib_acte",
color_discrete_map={"red": "red", "green": "green"},
title="chart"
)
fig.update_traces(textposition='middle right', textfont_size=14, textfont_color='black', textfont_family="Inter", hoverinfo="skip")
newnames = {'red':'red title', 'green': 'green title'}
fig.update_layout(
{
'yaxis': {
"range": [-200, 200],
'zerolinewidth': 2,
"zerolinecolor": "red",
"tick0": -200,
"dtick":45,
},
'xaxis': {
"range": [-200, 200],
'zerolinewidth': 2,
"zerolinecolor": "gray",
"tick0": -200,
"dtick": 45,
# "scaleanchor": 'y'
},
"height": 800,
}
)
fig.add_scatter(
x=[0, 0, -200, -200],
y=[0, 200, 200, 0],
fill="toself",
fillcolor="gray",
zorder=-1,
mode="markers",
marker_color="rgba(0,0,0,0)",
showlegend=False,
hoverinfo="skip"
)
fig.add_scatter(
x=[0, 0, 200, 200],
y=[0, -200, -200, 0],
fill="toself",
fillcolor="yellow",
zorder=-1,
mode="markers",
marker_color="rgba(0,0,0,0)",
showlegend=False,
hoverinfo="skip"
)
fig.update_layout(
paper_bgcolor="#F1F2F6",
)
fig.show()
and here's the output of above code:
What I'm trying to do is to make "test ABBE1", "testtest21","test23" in bold on the graph, could anyone please help how to do that ?
Not sure if there is a better solution, but, as mentioned in furas's comment you can use the HTML tag <b>…</b>
for the elements that should be bold-faced. You can achieve this, for example, by adding the following line:
# Create your data dict (as before)
data = {
...
}
# Add HTML tag for boldface
data["lib_acte"] = [(f"<b>{el}</b>" if ft == "bold" else el) for el, ft in
zip(data["lib_acte"], data["textfont"])]
# Create dataframe (as before)
df = pd.DataFrame(data)
The documentation says:
Chart Studio uses a subset of HTML tags to do things like newline (
<br>
), bold (<b></b>
), italics (<i></i>
), and hyperlinks (<a href=’…’></a>
). Tags<em>
,<sup>
, and<sub>
are also supported.
Here, Chart Studio is the online service built on top of and provided by the makers of plotly
. While not explicitly stated, I am quite sure that the same subset of HTML tags also applies to plotly
(stand-alone) – I just tried successfully with <b>
, <sup>
, and <a href=…>
.