#include "viz/pie_chart.h" #include "implot.h" void pie_chart(const char* title, const char* const* labels, const float* values, int count, float radius) { if (ImPlot::BeginPlot(title, ImVec2(-1, 0), ImPlotFlags_Equal | ImPlotFlags_NoLegend)) { ImPlot::SetupAxes(nullptr, nullptr, ImPlotAxisFlags_NoDecorations, ImPlotAxisFlags_NoDecorations); ImPlot::SetupAxesLimits(0, 1, 0, 1); if (radius < 0.0f) { ImPlot::PlotPieChart(labels, values, count, 0.5, 0.5, static_cast(-radius), "%.1f", 90.0); } else { float r = (radius > 0.0f) ? radius : 0.4f; ImPlot::PlotPieChart(labels, values, count, 0.5, 0.5, static_cast(r), "%.1f", 90.0); } ImPlot::EndPlot(); } } void pie_chart(const char* title, const char* const* labels, const double* values, int count, double radius) { if (ImPlot::BeginPlot(title, ImVec2(-1, 0), ImPlotFlags_Equal | ImPlotFlags_NoLegend)) { ImPlot::SetupAxes(nullptr, nullptr, ImPlotAxisFlags_NoDecorations, ImPlotAxisFlags_NoDecorations); ImPlot::SetupAxesLimits(0, 1, 0, 1); if (radius < 0.0) { ImPlot::PlotPieChart(labels, values, count, 0.5, 0.5, -radius, "%.1f", 90.0); } else { double r = (radius > 0.0) ? radius : 0.4; ImPlot::PlotPieChart(labels, values, count, 0.5, 0.5, r, "%.1f", 90.0); } ImPlot::EndPlot(); } }