上个项目中涉及到股票之类的折线图柱状图饼图等图表类的展示,因为时间紧迫,就没来得及多去研究,找了几个demo用了一下,

始终没有时间去过多的研究,最近接手的一个项目又使用到了柱状图图表,需要正负柱状图,

查看了多个柱状图的demo,都是各种bug和不合适,在使用该demo的同时还要去修复bug,

太头疼了,无奈选择了难研究的百度Echarts,接下来说下简单的入坑

1.使用cocoapods导入项目

pod 'iOS-Echarts’

2.导入成功之后,导入头文件

#import "iOS-Echarts.h"

3.使用图表

-(void)showBar

{

//坐标值

_xValues = [NSMutableArray arrayWithArray:@[@"1月",@"2月",@"3月",@"4月",@"5月",@"6月"@"7月",@"8月",@"9月",@"10月",@"11月",@"12月"]];

_yValues = [NSMutableArray arrayWithArray:@[@"1",@"200",@"333",@"444",@"999",@"44",@"-22",@"300",@"9",@"-222",@"-888",@"2000"]];

//项目中因为需要Y坐标根据内容自适应,所以,取了Y轴的最大值作为y轴的宽度

CGFloat maxWidth = 0;

for (int i = 0; i < _yValues.count; i ++) {

NSString *str = _yValues[i];

CGFloat width = [self widthForTitle:str];

if (width > maxWidth) {

maxWidth = width;

}

}

PYOption *option = [[PYOption alloc] init];

/** 直角坐标系内绘图网格, 说明见下图 */

PYGrid *grid = [[PYGrid alloc] init];

// 左上角位置

grid.x = @(maxWidth);

grid.y = @(30);

// 右下角位置

grid.x2 = @(20);

grid.y2 = @(100);

grid.borderWidth = @(0);

// 添加到图标选择中

option.grid = grid;

//柱状图颜色(暂时还未找到设置正负柱状图颜色不同的方法,回头再研究一下)

option.color = @[@"#E40082"];

/** X轴设置 */

PYAxis *xAxis = [[PYAxis alloc] init];

//横轴默认为类目型(就是坐标自己设置)

xAxis.type = @"category";

// 起始和结束两端空白

xAxis.boundaryGap = @(YES);

// 分隔线

xAxis.splitLine.show = YES;

xAxis.splitLine.onGap = YES;//设置为YES柱状图在格子中间,为NO的话坐标线在柱状图的中间,可自行设置一下看效果(前提是xAxis.splitLine.show 设置为YES)

// 坐标轴线

xAxis.axisLine.show = YES;

// X轴坐标数据

xAxis.data = _xValues;

// 坐标轴小标记

xAxis.axisTick = [[PYAxisTick alloc] init];

xAxis.axisTick.show = NO;

// 添加到图标选择中

option.xAxis = [[NSMutableArray alloc] initWithObjects:xAxis, nil];

/** Y轴设置 */

PYAxis *yAxis = [[PYAxis alloc] init];

yAxis.axisLine.show = YES;

// 纵轴默认为数值型(就是坐标系统生成), 改为 @"category" 会有问题, 读者可以自行尝试

yAxis.type = @"value";

// 分割段数,默认为5

yAxis.splitNumber = @5;

// 分割线类型

// yAxis.splitLine.lineStyle.type = @"dashed"; //'solid' | 'dotted' | 'dashed' 虚线类型

//单位设置, 设置最大值, 最小值

// yAxis.axisLabel.formatter = @"{value} k";

// yAxis.max = @1000;

// yAxis.min = @-100;

// 添加到图标选择中 ( y轴更多设置, 自行查看官方文档)

option.yAxis = [[NSMutableArray alloc] initWithObjects:yAxis, nil];

NSMutableArray *seriesArr = [NSMutableArray array];

/** 第一条数据设置 */

PYCartesianSeries *series1 = [[PYCartesianSeries alloc] init];

series1.barWidth = @15;

// 类型为柱状图 如果要改为折线图 可将bar改为line等等,多种类型

series1.type = @"bar";

// 坐标点大小

series1.symbolSize = @(1.5);

// 坐标点样式, 设置连线的宽度

series1.itemStyle = [[PYItemStyle alloc] init];

series1.itemStyle.normal = [[PYItemStyleProp alloc] init];

series1.itemStyle.normal.lineStyle = [[PYLineStyle alloc] init];

series1.itemStyle.normal.lineStyle.width = @(1.5);

// 添加坐标点 y 轴数据 ( 如果某一点 无数据, 可以传 @"-" 断开连线 如 : @[@"7566", @"-", @"7571"] )

series1.data = _yValues;

[seriesArr addObject:series1];

[option setSeries:seriesArr];

self.barView = [[PYEchartsView alloc]initWithFrame:CGRectMake(0, 0, self.width , self.cellHeight)];

self.barView.backgroundColor = [UIColor whiteColor];

[self.scrollView addSubview:self.barView];

[_barView setOption:option];

[_barView loadEcharts];

[_barView refreshEcharts];//如果不添加这个刷新,首次加载图表完之后图表不显示

}

//获取y轴的宽度

- (CGFloat)widthForTitle:(NSString *)title {

NSDictionary *attributes = @{NSFontAttributeName : [UIFont systemFontOfSize:14]};

CGSize size = [title boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, 35) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size;

size.width = ceil(size.width)+10;

return size.width;

}

如果柱状图上的数字不显示,可以找到 PYItemStyleProp 这个类,查看初始化,_label.position = @"outer",如果是这个,改为@"top",就可以了

因为项目中多条数据需要左右滑动,无奈只好在下面加了一个UIScrollView,但是这样的话Y轴就随着一起左右滑动了,至今没有找到合适的方法,如果有做过的,还望能请教下.

效果图(数据源是我随便添加的,可自行设置)

Bar.gif

echarts柱状图大小显示_百度Echarts入坑(柱状图正负显示)相关推荐

  1. echarts中x轴文件消失_百度Echarts图表在Vue项目的完整引入以及按需加载

    导语 近日在项目中需要进行图表展示,百度的Echarts图表是非常合适的一个选择.项目是vue-cli搭建的,如何在项目中引入Echarts就是一个问题了.亲自动手实践了下,整理总结,希望对小伙伴提供 ...

  2. qlabel 显示图片后大小不变_图形编程:QT使用scrollarea显示图片的解决方案

    需求: 在界面上点击"显示图片"按钮,会调用scrollarea窗口显示图片,窗口大小能根据图片大小自动调整,但是最大为1024*768,图片过大就要有滚动条来显示 IDE环境: ...

  3. java学习路线_java学习路线_我的入坑路

    java详细路线: 网上有很多学习路线,当初,我就是受这个学习路线的影响入坑的. 既然看到标题为我的java学习路,那就给大家看下我是怎么走过来的. 阶段一_JavaSE 入门推荐书:java开发实战 ...

  4. 吴恩达又双叒叕刷屏了_你准备入坑了吗?

    阅读原文请点击 美国太平洋时间8点16分,吴恩达在推特上发布了重磅消息:deeplearning.ai课程登录Cousera,并同时在 Medium 发布博文介绍这套课程. 吴恩达坦言自己一直在进行3 ...

  5. 华为手机如何调时间显示_华为手机不亮屏也能显示时间日期?10秒就能设置,原来这么简单...

    不知道各位在想要查看时间的时候,是不是从口袋中拿出手机,然后按下锁屏键亮屏查看时间之后再按锁屏键熄屏的呢?但是还有一种更加简单的方法不需要亮屏就可以查看时间日期. 这个功能就是华为手机的"灭 ...

  6. fw150rm刷openwrt固件_交作业 - 入坑J1900 软路由(刷原版OpenWrt 更新单线多拨)

    本帖最后由 bryant2 于 2020-4-25 12:59 编辑 引言 前不久把家里电信光纤升级到了199的300M套餐(其实当时是为了无限流量卡,因为工作需要经常出差,有一个插SIM卡的随身华为 ...

  7. 苹果iwatch手表_智能手表入坑指南,你需要的是Apple Watch,还是小米手环?

    你应该买智能手表吗?什么样的智能手表适合你?苹果的Apple Watch?小米的健康手环?还是佳明Fenix运动手表? 智能手表入坑指南https://www.zhihu.com/video/1090 ...

  8. echarts字变大_在echarts中如何调整lable的字体大小?

    波斯汪 series[i]-pie.data[i].label.normal.textStyle.fontSize透過設定 fontSize 就可以調整大小了, 你可以參考 官網的範例, 手動修改左側 ...

  9. echarts geo地图示例_基于Echarts的中国地图数据展示

    一.概述 实际项目中大概率会遇到很多需要进行数据展示的地方,如折现图,柱状图等,今天给大家介绍一个更加炫酷的中国地图大数据展示,结合echarts免费开源第三方插件,可以实现自己的定制样式,定制提示. ...

  10. echarts python源码_基于Echarts的微代码开发平台SmartChart, 免费开源使用

    A platform that Connect Data to Echarts. 简介 SmartChart基于Echarts/Django的微代码开发平台,适用于任何WEB项目 简单, 敏捷, 高效 ...

最新文章

  1. 如何做网络营销推广浅析网站优化要做好哪些优化会获得搜索引擎的青睐?
  2. Android 开发中的View事件监听机制
  3. 如何运用python爬游戏皮肤_Python爬虫实战之 爬取王者荣耀皮肤
  4. Firefox不支持event解决方法
  5. http://www.cnblogs.com/Bear-Study-Hard/archive/2008/03/26/1123267.html
  6. Web前端开发规范手册
  7. Auto.js 全命令整理(一) 数据获取专题
  8. let和const注意点
  9. 如何为Kalman Studio编写T4模板
  10. Ubuntu14.04编译Opencv3.1错误:下载ippicv,解决方案
  11. 订阅服务器无法显示,订阅疑难解答
  12. 单位邮箱格式注册,如何申请单位邮箱?
  13. Shiro 实现记住我功能
  14. php源码字符串内部表示,PHP源码—implode函数源码分析
  15. 新年的开始——关于过去现在和未来
  16. SDN和NFV的区别
  17. nginx 配置 同一域名端口下,根据URL 导向不同的项目目录
  18. 树莓派实验室python人脸识别_使用树莓派进行简易人脸识别
  19. 简单的虚拟产品介绍html单页源码
  20. 我爱你宠物网——创业笔记(三)

热门文章

  1. 数据湖、物联网等--南水北调中线工程的“智慧大脑”,是如何工作的?
  2. h5中的结构元素header、nav、article、aside、section、footer介绍
  3. p1007无线打印服务器,把你的打印机共享出来:Hardlink 固网 打印服务器HP-1007
  4. crontab 误删除恢复
  5. 思岚S2激光雷达2—SDK和实例程序的编译
  6. 1. 神禹(shenyu)网关启动踩坑
  7. 吉首大学期末计算机考试,吉首大学微机原理期末考试试卷.doc
  8. axio并发请求示例
  9. This relative module was not found: Error: Can‘t resolve ‘../assets/bg.jpg‘
  10. JDBC-Web抽取公共的增删改方法