imaNNeo / fl_chart

FL Chart is a highly customizable Flutter chart library that supports Line Chart, Bar Chart, Pie Chart, Scatter Chart, and Radar Chart.
https://flchart.dev
MIT License
6.58k stars 1.7k forks source link

Radar plot center point is zero #1351

Open Athony1225 opened 1 year ago

Athony1225 commented 1 year ago

image I want the points with the value of zero to be concentrated on the center point as shown in the figure, but I don't know how to set it

collamaf commented 1 year ago

Hello, I am also having the same question. Are we missing something here?

Athony1225 commented 1 year ago

Hello, I am also having the same question. Are we missing something here? I do not know, I searched, but could not find which property can be controlled. The screenshot below is the result of version 0.41.0, but this problem occurred after I updated to 0.62.0 image

imaNNeo commented 1 year ago

I didn't understand your issue

Athony1225 commented 1 year ago

I didn't understand your issue

The 1 and 2 in the picture are the differences between the 0.62.0 and 0.41.0 versions, the 2 is the one I want. I don't know if there is a way to control this in version 0.62.0

image

mfatihz commented 11 months ago

I got the same problem too. I ran the sample file and modified the data like this image

And the result is as follows: image

I think the value 0 should be in the center of the radar, like the image below image

And an additional problem: when using other value combinations, the radar axis scales incorrectly. For example below: image image

janosdupai commented 11 months ago

Same here... If you have any solution, just let me know please!

collamaf commented 11 months ago

Guys I "solved" the problem by superimposing my desired data with another dataset (made transparent so not actually shown) having both 0 and 100 as values Did I made it clean what I mean?

hardgit commented 9 months ago

I've encountered this problem too. May I ask when will the author fix it?

imaNNeo commented 9 months ago

Can someone please give me a reproducible code (a main.dart file) to let me fix the issue?

ColinSchmale commented 9 months ago

You can use the example and replace rawDataSets in example/lib/presentation/samples/radar/radar_chart_sample1.dart as mentioned in my ticket with this simplified code:

List<RawDataSet> rawDataSets() {
    return [
      RawDataSet(
        title: 'Fashion',
        color: widget.fashionColor,
        values: [
          100,
          90,
          90,
        ],
      ),
    ];
}
git-boya commented 6 months ago

May I ask if there is any progress on this issue

eldrig0 commented 5 months ago

https://github.com/imaNNeo/fl_chart/issues/1078 broke the behaviour after version 0.6.2, i reverted to 0.6.1, and it works and to have the correct scale have a transparent dataset that contains max value and min value along with my actual dataset

 RadarDataSet(
       entryRadius: 8,
       fillColor: Colors.transparent,
       borderColor: Colors.transparent,
       borderWidth: 2,
      dataEntries:  [
         // Make sure the length of this dataset match the length of your original dataset.
         RadarEntry(value: 0), //minValue
         RadarEntry(value: 5) //maxValue
      ],
),
xiaao3 commented 1 month ago

in radar_chart_painter.dart. if the dataSet has some data is zero, return default chart center.

  double getChartCenterValue(RadarChartData data) {
    final dataSetMaxValue = data.maxEntry.value;
    final dataSetMinValue = data.minEntry.value;

    // add this 
    if(dataSetMinValue == 0) return getDefaultChartCenterValue();

    final tickSpace = getSpaceBetweenTicks(data);
    final centerValue = dataSetMinValue - tickSpace;

    return dataSetMaxValue == dataSetMinValue
        ? getDefaultChartCenterValue()
        : centerValue;
  }
soraef commented 3 weeks ago

@imaNNeo This is the reproduction code.

Versions Flutter 3.19.6 Dart 3.3.4

import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(const MainApp());
}

class MainApp extends StatelessWidget {
  const MainApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: RadarChart(
          RadarChartData(
            radarShape: RadarShape.polygon,
            tickCount: 3,
            dataSets: [
              RadarDataSet(
                dataEntries: [
                  RadarEntry(value: 0),
                  RadarEntry(value: 20),
                  RadarEntry(value: 100),
                ],
              ),
            ],
          ),
        ),
      ),
    );
  }
}

simulator_screenshot_EA6E452B-CDB6-4D88-9855-7C27B705F84E