59 lines
1.5 KiB
Python
59 lines
1.5 KiB
Python
import matplotlib.pyplot as plt
|
|
import pandas as pd
|
|
import numpy as np
|
|
import seaborn as sns
|
|
import fiftyone as fo
|
|
|
|
|
|
def set_size(width, fraction=1, subplots=(1, 1)):
|
|
"""Set figure dimensions to avoid scaling in LaTeX.
|
|
|
|
Parameters
|
|
----------
|
|
width: float
|
|
Document textwidth or columnwidth in pts
|
|
fraction: float, optional
|
|
Fraction of the width which you wish the figure to occupy
|
|
|
|
Returns
|
|
-------
|
|
fig_dim: tuple
|
|
Dimensions of figure in inches
|
|
"""
|
|
# Width of figure (in pts)
|
|
fig_width_pt = width * fraction
|
|
|
|
# Convert from pt to inches
|
|
inches_per_pt = 1 / 72.27
|
|
|
|
# Golden ratio to set aesthetic figure height
|
|
# https://disq.us/p/2940ij3
|
|
golden_ratio = (5**.5 - 1) / 2
|
|
|
|
# Figure width in inches
|
|
fig_width_in = fig_width_pt * inches_per_pt
|
|
# Figure height in inches
|
|
fig_height_in = fig_width_in * golden_ratio * (subplots[0] / subplots[1])
|
|
|
|
fig_dim = (fig_width_in, fig_height_in)
|
|
|
|
return fig_dim
|
|
|
|
|
|
def export_dataset(dataset, export_dir, classes=["Healthy", "Stressed"]):
|
|
label_field = "ground_truth"
|
|
|
|
# The splits to export
|
|
splits = ["val"]
|
|
|
|
# Export the splits
|
|
for split in splits:
|
|
split_view = dataset.match_tags(split)
|
|
split_view.export(
|
|
export_dir=export_dir,
|
|
dataset_type=fo.types.YOLOv5Dataset,
|
|
label_field=label_field,
|
|
split=split,
|
|
classes=classes,
|
|
)
|