kdamevski's picture
Upload folder using huggingface_hub
1c60c6e
# Copyright 2021-present, the Recognai S.L. team.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from typing import Dict
def empty_visualization(message: str = "No data found"):
import plotly.graph_objects as go
fig = go.Figure()
fig.update_layout(
xaxis={"visible": False},
yaxis={"visible": False},
annotations=[{"text": message, "showarrow": False, "font": {"size": 30}}],
)
return fig
def bar(data: dict, title: str = "Bar", x_legend: str = "", y_legend: str = ""):
import plotly.graph_objects as go
if not data:
return empty_visualization()
keys, values = zip(*data.items())
keys = [
key.encode("unicode-escape").decode() if isinstance(key, str) else key
for key in keys
]
fig = go.Figure(data=go.Bar(y=values, x=keys))
fig.update_layout(
title=title,
xaxis_title=x_legend,
yaxis_title=y_legend,
)
return fig
def stacked_bar(
x: list,
y_s: Dict[str, list],
title: str = "Bar",
x_legend: str = "",
y_legend: str = "",
):
import plotly.graph_objects as go
if not x or not y_s:
return empty_visualization()
data = [go.Bar(name=name, x=x, y=y_values) for name, y_values in y_s.items()]
fig = go.Figure(data=data)
fig.update_layout(
title=title,
xaxis_title=x_legend,
yaxis_title=y_legend,
barmode="stack",
)
return fig
def histogram(data: dict, title: str = "Bar", x_legend: str = "", y_legend: str = ""):
if not data:
return empty_visualization()
data = {float(k): v for k, v in data.items()}
return bar(data, title, x_legend, y_legend)
def tree_map(labels, parents, values, title: str = "Tree"):
import plotly.graph_objects as go
if not values: # TODO: review condition
return empty_visualization()
fig = go.Figure(
go.Treemap(
labels=labels,
parents=parents,
values=values,
)
)
fig.update_layout(title=title, margin=dict(t=50, l=0, r=0, b=0))
return fig
def multilevel_pie(labels, parents, values, title: str = "Pie"):
import plotly.graph_objects as go
fig = go.Figure(
go.Sunburst(
labels=labels,
parents=parents,
values=values,
)
)
fig.update_layout(title=title, margin=dict(t=50, l=0, r=0, b=0))
return fig
def f1(data: Dict[str, float], title: str):
from plotly.subplots import make_subplots
fig = make_subplots(
rows=1,
cols=3,
subplot_titles=[
"macro average",
"micro average",
"per label",
],
)
fig.add_bar(
x=[k.split("_")[0] for k, v in data.items() if "macro" in k],
y=[v for k, v in data.items() if "macro" in k],
row=1,
col=1,
)
fig.add_bar(
x=[k.split("_")[0] for k, v in data.items() if "micro" in k],
y=[v for k, v in data.items() if "micro" in k],
row=1,
col=2,
)
per_label = {
k: v
for k, v in data.items()
if all(key not in k for key in ["macro", "micro", "support"])
}
fig.add_bar(
x=[k for k, v in per_label.items()],
y=[v for k, v in per_label.items()],
row=1,
col=3,
)
fig.update_layout(showlegend=False, title_text=title)
return fig