IOS使用Charts

最近项目中要做图表功能,为了减少开发量采用的是H5+ECharts来做,这里说一下IOS中如何使用ECharts以及遇到的问题。

网络模块化单文件引入

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>IOS使用Charts</title>
	
</head>
<body>
	<div id="main" class="main" style="height:400px;" ></div>
	<script src="http://echarts.baidu.com/build/dist/echarts.js"></script>
	<script type="text/javascript">
		require.config({
        	paths: {
            	echarts: 'http://echarts.baidu.com/build/dist'
        	}
    	});
    	require(
		        [
		            'echarts',
		            'echarts/chart/line',
		            'echarts/chart/bar'
		        ],
		        function (ec) {
	                var myChart = ec.init(document.getElementById('main'));
	                var option = {
	                    title : {
					        text: '世界人口总量',
					        subtext: '数据来自网络'
					    },
					    tooltip : {
					        trigger: 'axis'
					    },
					    legend: {
					        data:['2011年', '2012年']
					    },
					    toolbox: {
					        show : true,
					        feature : {
					            mark : {show: true},
					            dataView : {show: true, readOnly: false},
					            magicType: {show: true, type: ['line', 'bar']},
					            restore : {show: true},
					            saveAsImage : {show: true}
					        }
					    },
					    calculable : true,
					    xAxis : [
					        {
					            type : 'value',
					            boundaryGap : [0, 0.01]
					        }
					    ],
					    yAxis : [
					        {
					            type : 'category',
					            data : ['巴西','印尼','美国','印度','中国','世界人口(万)']
					        }
					    ],
					    series : [
					        {
					            name:'2011年',
					            type:'bar',
					            data:[18203, 23489, 29034, 104970, 131744, 630230]
					        },
					        {
					            name:'2012年',
					            type:'bar',
					            data:[19325, 23438, 31000, 121594, 134141, 681807]
					        }
					    ]
					}
                	myChart.setOption(option);
            	}
    	);
	</script>
</body>
</html>

标签式单文件引入

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>IOS使用Charts</title>
	
</head>
<body>
	<div id="main" class="main" style="height:400px;" ></div>
	<script src="http://echarts.baidu.com/build/dist/echarts-all.js"></script>
	<script type="text/javascript">
        var myChart = echarts.init(document.getElementById('main'));
        myChart.showLoading({//用来在加载网络数据时显示
			text: '正在努力的读取数据中...',    //loading话术
		});
        var option = {
            title : {
		        text: '世界人口总量',
		        subtext: '数据来自网络'
		    },
		    tooltip : {
		        trigger: 'axis'
		    },
		    legend: {
		        data:['2011年', '2012年']
		    },
		    toolbox: {
		        show : true,
		        feature : {
		            mark : {show: true},
		            dataView : {show: true, readOnly: false},
		            magicType: {show: true, type: ['line', 'bar']},
		            restore : {show: true},
		            saveAsImage : {show: true}
		        }
		    },
		    calculable : true,
		    xAxis : [
		        {
		            type : 'value',
		            boundaryGap : [0, 0.01]
		        }
		    ],
		    yAxis : [
		        {
		            type : 'category',
		            data : ['巴西','印尼','美国','印度','中国','世界人口(万)']
		        }
		    ],
		    series : [
		        {
		            name:'2011年',
		            type:'bar',
		            data:[18203, 23489, 29034, 104970, 131744, 630230]
		        },
		        {
		            name:'2012年',
		            type:'bar',
		            data:[19325, 23438, 31000, 121594, 134141, 681807]
		        }
		    ]
		}
    	myChart.setOption(option);
    	myChart.hideLoading();//实际请求结束后调用
	</script>
</body>
</html>

注意:

1、模块化单文件引入方式是官方推荐的,上面之所以写网络是因为使用的js是官方服务器的,而如果使用本地下载好点的需要注意路径,默认情况下Xcode的文件夹是黄色的(group),里面的文件实际上是在同一个目录下面的,要使用蓝色(folder)的文件夹。


2、使用本地的echarts.js的时候可以根据项目需要什么形状的图形,从http://ecomfe.github.io/echarts-builder-web/ 进行在线构建工具,把多余的内容去掉。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
iOS charts中,可以通过以下方式获取每个点的坐标: 1. 首先,需要获取到当前显示的图表对象,比如柱状图、折线图、散点图等等。 2. 接着,可以通过图表对象的`data`属性获取到当前显示的数据集合,比如某个柱状图的数据集合。 3. 对于每个数据点,可以使用`chartView.getTransformer(forAxis: .left)`和`chartView.getTransformer(forAxis: .bottom)`方法获取到左侧和底部坐标轴的`Transformer`对象。 4. 通过`Transformer`对象的`pixelForValues(x: Double, y: Double)`方法获取到数据点对应的像素坐标。 5. 最后,可以通过像素坐标计算出点的实际坐标值。 下面是一个示例代码片段,用于获取某个柱状图上所有数据点的实际坐标值: ```swift let chartView = BarChartView(frame: CGRect(x: 0, y: 0, width: 200, height: 200)) // 获取当前显示的数据集合 guard let data = chartView.data else { return } // 获取左侧和底部坐标轴的 Transformer 对象 let leftTransformer = chartView.getTransformer(forAxis: .left) let bottomTransformer = chartView.getTransformer(forAxis: .bottom) // 遍历数据集合中的所有数据点 for i in 0 ..< data.entryCount { // 获取数据点对应的像素坐标 let x = data.entryForIndex(i)?.x ?? 0 let y = data.entryForIndex(i)?.y ?? 0 let pixelPoint = CGPoint(x: CGFloat(x), y: CGFloat(y)) // 计算出点的实际坐标值 let realPoint = CGPoint(x: bottomTransformer.valueForTouchPoint(point: pixelPoint).x, y: leftTransformer.valueForTouchPoint(point: pixelPoint).y) print("Point \(i): \(realPoint)") } ``` 以上代码中,`BarChartView`是某个柱状图的实例,通过遍历数据集合中的所有数据点,使用`getTransformer(forAxis:)`方法获取左侧和底部坐标轴的`Transformer`对象,然后通过`valueForTouchPoint(point:)`方法计算出实际坐标值,并打印出来。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值