iOS--PNChart學(xué)習(xí)

導(dǎo)語(yǔ):

這是一款可以制作各種類型的圖表庫(kù)入偷,折線圖,柱狀圖械哟,圓狀圖盯串,餅狀圖,同時(shí)伴有動(dòng)畫效果戒良,代碼簡(jiǎn)潔易懂体捏。

1.安裝

推薦使用cocoapods, 即 pod "PNChart",導(dǎo)入頭文件 #import "PNChart.h"
當(dāng)然你也可以手動(dòng)導(dǎo)入糯崎,需要添加系統(tǒng)依賴庫(kù):
Foundation.framework
UIKit.framework
CoreGraphics.framework
QuartzCore.framework

2.使用

1.折線圖

使用的類為PNLineChart几缭,屬性比較多,以下幾種類型的圖沃呢,屬性就不一一介紹了年栓,可以參考著折線圖

- (void)makeLineChart{
    PNLineChart *lineChart = [[PNLineChartalloc] initWithFrame:CGRectMake(0, 100, SCREEN_WIDTH, 200)];

    lineChart.yFixedValueMax =300;
    lineChart.yFixedValueMin =0;
    // lineChart.yLabelNum = 2;//設(shè)置Y軸有幾個(gè)等級(jí)數(shù)值,默認(rèn)自動(dòng)計(jì)算
    //是否顯示X軸數(shù)值
    lineChart.showLabel = YES;
    //是否顯示Y軸的數(shù)值
    lineChart.showGenYLabels = YES;
    //是否顯示橫向曲線薄霜, Y軸網(wǎng)絡(luò)線
    lineChart.showYGridLines = YES;
    //是否顯示平滑的曲線
    lineChart.showSmoothLines = NO;
    //是否顯示 xy 坐標(biāo)軸
    lineChart.showCoordinateAxis = YES;
    //動(dòng)畫
    lineChart.displayAnimated =YES;
    //軸的顏色
    lineChart.axisColor = [UIColor blueColor];
    //軸的寬度
    lineChart.axisWidth =2.0f;
    //縱坐標(biāo)上是否顯示小數(shù)
    lineChart.thousandsSeparator =YES;
    //設(shè)置Y軸坐標(biāo)值的顏色
    lineChart.yLabelColor = [UIColor redColor];
    //x軸單位
    lineChart.xUnit =@"月份";
    lineChart.yUnit =@"銷量";
    //設(shè)置X軸上的坐標(biāo)內(nèi)容
    [lineChart setXLabels:@[@"1月",@"2月",@"3月",@"4月",@"5月"]];
    //line Chart No 1
    NSArray *dataAry1 =@[@"60.1", @"160.1", @"126.4",@"262.2", @"186.2"];
    PNLineChartData *data1 = [PNLineChartDatanew];
    data1.color = PNYellow;
    // data1.dataTitle = @"Helloworld";
    //設(shè)置點(diǎn)的樣式
    data1.inflexionPointStyle = PNLineChartPointStyleCircle;
    data1.inflexionPointColor = [UIColorpurpleColor];
    //坐標(biāo)值是否顯示
    data1.showPointLabel =YES;
    //坐標(biāo)值顯示的顏色
    data1.pointLabelColor = [UIColor redColor];
    //坐標(biāo)值的字體大小
    data1.pointLabelFont = [UIFontsystemFontOfSize:12];
    //坐標(biāo)值顯示幾位數(shù)
    data1.pointLabelFormat =@"%1.1f";
    //設(shè)置折線有幾個(gè)值
    data1.itemCount = lineChart.xLabels.count;
    data1.getData = ^PNLineChartDataItem*(NSUInteger item) {
        CGFloat yValue = [dataAry1[item] floatValue];
        //設(shè)置X軸對(duì)應(yīng)的Y軸的值
        return[PNLineChartDataItem dataItemWithY:yValue];
    };

    //Line Chart No 2
    NSArray *dataAry2 =@[@"20.1", @"280.1", @"102.4",@"202.2", @"49.3"];
    PNLineChartData *data2 = [PNLineChartDatanew];
   data2.color = PNTwitterColor;
   data2.itemCount = lineChart.xLabels.count;
   data2.getData = ^PNLineChartDataItem*(NSUInteger item) {
        CGFloat yValue = [dataAry2[item]floatValue];
        return[PNLineChartDataItem dataItemWithY:yValue];
    };
    // lineChart.delegate = self;
    //注意:此句要在添加圖例之前寫
    lineChart.chartData =@[data1, data2];
    [self.view addSubview: lineChart];
    
    //添加圖例
    data1.dataTitle =@"蘋果銷量";
    data2.dataTitle =@"香蕉銷量";
    //橫向顯示
    lineChart.legendStyle =PNLegendItemStyleStacked;
    lineChart.legendFontColor = [UIColorblackColor];
    lineChart.legendFont = [UIFontsystemFontOfSize:25.0];
    //圖例所在位置
    UIView *legend = [lineChartgetLegendWithMaxWidth:200];
    // legend.backgroundColor =[UIColor redColor];
    [legend setFrame:CGRectMake(10, 350,
legend.frame.size.width, legend.frame.size.height)];
    //顯示比例
    lineChart.hasLegend =YES;
    //顯示位置
    lineChart.legendPosition =PNLegendPositionBottom;
    //繪制出來
    [lineChart strokeChart];
    [self.view addSubview: legend];
}
2.圓狀圖
- (void)makeCircleChart
{
    /*參數(shù):
     clocwise:逆時(shí)針還是順時(shí)針
     shadow:剩下的百分?jǐn)?shù)現(xiàn)顯示的顏色
     overrideLineWidth:寬度
     */
    PNCircleChart *circleChart =[[PNCircleChart alloc] initWithFrame:CGRectMake(0,100, SCREEN_WIDTH, 250)
total:@100 
current:@10
clockwise:YES 
shadow:YESshadowColor:[UIColor grayColor] 
displayCountingLabel:YES
overrideLineWidth:@10];
    
    circleChart.chartType =PNChartFormatTypePercent;
    circleChart.strokeColor = [UIColorgreenColor];
    circleChart.duration =3;//進(jìn)度條持續(xù)時(shí)間
    [circleChart strokeChart];
    [self.view addSubview: circleChart];
}
3.柱狀圖
- (void)makeBarChart{
    PNBarChart *barChart = [[PNBarChart alloc]initWithFrame:CGRectMake(0, 100, SCREEN_WIDTH, 250)];

    //是否顯示xy軸的數(shù)字
    barChart.showLabel =YES;
    //是否顯示水平線某抓,把柱子壓低上移了
    // barChart.showLevelLine = YES;
    //是否顯示xy軸
    barChart.showChartBorder =YES;
    //是否顯示柱子上的數(shù)值
    barChart.isShowNumbers =YES;
    //立體顯示
    barChart.isGradientShow =YES;
    //設(shè)置柱子的圓角
    barChart.barRadius =5;
    barChart.labelTextColor = [UIColorblueColor];
    // barChart.xLabelWidth = 10.f;
    barChart.yChartLabelWidth =10;
    barChart.chartMarginLeft =10;
    barChart.chartMarginRight =10;
    barChart.chartMarginTop =5;
    barChart.chartMarginBottom =10;
    barChart.labelMarginTop =5.0;//X坐標(biāo)刻度的上邊距
    //設(shè)置bar Color
    barChart.strokeColor = [UIColor redColor];
    barChart.xLabels =@[@"1", @"2",@"3", @"4",@"5"];
    barChart.yValues =@[@"20", @"36",@"78", @"60",@"92"];
    barChart.yLabelFormatter = ^NSString*(CGFloat yLabelValue) {
        return[NSString stringWithFormat:@"%f", yLabelValue];
    };

    //開始繪制
    [barChart strokeChart];
    [self.view addSubview:barChart];
}
4.餅狀圖
- (void)makePieChart{
    NSArray*items = @[
                       [PNPieChartDataItem dataItemWithValue:30 color:PNPinkGrey description:@"cat"],
                       [PNPieChartDataItem dataItemWithValue:20 color:PNDarkBlue description:@"pig"],
                       [PNPieChartDataItem dataItemWithValue:40 color:PNRed description:@"dog"]];
    PNPieChart*pieChart = [[PNPieChart alloc] initWithFrame:CGRectMake(20, 100, 300, 300) items:items];
    // pieChart.delegate = self;
    pieChart.descriptionTextColor= [UIColor yellowColor];
    pieChart.descriptionTextFont= [UIFont fontWithName:@"Avenir-Medium" size:20];
    //陰影顏色
    pieChart.descriptionTextShadowColor= [UIColor redColor];
    //顯示實(shí)際數(shù)值,不顯示實(shí)際比例
    pieChart.showAbsoluteValues= NO;
    //只顯示數(shù)值纸兔,不顯示內(nèi)容描述
    pieChart.showOnlyValues= NO;
    pieChart.innerCircleRadius= 0;
    pieChart.outerCircleRadius= 0;
    [pieChartstrokeChart];
    //加到父視圖上
    [self.view addSubview:pieChart];
    //顯示比例
    pieChart.hasLegend= YES;
    //橫向顯示
    pieChart.legendStyle= PNLegendItemStyleSerial;
    pieChart.legendFont= [UIFont boldSystemFontOfSize:20];
    //顯示位置
    pieChart.legendPosition= PNLegendPositionTop;
    //獲得圖例,當(dāng)橫向排布不下另起一行
    UIView*legend = [pieChart getLegendWithMaxWidth:100];
    legend.frame= CGRectMake(100,30, legend.bounds.size.width, legend.bounds.size.height);

    [self.view addSubview:legend];
}

3.效果圖

CC394FA565CB13ABDDA3DA674A8EE45E.png

79AAE09C37ABD9AEEB7AD300C8E2B13E.png

0F7452E7833F3631D40A61F1540A8366.png

2832AF3AC01A1BBEDB4154B6248D8C9A.png
github地址:https://github.com/shuoshuo123/PNChart
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末否副,一起剝皮案震驚了整個(gè)濱河市汉矿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌备禀,老刑警劉巖洲拇,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異曲尸,居然都是意外死亡赋续,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門另患,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纽乱,“玉大人,你說我怎么就攤上這事昆箕∑妊停” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵为严,是天一觀的道長(zhǎng)敛熬。 經(jīng)常有香客問我,道長(zhǎng)第股,這世上最難降的妖魔是什么应民? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮夕吻,結(jié)果婚禮上诲锹,老公的妹妹穿的比我還像新娘。我一直安慰自己涉馅,他們只是感情好归园,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稚矿,像睡著了一般庸诱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晤揣,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天桥爽,我揣著相機(jī)與錄音,去河邊找鬼昧识。 笑死钠四,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的跪楞。 我是一名探鬼主播缀去,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼侣灶,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了缕碎?” 一聲冷哼從身側(cè)響起褥影,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阎曹,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體煞檩,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡处嫌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斟湃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熏迹。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖凝赛,靈堂內(nèi)的尸體忽然破棺而出注暗,到底是詐尸還是另有隱情,我是刑警寧澤墓猎,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布捆昏,位于F島的核電站,受9級(jí)特大地震影響毙沾,放射性物質(zhì)發(fā)生泄漏骗卜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一左胞、第九天 我趴在偏房一處隱蔽的房頂上張望寇仓。 院中可真熱鬧,春花似錦烤宙、人聲如沸遍烦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)服猪。三九已至,卻和暖如春拐云,著一層夾襖步出監(jiān)牢的瞬間蔓姚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工慨丐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坡脐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓房揭,卻偏偏與公主長(zhǎng)得像备闲,于是被迫代替她去往敵國(guó)和親晌端。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,734評(píng)論 25 707
  • 今天的我們?cè)?0歲最好的年紀(jì)恬砂,正值青春的美好咧纠,面對(duì)身邊一個(gè)又一個(gè)誘惑,是接受還是拒絕泻骤? 我們都曾羨慕別...
    我太天真閱讀 858評(píng)論 3 3
  • 作者:海倉(cāng)小學(xué)一年級(jí) 宋怡辰 指導(dǎo)老師:陳歡歡 我們今天在花園里上課漆羔,剛一進(jìn)門就看見了漂亮的噴泉,噴泉的后面...
    歡樂顏晴閱讀 429評(píng)論 0 1
  • 天邊的那一抹亮光不知何時(shí)躲進(jìn)了大山的懷抱狱掂,巷子里的地?cái)偱艙跞艘矟u漸多了起來演痒。衣著略單薄的我穿梭在人群中,冷不丁的打...
    南小諗閱讀 314評(píng)論 1 2