条形图的颜色不在JBChartView中显示

时间:2014-06-09 15:42:40

标签: ios objective-c jbchartview

我试图在我的iOS应用中实现条形图。我正在使用JBChartView。一切都很好,但是除非我使用touchEvent按下它们,否则没有颜色。

有没有人有使用此特定插件的经验来帮助我让它正常工作?

谢谢

  - (void)viewDidLoad
    {


       _barChartView = [[JBBarChartView alloc] init];
        _barChartView.delegate = self;
        _barChartView.dataSource = self;


    _tableView.backgroundColor =[UIColor clearColor];
        _barChartView.frame = CGRectMake(0,0,200,200);
        _barChartView.backgroundColor = [UIColor clearColor];
        [_barChartView reloadData];
        [_barChart addSubview: _barChartView];

    }


    - (UIColor *)barSelectionColorForBarChartView:(JBBarChartView *)barChartView
    {
        return [UIColor greenColor]; // color of selection view
    }
    - (BOOL)slideNavigationControllerShouldDisplayLeftMenu
    {
        return YES;
    }
    - (UIColor *)barChartView:(JBBarChartView *)barChartView colorForBarViewAtIndex:(NSUInteger)index
    {
        return [UIColor greenColor];
    }

    - (NSUInteger)numberOfBarsInBarChartView:(JBBarChartView *)barChartView
    {
        return 4;
    }
    - (CGFloat)barChartView:(JBBarChartView *)barChartView heightForBarViewAtAtIndex:(NSUInteger)index
    {
        return 100.0;
    }

2 个答案:

答案 0 :(得分:2)

问题似乎与JBBarChartView"规范化"价值。根据{{​​1}}的头文件:

JBBarChartView.h

因为这"正常化"当所有值都相同(/** * Height for a bar at a given index (left to right). There is no ceiling on the the height; * the chart will automatically normalize all values between the overal min and max heights. * * @param barChartView The bar chart object requesting this information. * @param index The 0-based index of a given bar (left to right, x-axis). * * @return The y-axis height of the supplied bar index (x-axis) */ )时,它会将它们全部标准化为0,因此没有要显示的条形图。幸运的是,它是开源的,所以你只需要打开实现文件并进行一些修改:

100.0f

答案 1 :(得分:0)

解决问题的正确方法是在图表上提供最小值。

请查看@JBChartView的文档:

/**
 *  The minimum and maxmimum values of the chart. 
 *  If no value(s) are supplied:
 *  
 *  minimumValue = chart's data source min value. 
 *  maxmimumValue = chart's data source max value.
 *
 *  If value(s) are supplied, they must be >= 0, otherwise an assertion will be thrown. 
 *  The min/max values are clamped to the ceiling and floor of the actual min/max values of the chart's data source;
 *  for example, if a maximumValue of 20 is supplied & the chart's actual max is 100, then 100 will be used.
 *
 *  For min/max modifications to take effect, reloadData must be called.
 */
@property (nonatomic, assign) CGFloat minimumValue;
@property (nonatomic, assign) CGFloat maximumValue;

如果您的所有数据都等于单个值(即100),则提供最小值0将确保所有条形均以相等(可见)高度(相对于0)绘制。

希望这有帮助。