diff --git a/.gitignore b/.gitignore
index 2152318d78..a340b1d6b3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,11 @@
# generated files
bin/
gen/
+generated/
+docs/
+finalOutput/
+
+build.xml
# Local configuration file (sdk path, etc)
local.properties
@@ -37,3 +42,5 @@ build/
# maven
target/
+
+.DS_Store
diff --git a/.settings/gradle/org.springsource.ide.eclipse.gradle.core.prefs b/.settings/gradle/org.springsource.ide.eclipse.gradle.core.prefs
new file mode 100644
index 0000000000..9383f623c6
--- /dev/null
+++ b/.settings/gradle/org.springsource.ide.eclipse.gradle.core.prefs
@@ -0,0 +1,4 @@
+#org.springsource.ide.eclipse.gradle.core.preferences.GradleProjectPreferences
+#Mon Jan 18 23:02:46 CET 2016
+build.family.org.gradle.tooling.model.eclipse.HierarchicalEclipseProject=;MPChartExample;MPChartLib;
+org.springsource.ide.eclipse.gradle.rootprojectloc=
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000000..2e4d5b866c
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,49 @@
+# How to contribute
+
+Bug-fixes and features often come from users of the MPAndroidChart library and improve it greatly. We want to keep it as easy as possible to contribute changes that improve the experience for users all around the world. There are a few guidelines that we
+need contributors to follow so that we can have a chance of keeping on
+top of things.
+
+## Simple issues and bug reports
+
+If you are reporting a bug which can be observed visually, please add to your issue either:
+
+* Screenshots, if the bug is easily explainable
+* A working sample project that we can compile, run, and immediately observe the issue
+
+## Getting Started with Contributions
+
+* Make sure you have a [GitHub account](https://github.com/signup/free)
+* Submit a ticket for your issue, assuming one does not already exist.
+ * Clearly describe the issue including steps to reproduce when it is a bug.
+ * Make sure you fill in the earliest version (or commit number) that you know has the issue.
+* Fork the repository on GitHub
+
+## Making Changes
+
+* Create a topic branch from where you want to base your work. This is usually the master branch.
+* Make commits of logical units.
+* Make sure your code conforms to the code style around it. It's easy, just look around!
+* If you have made changes back and forth, or have made merges, your commit history might look messy and hard to understand. A single issue or change should still be in one commit. So please squash those commits together and rebase them however you need to - to make our lives easier when reading it later.
+* Check for unnecessary whitespace with `git diff --check` before committing.
+* Make sure your commit messages are in the proper format.
+
+````
+ First line must be up to 50 chars (Fixes #1234)
+
+ The first line should be a short statement as to what have changed, and should also include an issue number, prefixed with a dash.
+ The body of the message comes after an empty new line, and describes the changes
+ more thoroughly, especially if there was a special case handled there,
+ or maybe some trickery that only code wizards can understand.
+````
+
+* Make sure you have tested your changes well.
+* If your changes could theoretically affect some other component or case, which you do not necessarily use, you still have to test it.
+* Create a Pull Request from your topic branch to the relevant branch in the main repo. If you go to the main repo of the framework, you'll see a big green button which pretty much prepares the PR for you. You just have to hit it.
+
+## Making Trivial Changes
+
+For changes of a trivial nature to comments and documentation, it is not
+always necessary to create a new ticket. In this case, it is
+appropriate to start the first line of a commit with '(doc)' instead of
+a ticket number. Even the default commit message the GitHub generates is fine with us.
diff --git a/MPChartExample/.settings/gradle/org.springsource.ide.eclipse.gradle.core.prefs b/MPChartExample/.settings/gradle/org.springsource.ide.eclipse.gradle.core.prefs
new file mode 100644
index 0000000000..be975eb2db
--- /dev/null
+++ b/MPChartExample/.settings/gradle/org.springsource.ide.eclipse.gradle.core.prefs
@@ -0,0 +1,3 @@
+#org.springsource.ide.eclipse.gradle.core.preferences.GradleProjectPreferences
+#Mon Jan 18 23:02:46 CET 2016
+org.springsource.ide.eclipse.gradle.rootprojectloc=..
diff --git a/MPChartExample/AndroidManifest.xml b/MPChartExample/AndroidManifest.xml
index 626e85c460..b1ac584a2e 100644
--- a/MPChartExample/AndroidManifest.xml
+++ b/MPChartExample/AndroidManifest.xml
@@ -1,17 +1,18 @@
+ android:versionCode="54"
+ android:versionName="3.0.1" >
+ android:minSdkVersion="16"
+ android:targetSdkVersion="24" />
-
+
-
+
+
+
@@ -44,9 +47,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MPChartExample/assets/othersine.txt b/MPChartExample/assets/othersine.txt
new file mode 100644
index 0000000000..142857b056
--- /dev/null
+++ b/MPChartExample/assets/othersine.txt
@@ -0,0 +1,8000 @@
+0.0#0
+0.09983341664682815#1
+0.19866933079506122#2
+0.2955202066613396#3
+0.3894183423086505#4
+0.479425538604203#5
+0.5646424733950354#6
+0.644217687237691#7
+0.7173560908995227#8
+0.7833269096274833#9
+0.8414709848078964#10
+0.8912073600614353#11
+0.9320390859672263#12
+0.963558185417193#13
+0.9854497299884603#14
+0.9974949866040544#15
+0.9995736030415051#16
+0.9916648104524686#17
+0.973847630878195#18
+0.9463000876874144#19
+0.9092974268256815#20
+0.8632093666488735#21
+0.8084964038195899#22
+0.7457052121767197#23
+0.6754631805511504#24
+0.5984721441039558#25
+0.5155013718214634#26
+0.42737988023382895#27
+0.33498815015590383#28
+0.23924932921398112#29
+0.1411200080598659#30
+0.04158066243328916#31
+-0.05837414342758142#32
+-0.15774569414324996#33
+-0.25554110202683294#34
+-0.3507832276896215#35
+-0.44252044329485407#36
+-0.5298361409084948#37
+-0.6118578909427207#38
+-0.6877661591839753#39
+-0.7568024953079294#40
+-0.8182771110644114#41
+-0.8715757724135886#42
+-0.9161659367494552#43
+-0.9516020738895161#44
+-0.977530117665097#45
+-0.9936910036334644#46
+-0.9999232575641008#47
+-0.9961646088358408#48
+-0.9824526126243328#49
+-0.958924274663139#50
+-0.9258146823277331#51
+-0.8834546557201545#52
+-0.8322674422239027#53
+-0.7727644875559894#54
+-0.7055403255703945#55
+-0.6312666378723244#56
+-0.5506855425976414#57
+-0.4646021794137613#58
+-0.37387666483024096#59
+-0.27941549819893097#60
+-0.18216250427210112#61
+-0.0830894028175026#62
+0.016813900484343496#63
+0.11654920485048659#64
+0.21511998808780858#65
+0.3115413635133711#66
+0.40484992061659103#67
+0.4941133511386012#68
+0.5784397643881929#69
+0.6569865987187824#70
+0.7289690401258698#71
+0.7936678638491472#72
+0.8504366206285593#73
+0.8987080958116223#74
+0.9379999767747351#75
+0.9679196720314837#76
+0.9881682338769986#77
+0.9985433453746043#78
+0.9989413418397726#79
+0.9893582466233836#80
+0.9698898108450894#81
+0.9407305566797773#82
+0.9021718337562995#83
+0.8545989080882879#84
+0.7984871126234988#85
+0.734397097874123#86
+0.662969230082194#87
+0.5849171928917747#88
+0.5010208564578985#89
+0.41211848524177114#90
+0.3190983623493673#91
+0.22288991410026324#92
+0.12445442350707933#93
+0.024775425453375525#94
+-0.07515112046179159#95
+-0.17432678122296213#96
+-0.27176062641092535#97
+-0.36647912925191023#98
+-0.457535893775304#99
+-0.5440211108893535#100
+-0.6250706488928668#101
+-0.6998746875935284#102
+-0.7676858097635688#103
+-0.8278264690856417#104
+-0.8796957599716599#105
+-0.9227754216127984#106
+-0.9566350162701817#107
+-0.980936230066487#108
+-0.9954362533063752#109
+-0.9999902065507036#110
+-0.9945525882039916#111
+-0.9791777291513221#112
+-0.9540192499020964#113
+-0.9193285256646855#114
+-0.8754521746884406#115
+-0.822828594968723#116
+-0.7619835839190494#117
+-0.6935250847771416#118
+-0.6181371122370543#119
+-0.5365729180004575#120
+-0.4496474645346253#121
+-0.3582292822368536#122
+-0.26323179136582836#123
+-0.16560417544833742#124
+-0.06632189735122905#125
+0.03362304722110829#126
+0.13323204141991404#127
+0.23150982510150958#128
+0.3274744391376645#129
+0.4201670368266135#130
+0.5086614643723477#131
+0.5920735147071987#132
+0.6695697621965786#133
+0.7403758899524271#134
+0.8037844265516019#135
+0.8591618148564795#136
+0.9059547423084483#137
+0.9436956694440937#138
+0.972007501394968#139
+0.9906073556948657#140
+0.9993093887479164#141
+0.9980266527163638#142
+0.9867719642746191#143
+0.9656577765492868#144
+0.9348950555246957#145
+0.8947911721405201#146
+0.8457468311429532#147
+0.7882520673753391#148
+0.7228813495120019#149
+0.6502878401571452#150
+0.5711968696600193#151
+0.4863986888538323#152
+0.3967405731306479#153
+0.3031183567457395#154
+0.20646748193783482#155
+0.10775365229948292#156
+0.007963183785976422#157
+-0.09190685022764096#158
+-0.19085858137414927#159
+-0.28790331666502617#160
+-0.3820714171839697#161
+-0.4724219863984317#162
+-0.558052271286747#163
+-0.6381066823479201#164
+-0.7117853423690981#165
+-0.7783520785342762#166
+-0.8371417780197293#167
+-0.8875670335814898#168
+-0.9291240127343579#169
+-0.961397491879549#170
+-0.9840650050816383#171
+-0.9969000660415941#172
+-0.9997744310730117#173
+-0.9926593804706357#174
+-0.9756260054681622#175
+-0.9488444979181307#176
+-0.9125824497911917#177
+-0.8672021794855902#178
+-0.8131571116614967#179
+-0.7509872467716855#180
+-0.6813137655555104#181
+-0.6048328224062927#182
+-0.5223085896267406#183
+-0.43456562207190313#184
+-0.34248061846961925#185
+-0.24697366173662777#186
+-0.14899902581420232#187
+-0.049535640878370965#188
+0.05042268780681122#189
+0.14987720966295234#190
+0.24783420798295983#191
+0.3433149288198987#192
+0.4353653603728964#193
+0.5230657651577025#194
+0.6055398697196067#195
+0.6819636200681407#196
+0.7515734153521554#197
+0.8136737375071116#198
+0.8676441006416744#199
+0.9129452507276334#200
+0.949124553647899#201
+0.9758205177669794#202
+0.9927664058359092#203
+0.9997929001426696#204
+0.9968297942787976#205
+0.9839066946186122#206
+0.9611527245021096#207
+0.9287952340772312#208
+0.887157528692338#209
+0.8366556385360404#210
+0.777794161801075#211
+0.71116122290596#212
+0.6374225961502142#213
+0.5573150535176319#214
+0.47163900309416484#215
+0.3812504916549073#216
+0.28705265132769103#217
+0.18998667579539935#218
+0.09102241619980542#219
+-0.008851309290446507#220
+-0.10863659542412214#221
+-0.20733642060680393#222
+-0.30396460881109105#223
+-0.39755568312147854#224
+-0.487174512460553#225
+-0.5719256551096047#226
+-0.6509623056662873#227
+-0.7234947560442817#228
+-0.7887982859754514#229
+-0.846220404175201#230
+-0.8951873678197072#231
+-0.9352099151945603#232
+-0.9658881542360861#233
+-0.986915558120659#234
+-0.9980820279794003#235
+-0.9992759921366252#236
+-0.9904855208971471#237
+-0.9717984457438473#238
+-0.9434014817545319#239
+-0.9055783620065937#240
+-0.8587070026098931#241
+-0.8032557266939103#242
+-0.7397785850778432#243
+-0.6689098203779662#244
+-0.5913575298650613#245
+-0.5078965903905548#246
+-0.4193609160731571#247
+-0.326635126104645#248
+-0.2306457059273127#249
+-0.13235175009768851#250
+-0.0327353793307601#251
+0.06720807252556354#252
+0.16648000353724682#253
+0.2640885213845585#254
+0.3590583540222545#255
+0.4504405942754718#256
+0.5373221810065527#257
+0.6188350221201147#258
+0.6941646682523136#259
+0.7625584504796671#260
+0.823333000738138#261
+0.875881079810939#262
+0.9196776446620603#263
+0.9542850944927288#264
+0.9793576431039386#265
+0.9946447738778491#266
+0.999993742857021#267
+0.9953511049115485#268
+0.9807632477451307#269
+0.9563759284044698#270
+0.9224328169230419#271
+0.8792730616506684#272
+0.8273279005953128#273
+0.7671163526354526#274
+0.6992400316550114#275
+0.624377135416297#276
+0.5432756692321434#277
+0.45674597214408225#278
+0.3656526202825023#279
+0.2709057883077459#280
+0.17345215524576615#281
+0.07426544558423022#282
+-0.025663299860690898#283
+-0.12533562609656307#284
+-0.223755640186928#285
+-0.31993996188432605#286
+-0.4129275492406663#287
+-0.501789301020694#288
+-0.5856373399744128#289
+-0.6636338842130738#290
+-0.734999618048874#291
+-0.7990214786597013#292
+-0.8550597807771457#293
+-0.9025546082102497#294
+-0.941031408343004#295
+-0.9701057337072216#296
+-0.9894870832545573#297
+-0.9989818049469563#298
+-0.9984950306638061#299
+-0.9880316240928376#300
+-0.9676961321337658#301
+-0.9376917403002256#302
+-0.8983182425572844#303
+-0.8499690458792419#304
+-0.7931272394571857#305
+-0.7283607678314815#306
+-0.6563167561776644#307
+-0.5777150444455955#308
+-0.49334099495663#309
+-0.40403764532290903#310
+-0.3106972850942102#311
+-0.21425254029571766#312
+-0.11566705493706401#313
+-0.015925862599924186#314
+0.08397445569192384#315
+0.18303572898076265#316
+0.28026816976919344#317
+0.37470026364963#318
+0.465388476355119#319
+0.5514266812418447#320
+0.6319552130070282#321
+0.7061694571804652#322
+0.7733278895663422#323
+0.8327594853078859#324
+0.8838704235459204#325
+0.9261500206806009#326
+0.9591758329531347#327
+0.9826178773641765#328
+0.9962419287548808#329
+0.9999118601072645#330
+0.9935910026803725#331
+0.9773425123922165#332
+0.9513287387867192#333
+0.9158096028907363#334
+0.8711400001690751#335
+0.8177662545263231#336
+0.7562216587859281#337
+0.6871211462045894#338
+0.6111551462624274#339
+0.529082686119843#340
+0.44172380666903255#341
+0.34995136895646245#342
+0.2546823328438221#343
+0.15686859504819245#344
+0.05748747810470466#345
+-0.04246803471717159#346
+-0.14199922097421971#347
+-0.24011159795399523#348
+-0.33582485921735605#349
+-0.42818266949635647#350
+-0.5162622200801217#351
+-0.5991834492144473#352
+-0.676117835387937#353
+-0.7462966756450723#354
+-0.8090187662120443#355
+-0.8636574086930742#356
+-0.9096666718336256#357
+-0.9465868462850383#358
+-0.974049037868381#359
+-0.9917788534431466#360
+-0.9995991425528098#361
+-0.9974317674536307#362
+-0.9852983838411613#363
+-0.9633202244736941#364
+-0.9317168878546153#365
+-0.8908041440767483#366
+-0.840990779751967#367
+-0.7827745135504952#368
+-0.7167370231604792#369
+-0.6435381333568037#370
+-0.5639092232500512#371
+-0.4786459185881904#372
+-0.38860014212710114#373
+-0.2946716015000064#374
+-0.19779879963620456#375
+-0.09894965755002794#376
+8.881568059804928E-4#377
+0.10071709699276916#378
+0.19953970523905196#379
+0.29636857870964317#380
+0.39023623530819473#381
+0.48020478043849585#382
+0.5653752781372515#383
+0.6448967329450791#384
+0.7179745927718371#385
+0.783878687798465#386
+0.8419505260924545#387
+0.8916098730415694#388
+0.9323605488662917#389
+0.9637953862841635#390
+0.9856002987906811#391
+0.997557418907825#392
+0.9995472750438832#393
+0.9915499852141032#394
+0.9736454556949117#395
+0.9460125826268136#396
+0.9089274645432923#397
+0.862760643685528#398
+0.8079734036668093#399
+0.7451131604791498#400
+0.6748079928936466#401
+0.5977603669050155#402
+0.5147401169235761#403
+0.42657675384429683#404
+0.33415117684813256#405
+0.23838687174859532#406
+0.1402406838267691#407
+0.040693257349552474#408
+-0.059260762703698414#409
+-0.15862266880501766#410
+-0.2563996696333202#411
+-0.35161480971710896#412
+-0.4433167308506074#413
+-0.5305891777504746#414
+-0.6125601529757225#415
+-0.6884106296379023#416
+-0.7573827348470396#417
+-0.8187873221270313#418
+-0.8720108571394337#419
+-0.9165215479157646#420
+-0.9518746583470648#421
+-0.9777169518400896#422
+-0.9937902207405829#423
+-0.9999338662588075#424
+-0.9960865031195645#425
+-0.9822865729035719#426
+-0.9586719599518976#427
+-0.9254786136712014#428
+-0.8830381910052587#429
+-0.831774742628409#430
+-0.7722004759713906#431
+-0.7049106374140062#432
+-0.6305775647800578#433
+-0.549943969560057#434
+-0.46381551598351894#435
+-0.3730527710882991#436
+-0.2785626062192159#437
+-0.18128913586934542#438
+-0.08220428440008934#439
+0.017701925105768793#440
+0.11743126282744855#441
+0.21598726618857098#442
+0.312385196181835#443
+0.4056618765556671#444
+0.49488531755294296#445
+0.5791640280445662#446
+0.6576559230141424#447
+0.7295767373931061#448
+0.7942078621780435#449
+0.8509035245343125#450
+0.8990972401447438#451
+0.9383074733336821#452
+0.9681424484122837#453
+0.9883040641716944#454
+0.9985908724117905#455
+0.9989000907450034#456
+0.989228629563962#457
+0.969673122911827#458
+0.9404289629468755#459
+0.9017883476486434#460
+0.8541373612723012#461
+0.7979521167223996#462
+0.7337939983901085#463
+0.6623040529859501#464
+0.5841965844129685#465
+0.5002520166782486#466
+0.4113090961542109#467
+0.318256511102111#468
+0.2220240121926944#469
+0.12357312274482915#470
+0.023887531502341068#471
+-0.07603673605875032#472
+-0.1752012696875459#473
+-0.2726152501434634#474
+-0.367305349134568#475
+-0.4583254544921258#476
+-0.5447661234106508#477
+-0.6257636692997951#478
+-0.7005087914552633#479
+-0.7682546613239306#480
+-0.8283243845678764#481
+-0.8801177643688576#482
+-0.923117298396518#483
+-0.9568933495206096#484
+-0.9811084386031781#485
+-0.995520616478555#486
+-0.9999858814294422#487
+-0.9944596180044706#488
+-0.9789970428010428#489
+-0.9537526527593436#490
+-0.918978681479984#491
+-0.8750225789892403#492
+-0.8223235401332446#493
+-0.7614081162882599#494
+-0.6928849542333831#495
+-0.6174387147531208#496
+-0.5358232317331488#497
+-0.4488539801013109#498
+-0.3573999278716999#499
+-0.26237485370350366#500
+-0.16472821672669768#501
+-0.06543566986026736#502
+0.03451068858925011#503
+0.13411222764610073#504
+0.2323737616559199#505
+0.32831349385182623#506
+0.42097282614317716#507
+0.5094259371108206#508
+0.5927890325086789#509
+0.6702291758437122#510
+0.740972610802025#511
+0.8043124923661843#512
+0.859615949376982#513
+0.9063304079728589#514
+0.9439891127252716#515
+0.9722157903046471#516
+0.9907284090791111#517
+0.9993419970813273#518
+0.9979704901872514#519
+0.9866275920404088#520
+0.9654266371296195#521
+0.9345794583882479#522
+0.8943942706295563#523
+0.8452725909661725#524
+0.7877052269838246#525
+0.7222673727541837#526
+0.6496128616858338#527
+0.5704676336369813#528
+0.48562248156435645#529
+0.3959251501813905#530
+0.3022718655732663#531
+0.20559838040212833#532
+0.10687062417580104#533
+0.007075051999440675#534
+-0.09279121175779685#535
+-0.19173033639984702#536
+-0.2887537548982128#537
+-0.38289204132693666#538
+-0.47320459704600304#539
+-0.5587890488520287#540
+-0.6387902651930264#541
+-0.712408900360203#542
+-0.7789093812860535#543
+-0.8376272571473031#544
+-0.8879758383378954#545
+-0.929452058477602#546
+-0.9616415008850029#547
+-0.984222539291978#548
+-0.9969695514270638#549
+-0.9997551733586085#550
+-0.9925515720730763#551
+-0.9754307235733183#552
+-0.948563693718144#553
+-0.9122189289888067#554
+-0.8667595742605005#555
+-0.8126398443788057#556
+-0.7504004857950958#557
+-0.6806633736067427#558
+-0.6041252979867081#559
+-0.5215510020864632#560
+-0.43376554097521025#561
+-0.3416460379623573#562
+-0.2461129206713498#563
+-0.14812072443110932#564
+-0.04864855487455499#565
+0.0513096949612317#566
+0.1507552752856959#567
+0.24869455873257396#568
+0.34414896835608744#569
+0.4361647552483109#570
+0.5238225280829925#571
+0.6062464393697752#572
+0.6826129366328042#573
+0.7521589910748351#574
+0.8141897215087521#575
+0.8680853373806932#576
+0.9133073315123875#577
+0.9494038606868752#578
+0.9760142603165708#579
+0.9928726480846032#580
+0.9998105805530361#581
+0.9967587361940206#582
+0.9837476080275863#583
+0.9609071989454651#584
+0.9284657227651701#585
+0.8867473239929686#586
+0.8361688390791232#587
+0.7772356315258688#588
+0.7105365424623492#589
+0.6367380071386995#590
+0.5565773961253213#591
+0.4708556477498852#592
+0.38042926538631583#593
+0.28620175955620214#594
+0.18911462035032636#595
+0.09013791037089226#596
+-0.009739427813336072#597
+-0.10951945285428034#598
+-0.20820519572462254#599
+-0.30481062110277163#600
+-0.3983704795118571#601
+-0.48794995177343276#602
+-0.5726539894116975#603
+-0.6516362576820022#604
+-0.7241075918678563#605
+-0.7893438823539132#606
+-0.8466933096898865#607
+-0.8955828573550356#608
+-0.935524037149826#609
+-0.966117770008547#610
+-0.9870583734654177#611
+-0.9981366159327402#612
+-0.999241807273761#613
+-0.9903629047819286#614
+-0.9715886235159662#615
+-0.9431065498883311#616
+-0.9052012673637889#617
+-0.8582515129955042#618
+-0.8027263932095995#619
+-0.7391806966488114#620
+-0.6682493509077604#621
+-0.5906410785463059#622
+-0.5071313157679993#623
+-0.418554464517864#624
+-0.3257955554139773#625
+-0.2297814048140864#626
+-0.131471354372927#627
+-0.03184768561752508#628
+0.06809419468512197#629
+0.1673557003034234#630
+0.26494504308473243#631
+0.3598871425747261#632
+0.4512333686989858#633
+0.5380710201611258#634
+0.6195324438524475#635
+0.6948037041549939#636
+0.7631327155171924#637
+0.8238367570440802#638
+0.8763092940188087#639
+0.9200260381970413#640
+0.9545501863217811#641
+0.9795367845171353#642
+0.9947361749534073#643
+0.9999964903456082#644
+0.9952651713611683#645
+0.9805894917754141#646
+0.9561160861276317#647
+0.9220894845972212#648
+0.8788496697389755#649
+0.8268286794897758#650
+0.7665462903883387#651
+0.6986048241398573#652
+0.6236831294166234#653
+0.542529799026492#654
+0.4559556902209967#655
+0.3648258228777264#656
+0.27005073650764577#657
+0.17257739244528622#658
+0.07337971212411498#659
+-0.026551154024492412#660
+-0.12621672981873175#661
+-0.2246211897703263#662
+-0.3207813090436296#663
+-0.41373628751317226#664
+-0.5025573497609173#665
+-0.5863570250932251#666
+-0.664298014854665#667
+-0.7356015584394067#668
+-0.7995552144097693#669
+-0.8555199789755651#670
+-0.9029366707087443#671
+-0.9413315176993833#672
+-0.9703208913280009#673
+-0.9896151393559127#674
+-0.9990214800346544#675
+-0.9984459283174868#676
+-0.9878942349269157#677
+-0.9674718288953736#678
+-0.9373827641531779#679
+-0.8979276806891099#680
+-0.849500800655026#681
+-0.7925859894284285#682
+-0.7277519209895582#683
+-0.6556463959189626#684
+-0.5769898687882292#685
+-0.4925682496160574#686
+-0.40322505131513814#687
+-0.30985296158995934#688
+-0.21338492349634555#689
+-0.1147848137828343#690
+-0.015037812152819907#691
+0.08485944232538563#692
+0.18390880930667822#693
+0.2811206202575485#694
+0.37552356689692795#695
+0.46617440618746125#696
+0.552167384908141#697
+0.6326432896410897#698
+0.7067980317480133#699
+0.773890681558078#700
+0.8332508714922635#701
+0.8842854941546171#702
+0.9264846284653002#703
+0.9594266346234597#704
+0.9827823669927427#705
+0.9963184628156941#706
+0.9998996738972894#707
+0.9934902179601922#708
+0.9771541361694416#709
+0.9510546532542999#710
+0.9154525466207135#711
+0.870703540749673#712
+0.8172547529157873#713
+0.7556402257392723#714
+0.6864755912086206#715
+0.610451919489274#716
+0.5283288139789675#717
+0.44092682160167046#718
+0.3491192341739591#719
+0.2538233627618576#720
+0.1559913722118884#721
+0.056600767434670324#722
+-0.04335537350102874#723
+-0.14287832187608665#724
+-0.2409736772882528#725
+-0.3366613033722623#726
+-0.42898512099840763#727
+-0.5170226610991652#728
+-0.5998942816751899#729
+-0.6767719568874018#730
+-0.7468875504174615#731
+-0.8095404904319502#732
+-0.8641047694645521#733
+-0.9100351992757256#734
+-0.9468728581933795#735
+-0.9742496765065195#736
+-0.9918921140961338#737
+-0.9996238935576413#738
+-0.9973677615064493#739
+-0.9851462604682352#740
+-0.9630815036414816#741
+-0.9313939547827625#742
+-0.8904002254057634#743
+-0.8405099113036936#744
+-0.7822215000035158#745
+-0.7161173900433542#746
+-0.6428580718388172#747
+-0.5631755282810933#748
+-0.47786592100586434#749
+-0.38778163540941735#750
+-0.29382276389552614#751
+-0.19692811244968383#752
+-0.09806582040002382#753
+0.001776312910822753#754
+0.10160069789023536#755
+0.2004099222810544#756
+0.29721671697515395#757
+0.3910538204800225#758
+0.480983643475862#759
+0.5661076368981451#760
+0.645575269942848#761
+0.7185925282890948#762
+0.7844298476277866#763
+0.8424294032270155#764
+0.8920116826993384#765
+0.9326812762979901#766
+0.9640318268873135#767
+0.9857500901289341#768
+0.9976190643156452#769
+0.9995201585807343#770
+0.9914343778187229#771
+0.9734425124781813#772
+0.945724331330272#773
+0.9085567852786125#774
+0.8623112401573938#775
+0.807449766166722#776
+0.7445205210199198#777
+0.6741522729328512#778
+0.5970481181797517#779
+0.5139784559876693#780
+0.4257732909620477#781
+0.33331393995507175#782
+0.23752422623900496#783
+0.1393612489694287#784
+0.03980582016685425#785
+-0.06014733523277261#786
+-0.15949951834081932#787
+-0.2572580349851358#788
+-0.3524461143820813#789
+-0.44411266870731736#790
+-0.5313417960509607#791
+-0.6132619318067095#792
+-0.6890545570572891#793
+-0.7579623769449068#794
+-0.8192968873111423#795
+-0.8724452540029098#796
+-0.9168764361087397#797
+-0.9521464919440266#798
+-0.9779030147695946#799
+-0.9938886539233454#800
+-0.9999436861830043#801
+-0.9960076116677604#802
+-0.9821197583330767#803
+-0.9584188890187596#804
+-0.9251418149765318#805
+-0.882621029730285#806
+-0.8312813869106968#807
+-0.7716358552581907#808
+-0.7042803932088473#809
+-0.6298879942747078#810
+-0.5492019627150644#811
+-0.463028486686005#812
+-0.37222858307484785#813
+-0.277709494504018#814
+-0.18041562446265824#815
+-0.0813191011391443#816
+0.018589935762430915#817
+0.1183132281708837#818
+0.2168543739126067#819
+0.3132287824327208#820
+0.406473512498437#821
+0.4956568935895487#822
+0.5798878348422998#823
+0.6583247285347402#824
+0.7301838591528853#825
+0.7947472340170689#826
+0.8513697572274626#827
+0.8994856752490656#828
+0.9386142297340143#829
+0.9683644611000755#830
+0.9884391148695585#831
+0.998637611737797#832
+0.9988580516952584#833
+0.9890982321787556#834
+0.9694556700787299#835
+0.9401266273827171#836
+0.9014041501904432#837
+0.853675140694064#838
+0.7974164913793547#839
+0.7331903200736304#840
+0.6616383534502285#841
+0.5834755151077143#842
+0.4994827822896071#843
+0.41049938261791885#844
+0.31741440880816796#845
+0.22115793514885987#846
+0.12269172450663844#847
+0.022999618709638837#848
+-0.07692229167484431#849
+-0.17607561994804152#850
+-0.2734696588295798#851
+-0.36813127927714384#852
+-0.4591146536701932#853
+-0.5455107062068977#854
+-0.6264561960890486#855
+-0.701142342738765#856
+-0.7688229068666809#857
+-0.8288216466482501#858
+-0.880539074508522#859
+-0.9234584470038253#860
+-0.9571509279514455#861
+-0.9812798732190074#862
+-0.9956041943613665#863
+-0.9999807674966593#864
+-0.9943658633528207#865
+-0.9788155841960154#866
+-0.9534853032753393#867
+-0.9186281123846742#868
+-0.8745922930531441#869
+-0.8218178366312031#870
+-0.7608320480425032#871
+-0.6922442771274011#872
+-0.6167398302207777#873
+-0.5350731227976723#874
+-0.4480601416032317#875
+-0.35657029158288345#876
+-0.2615177090755071#877
+-0.16385212806530994#878
+-0.06454939075379683#879
+0.035398302732936385#880
+0.13499230807988533#881
+0.23323751490702455#882
+0.3291522895832851#883
+0.4217782833853109#884
+0.5101900080011152#885
+0.5935040827033676#886
+0.6708880607976146#887
+0.7415687471544812#888
+0.8048399237198179#889
+0.8600694058120545#890
+0.9067053587025647#891
+0.9442818113658633#892
+0.9724233123080624#893
+0.990848680954091#894
+0.999373817111055#895
+0.9979135404365095#896
+0.9864824415322831#897
+0.9651947361600082#898
+0.9342631240349845#899
+0.8939966636009335#900
+0.8447976840201904#901
+0.7871577652337052#902
+0.7216528262567685#903
+0.6489373707865839#904
+0.5697379476176754#905
+0.4848458912064981#906
+0.3951094149191295#907
+0.30142513596369747#908
+0.20472911668761928#909
+0.1059875117520471#910
+0.006186914633861963#911
+-0.09367550009022263#912
+-0.19260194018240928#913
+-0.2896039653540304#914
+-0.3837123634341776#915
+-0.47398683441733475#916
+-0.5595253856302109#917
+-0.6394733441443728#918
+-0.7130318963856286#919
+-0.7794660696152083#920
+-0.8381120755344199#921
+-0.888383942637911#922
+-0.9297793710472535#923
+-0.9618847513252905#924
+-0.9843792971249118#925
+-0.9970382503801957#926
+-0.9997351270147091#927
+-0.9924429807285888#928
+-0.9752346722370627#929
+-0.9482821412702676#930
+-0.9118546886083012#931
+-0.8663162853168473#932
+-0.8121219360685991#933
+-0.7498131328869748#934
+-0.6800124447368134#935
+-0.6034172970210714#936
+-0.5207930031367345#937
+-0.4329651177163347#938
+-0.3408111879589536#939
+-0.2452519854686876#940
+-0.1472423062091467#941
+-0.047761430497799545#942
+0.05219666163925169#943
+0.15163322198712595#944
+0.2495547133041842#945
+0.3449827364177279#946
+0.43696380606511737#947
+0.524578877803335#948
+0.6069525307972649#949
+0.6832617147353013#950
+0.7527439734759979#951
+0.8147050632577988#952
+0.8685258893532176#953
+0.9136686918587087#954
+0.9496824188138638#955
+0.9762072329635024#956
+0.9929781071325793#957
+0.9998274722901109#958
+0.9966868918435423#959
+0.9835877454345576#960
+0.9606609154040736#961
+0.9281354790591521#962
+0.8863364198082719#963
+0.8356813800345357#964
+0.7766764881510327#965
+0.7099113015330387#966
+0.6360529158556042#967
+0.5558392996940816#968
+0.4700719209860606#969
+0.3796077390286655#970
+0.28535064202453175#971
+0.1882424157296708#972
+0.08925333344150882#973
+-0.010627538651171125#974
+-0.11040222389064579#975
+-0.20907380660312846#976
+-0.3056563929506449#977
+-0.3991849616563692#978
+-0.4887250061782283#979
+-0.5733818719893634#980
+-0.6523096956704291#981
+-0.7247198564972739#982
+-0.7898888560785331#983
+-0.8471655473123978#984
+-0.8959776404332164#985
+-0.9358374211416584#986
+-0.9663466236847766#987
+-0.9872004101957622#988
+-0.9981904165331424#989
+-0.9992068341864074#990
+-0.9902395074463488#991
+-0.9713780348775489#992
+-0.9428108740791415#993
+-0.9048234586787762#994
+-0.8577953463741634#995
+-0.8021964265180238#996
+-0.7385822251390002#997
+-0.6675883543092127#998
+-0.5899241613185386#999
+-0.5063656411109719#1000
+-0.41774768279965196#1001
+-0.3249557277308229#1002
+-0.22891692244659007#1003
+-0.1305908549431452#1004
+-0.03095996678470595#1005
+0.06898026312784167#1006
+0.16823126505305938#1007
+0.26580135578772984#1008
+0.3607156472376163#1009
+0.45202578717704495#1010
+0.5388194348708605#1011
+0.6202293768814718#1012
+0.6954421919788581#1013
+0.7637063785766175#1014
+0.8243398634874052#1015
+0.8767368169727581#1016
+0.9203737059935807#1017
+0.9548145251792146#1018
+0.9797151532489783#1019
+0.9948267913582519#1020
+0.9999984490142912#1021
+0.9951784527233196#1022
+0.9804149622949977#1023
+0.955855489645524#1024
+0.9217454249073299#1025
+0.8784255845719909#1026
+0.8263288061645024#1027
+0.7659756234738067#1028
+0.697969065551239#1029
+0.6229886314435827#1030
+0.5417835008632049#1031
+0.4551650486320175#1032
+0.3639987376924607#1033
+0.2691954716878667#1034
+0.17170249351436012#1035
+0.07249392078295652#1036
+-0.02743898724160609#1037
+-0.1270977339757739#1038
+-0.225486562164981#1039
+-0.3216224031609835#1040
+-0.41454469941883354#1041
+-0.5033250020703501#1042
+-0.5870762476783056#1043
+-0.6649616214810665#1044
+-0.7362029185690774#1045
+-0.8000883194510767#1046
+-0.8559795023191575#1047
+-0.9033180209492709#1048
+-0.9416308845112984#1049
+-0.9705352835370772#1050
+-0.989742414826066#1051
+-0.9990603670714583#1052
+-0.9983960383745241#1053
+-0.987756066488005#1054
+-0.9672467624938841#1055
+-0.9370730485781962#1056
+-0.8975364105162827#1057
+-0.8490318853265837#1058
+-0.79204411419133#1059
+-0.7271425000820525#1060
+-0.6549755184733097#1061
+-0.5762642379901035#1062
+-0.4917951157285321#1063
+-0.40241213923645325#1064
+-0.3090083936688921#1065
+-0.21251713837638628#1066
+-0.11390248208604994#1067
+-0.014149749845864671#1068
+0.08574436201749502#1069
+0.18478174455889376#1070
+0.28197284898938413#1071
+0.37634657392060444#1072
+0.466959968288848#1073
+0.5529076530103934#1074
+0.63333086723003#1075
+0.7074260487756557#1076
+0.7744528630858774#1077
+0.8337416003882263#1078
+0.8846998672178285#1079
+0.926818505417086#1080
+0.9596766794756827#1081
+0.9829460813798933#1082
+0.9963942109577327#1083
+0.9998866989438198#1084
+0.9933886495526604#1085
+0.9769649891458017#1086
+0.9507798175090885#1087
+0.915094768221848#1088
+0.8702663945006491#1089
+0.8167426066374239#1090
+0.7550581966278896#1091
+0.6858294947067065#1092
+0.6097482111795045#1093
+0.5275745250821587#1094
+0.4401294887231446#1095
+0.3482868240002752#1096
+0.2529641924603128#1097
+0.15511402632813187#1098
+0.05571401211876051#1099
+-0.04424267808309759#1100
+-0.1437573100702344#1101
+-0.24183556653499838#1102
+-0.33749748195915497#1103
+-0.42978723410541103#1104
+-0.5177826942772574#1105
+-0.600604640924089#1106
+-0.6774255445323065#1107
+-0.7474778360266712#1108
+-0.8100615760667802#1109
+-0.864551448609587#1110
+-0.910403008860601#1111
+-0.9471581231863048#1112
+-0.9744495466339814#1113
+-0.9920045923218871#1114
+-0.9996478560364346#1115
+-0.9973029688131155#1116
+-0.9849933599899484#1117
+-0.9628420231092787#1118
+-0.9310702870069596#1119
+-0.8899956043677858#1120
+-0.840028379843203#1121
+-0.7816678694236923#1122
+-0.7154971920379454#1123
+-0.6421775032212828#1124
+-0.5624413890680937#1125
+-0.4770855464737418#1126
+-0.3869628228025392#1127
+-0.29297369451879685#1128
+-0.19605726992365072#1129
+-0.0971819058953447#1130
+0.0026644676126004055#1131
+0.1024842186409163#1132
+0.20127998123335095#1133
+0.29806462078761803#1134
+0.3918710971780397#1135
+0.48176212710082145#1136
+0.5668395490989988#1137
+0.6462532976948229#1138
+0.7192098969630194#1139
+0.7849803886799459#1140
+0.8429076158332012#1141
+0.8924127887172654#1142
+0.9330012680089154#1143
+0.9642675070398367#1144
+0.9858991038848767#1145
+0.9976799227788151#1146
+0.9994922536734847#1147
+0.9913179883576629#1148
+0.9732388013883325#1149
+0.9454353340255065#1150
+0.9081853893244696#1151
+0.8618611564194799#1152
+0.8069254917329687#1153
+0.743927294267167#1154
+0.6734960211867176#1155
+0.5963353984907568#1156
+0.5132163896153517#1157
+0.42496949222169395#1158
+0.3324764401379949#1159
+0.2366613933665366#1160
+0.13848170418241593#1161
+0.038918351586070044#1162
+-0.06103386031462717#1163
+-0.16037624205817258#1164
+-0.2581161974044102#1165
+-0.35327714102805435#1166
+-0.4449082562364434#1167
+-0.5320939952156349#1168
+-0.6139632268815225#1169
+-0.6896979409336707#1170
+-0.7585414211438385#1171
+-0.819805806214395#1172
+-0.8728789626610285#1173
+-0.9172306010481774#1174
+-0.9524175744657799#1175
+-0.9780883063067141#1176
+-0.9939863031040413#1177
+-0.9999527173289418#1178
+-0.9959279345427144#1179
+-0.9819521690445431#1180
+-0.9581650620635117#1181
+-0.9248042865096023#1182
+-0.8822031722245435#1183
+-0.8307873754602152#1184
+-0.771070625862084#1185
+-0.7036495934524011#1186
+-0.629197926900574#1187
+-0.5484595226483394#1188
+-0.46224109214241743#1189
+-0.37140410144039926#1190
+-0.27685616372666233#1191
+-0.1795419707414492#1192
+-0.08043385373327268#1193
+0.019477931753509533#1194
+0.1191951001847589#1195
+0.217721310575624#1196
+0.31407212160031445#1197
+0.40728482780441533#1198
+0.49642807863955946#1199
+0.5806111842102433#1200
+0.6589930147528394#1201
+0.730790404926155#1202
+0.7952859789406399#1203
+0.851835318340144#1204
+0.8998734008181136#1205
+0.938920245733708#1206
+0.9685857099197014#1207
+0.988573385864046#1208
+0.9986835633157533#1209
+0.9988152247237061#1210
+0.9889670545706377#1211
+0.9692374525173453#1212
+0.9398235502258059#1213
+0.9010192416847732#1214
+0.8532122467181903#1215
+0.7968802370168715#1216
+0.7325860634008656#1217
+0.6609721320001158#1218
+0.5827539855447597#1219
+0.4987131538986974#1220
+0.409689345271531#1221
+0.3165720561317042#1222
+0.22029168365181864#1223
+0.12181022948763352#1224
+0.022111687775516597#1225
+-0.07780778661170105#1226
+-0.17694983131492942#1227
+-0.27432385179549673#1228
+-0.36895691902833305#1229
+-0.45990349068718106#1230
+-0.5462548586909652#1231
+-0.6271482287145591#1232
+-0.70177534094448#1233
+-0.7693905459437702#1234
+-0.8293182549346921#1235
+-0.8809596900584754#1236
+-0.9237988671657521#1237
+-0.9574077513596155#1238
+-0.9814505337788207#1239
+-0.9956869868889223#1240
+-0.9999748647563899#1241
+-0.9942713243229557#1242
+-0.9786333534792907#1243
+-0.953217201660839#1244
+-0.9182768186551078#1245
+-0.8741613172193351#1246
+-0.8213114848612212#1247
+-0.7602553796358565#1248
+-0.6916030539641876#1249
+-0.616040459190884#1250
+-0.5343225917852477#1251
+-0.4472659496660599#1252
+-0.35574037402427566#1253
+-0.2606603581573747#1254
+-0.1629759101546243#1255
+-0.06366306073028243#1256
+0.03628588895266636#1257
+0.1358722820277203#1258
+0.2341010841741585#1259
+0.3299908256710588#1260
+0.42258340791831867#1261
+0.510953676441162#1262
+0.5942186647278355#1263
+0.6715464165391247#1264
+0.7421642985400877#1265
+0.805366720196939#1266
+0.8605221838044265#1267
+0.9070795942021564#1268
+0.9445737651352686#1269
+0.9726300672417244#1270
+0.9909681712250566#1271
+0.9994048488120352#1272
+0.9978558035090056#1273
+0.9863365128645896#1274
+0.9649620738231349#1275
+0.9339460527140935#1276
+0.8935983513678535#1277
+0.8443221106790897#1278
+0.7866096825562044#1279
+0.7210377105038093#1280
+0.6482613679914285#1281
+0.5690078121768063#1282
+0.48406891839188965#1283
+0.3942933679863122#1284
+0.3005781685838748#1285
+0.20385969147888025#1286
+0.10510431572368364#1287
+0.005298772388643717#1288
+-0.09455971452856225#1289
+-0.1934733920354848#1290
+-0.2904539473629896#1291
+-0.38453238285975366#1292
+-0.4747686978964897#1293
+-0.5602612810415106#1294
+-0.6401559186641225#1295
+-0.7136543299548559#1296
+-0.7800221430834386#1297
+-0.8385962327993722#1298
+-0.8887913461602351#1299
+-0.9301059501856239#1300
+-0.9621272430089094#1301
+-0.9845352784570335#1302
+-0.9971061628469102#1303
+-0.9997142920570979#1304
+-0.9923336065226613#1305
+-0.9750378516137301#1306
+-0.9479998407961381#1307
+-0.9114897289363962#1308
+-0.8658723130035688#1309
+-0.8116033871385435#1310
+-0.749225188509642#1311
+-0.6793609794580729#1312
+-0.6027088200666426#1313
+-0.5200345933741548#1314
+-0.43216435292525485#1315
+-0.3399760691164684#1316
+-0.24439085680621755#1317
+-0.14636377183963595#1318
+-0.04687426844626337#1319
+0.05308358714285112#1320
+0.15251104907633528#1321
+0.25041467102089904#1322
+0.3458162323487072#1323
+0.43776251219453577#1324
+0.5253348137235645#1325
+0.6076581434464698#1326
+0.6839099538651353#1327
+0.753328362095355#1328
+0.8152197623487677#1329
+0.8689657562126182#1330
+0.9140293314822825#1331
+0.9499602278097037#1332
+0.9763994355559533#1333
+0.9930827828968712#1334
+0.9998435753406082#1335
+0.9966142612838874#1336
+0.9834271069652942#1337
+0.9604138740716864#1338
+0.9278045032189735#1339
+0.8859248164614908#1340
+0.8351932617857352#1341
+0.7761167321164042#1342
+0.7092855006098496#1343
+0.6353673228398167#1344
+0.5551007648044826#1345
+0.4692878234191396#1346
+0.37878591322812316#1347
+0.28449929940210755#1348
+0.1873700626194315#1349
+0.08836868610737038#1350
+-0.011515641105471527#1351
+-0.11128490783895244#1352
+-0.2099422525592064#1353
+-0.306501923689571#1354
+-0.3999991289144955#1355
+-0.4894996750654395#1356
+-0.57410930227021#1357
+-0.6529826191020013#1358
+-0.7253315494510825#1359
+-0.7904332067207822#1360
+-0.8476371166714086#1361
+-0.8963717167438338#1362
+-0.9361500669236509#1363
+-0.9665747150848376#1364
+-0.9873416682000192#1365
+-0.9982434297383107#1366
+-0.9991710729020646#1367
+-0.9901153289874269#1368
+-0.9711666799941617#1369
+-0.9425144545594192#1370
+-0.9044449362485765#1371
+-0.857338503104486#1372
+-0.8016658270358069#1373
+-0.7379831710188773#1374
+-0.6669268311019312#1375
+-0.5892067787453151#1376
+-0.5055995670213429#1377
+-0.41694057155269054#1378
+-0.3241156437153132#1379
+-0.2280522595043203#1380
+-0.12971025250041487#1381
+-0.03007222353003439#1382
+0.06986627715730269#1383
+0.1691066970980048#1384
+0.2666574588205459#1385
+0.36154386735978916#1386
+0.45281784908688705#1387
+0.5395674245475895#1388
+0.6209258206594904#1389
+0.6960801312221501#1390
+0.7642794392071385#1391
+0.8248423196727637#1392
+0.8771636483368399#1393
+0.9207206477784876#1394
+0.9550781108573155#1395
+0.9798927491593076#1396
+0.9949166230211789#1397
+0.9999996188615343#1398
+0.9950909490661519#1399
+0.9802396594410367#1400
+0.9555941391629392#1401
+0.9214006381237522#1402
+0.8780008064829905#1403
+0.8258282810123316#1404
+0.7654043523403342#1405
+0.6973327563887936#1406
+0.6222936420429795#1407
+0.5410367753288019#1408
+0.4543740479985197#1409
+0.36317136537672806#1410
+0.2683399945205851#1411
+0.1708274591406018#1412
+0.07160807225693622#1413
+-0.028326798814238986#1414
+-0.1279786378752571#1415
+-0.226351756690739#1416
+-0.32246324357531025#1417
+-0.415352784322254#1418
+-0.5040922573456266#1419
+-0.5877950071643484#1420
+-0.6656247035706814#1421
+-0.7368036979652107#1422
+-0.8006207933645937#1423
+-0.8564383504467267#1424
+-0.9036986586320765#1425
+-0.941929508543436#1426
+-0.9707489101659298#1427
+-0.9898689095649735#1428
+-0.9990984660268033#1429
+-0.9983453608741385#1430
+-0.987617118884721#1431
+-0.9670209331062237#1432
+-0.9367625938187515#1433
+-0.8971444323463876#1434
+-0.848562300262541#1435
+-0.7915016141718754#1436
+-0.7265325055880536#1437
+-0.6543041243681132#1438
+-0.5755381526216753#1439
+-0.4910215939018614#1440
+-0.40159890972594#1441
+-0.30816358199498733#1442
+-0.211649185618078#1443
+-0.1130200605403922#1444
+-0.013261676377251867#1445
+0.08662921407252257#1446
+0.1856545340510954#1447
+0.2828248552946596#1448
+0.37716928407358735#1449
+0.46774516204164157#1450
+0.5536474849665701#1451
+0.6340179452332398#1452
+0.7080535077696084#1453
+0.7750144337077156#1454
+0.8342316716099273#1455
+0.8851135424097409#1456
+0.9271516512734351#1457
+0.9599259673131953#1458
+0.9831090203969006#1459
+0.9964691731214373#1460
+0.999872935257061#1461
+0.9932862975376467#1462
+0.9767750714700341#1463
+0.9505042317672048#1464
+0.9147362679754845#1465
+0.8698285617657631#1466
+0.816229816093974#1467
+0.7544755719094801#1468
+0.6851828572069336#1469
+0.609044021886516#1470
+0.5268198200225961#1471
+0.43933180866049054#1472
+0.34745413909003786#1473
+0.2521048226148663#1474
+0.15423655808690193#1475
+0.05482721285436108#1476
+-0.04512994776555348#1477
+-0.14463618486537203#1478
+-0.24269726501638209#1479
+-0.3383333943203984#1480
+-0.4305890081865166#1481
+-0.518542319016638#1482
+-0.6013145264024473#1483
+-0.6780785978085996#1484
+-0.748067532008433#1485
+-0.8105820227066887#1486
+-0.8649974457768529#1487
+-0.910770100298956#1488
+-0.9474426410394413#1489
+-0.97464864809356#1490
+-0.9921162880319376#1491
+-0.9996710299703442#1492
+-0.9972373894245966#1493
+-0.9848396825265736#1494
+-0.962601783065463#1495
+-0.930745884781808#1496
+-0.8895902812810987#1497
+-0.8395461857492807#1498
+-0.7811136222465291#1499
+-0.7148764296321258#1500
+-0.6414964280395691#1501
+-0.5617068061885679#1502
+-0.4763047956057153#1503
+-0.38614370495060346#1504
+-0.292124394037764#1505
+-0.19518627274318584#1506
+-0.09629791473136161#1507
+0.0035526202125998304#1508
+0.10336765854973708#1509
+0.20214988141145054#1510
+0.2989122894799676#1511
+0.3926880647592674#1512
+0.4825402307009092#1513
+0.5675710141639814#1514
+0.6469308156675612#1515
+0.7198266983078874#1516
+0.7855303105217932#1517
+0.843385163534764#1518
+0.892813190779766#1519
+0.9333205237473006#1520
+0.9645024265563005#1521
+0.9860473399412646#1522
+0.9977399942494521#1523
+0.9994635603440932#1524
+0.9912008169225054#1525
+0.9730343225856573#1526
+0.9451455909399181#1527
+0.9078132769731031#1528
+0.8614103928259461#1529
+0.8064005807780915#1530
+0.7433334806876951#1531
+0.6728392381716484#1532
+0.5956222083988731#1533
+0.5124539184063026#1534
+0.42416535825576057#1535
+0.3316386780559536#1536
+0.23579837381018381#1537
+0.13760205015788235#1538
+0.03803085230559389#1539
+-0.06192033725160367#1540
+-0.16125283926712547#1541
+-0.2589741562157922#1542
+-0.35410788900102547#1543
+-0.44570349281186655#1544
+-0.5328457746525187#1545
+-0.6146640376482388#1546
+-0.6903407807606958#1547
+-0.7591198669881154#1548
+-0.8203140784362564#1549
+-0.8733119827724461#1550
+-0.9175840424553352#1551
+-0.9526879056989698#1552
+-0.9782728263056137#1553
+-0.9940831682058159#1554
+-0.9999609596895136#1555
+-0.9958474718071414#1556
+-0.9817838051698816#1557
+-0.9579104792859435#1558
+-0.9244660285360871#1559
+-0.8817846188169394#1560
+-0.8302927086658156#1561
+-0.7705047882279834#1562
+-0.7030182386411985#1563
+-0.6285073632008448#1564
+-0.5477166499443011#1565
+-0.4614533329725679#1566
+-0.370579326833965#1567
+-0.2760026145588766#1568
+-0.17866817539345065#1569
+-0.07954854287934016#1570
+0.02036591237996836#1571
+0.12007687817485184#1572
+0.21858807549515108#1573
+0.3149152130207141#1574
+0.408095821834904#1575
+0.49719887209586344#1576
+0.5813340755789376#1577
+0.6596607811423243#1578
+0.7313963742354008#1579
+0.7958240965246156#1580
+0.8523002075058284#1581
+0.9002604165466352#1582
+0.9392255210918378#1583
+0.9688061946969714#1584
+0.9887068770494445#1585
+0.998728727109482#1586
+0.9987716098640673#1587
+0.9888350968428918#1588
+0.9690184703994884#1589
+0.9395197317147739#1590
+0.9006336224346992#1591
+0.8527486797091522#1592
+0.7963433540571888#1593
+0.7319812288476018#1594
+0.6603053891601949#1595
+0.5820319962922426#1596
+0.49794313211153723#1597
+0.4088789847528897#1598
+0.31572945373601446#1599
+0.21942525838369095#1600
+0.12092863838194484#1601
+0.021223739399179705#1602
+-0.07869322017202651#1603
+-0.1778239030997941#1604
+-0.275177828368556#1605
+-0.369782267737956#1606
+-0.46069196492188513#1607
+-0.5469985802768322#1608
+-0.6278397666313447#1609
+-0.7024077855739117#1610
+-0.7699575781081692#1611
+-0.8298142090361076#1612
+-0.8813796106874666#1613
+-0.9241385586142015#1614
+-0.9576638195428573#1615
+-0.9816204201482128#1616
+-0.9957689939960187#1617
+-0.9999681732132844#1618
+-0.994176000989335#1619
+-0.9784503507943949#1620
+-0.9529483481270028#1621
+-0.91792480056797#1622
+-0.8737296518272608#1623
+-0.8208044852221184#1624
+-0.7596781115225273#1625
+-0.6909612852488008#1626
+-0.6153406022143034#1627
+-0.5335716392870412#1628
+-0.4464714049153578#1629
+-0.35491017584958534#1630
+-0.2598028016244306#1631
+-0.16209956368483314#1632
+-0.06277668048788872#1633
+0.03717344654927897#1634
+0.13675214879643402#1635
+0.2349644687770656#1636
+0.33082910145460404#1637
+0.42338819910797#1638
+0.511716941829381#1639
+0.5949327780191651#1640
+0.6722042425496124#1641
+0.742759264489685#1642
+0.8058928813825473#1643
+0.8609742829974049#1644
+0.9074531141768128#1645
+0.9448649738034854#1646
+0.9728360549427497#1647
+0.9910868797978722#1648
+0.9994350921598212#1649
+0.9977972794502282#1650
+0.9861898061522987#1651
+0.9647286503023048#1652
+0.9336282446753849#1653
+0.8931993342441357#1654
+0.8438458713175653#1655
+0.78606097938315#1656
+0.7204220259799529#1657
+0.6475848538330251#1658
+0.5682772278896909#1659
+0.48329156373276017#1660
+0.3934770100259633#1661
+0.2997309641011942#1662
+0.20299010546101035#1663
+0.10422103678666807#1664
+0.0044106259636479345#1665
+-0.09544385437604187#1666
+-0.19434469127235002#1667
+-0.29130370025527885#1668
+-0.3853520989574582#1669
+-0.47555018686732337#1670
+-0.5609967345060028#1671
+-0.6408379882143644#1672
+-0.714276200577364#1673
+-0.7805776012525157#1674
+-0.8390797285606031#1675
+-0.8891980485837959#1676
+-0.9304317956353363#1677
+-0.9623689757447501#1678
+-0.9846904831654123#1679
+-0.9971732887736847#1680
+-0.9996926685021967#1681
+-0.9922234495414972#1682
+-0.9748402618584459#1683
+-0.9477167925182539#1684
+-0.9111240502607415#1685
+-0.8654276576705933#1686
+-0.8110841979973509#1687
+-0.7486366531265098#1688
+-0.6787089782840057#1689
+-0.6019998676818485#1690
+-0.5192757733965142#1691
+-0.43136324723315195#1692
+-0.3391406820931682#1693
+-0.24352953536271474#1694
+-0.14548512201507893#1695
+-0.04598706941925612#1696
+0.053970470772899765#1697
+0.1533887558613586#1698
+0.25127443120483245#1699
+0.34664945549199166#1700
+0.4385608730069506#1701
+0.5260903352477752#1702
+0.6083632767611484#1703
+0.6845576535112877#1704
+0.753912156472218#1705
+0.8157338183759043#1706
+0.8694049376121297#1707
+0.9143892500987989#1708
+0.9502372874553822#1709
+0.976590867942398#1710
+0.9931866752949559#1711
+0.9998588896918333#1712
+0.996540844572318#1713
+0.9832656927464438#1714
+0.9601660751430733#1715
+0.9274727955055809#1716
+0.8855125142771431#1717
+0.8347044847175692#1718
+0.775556363863317#1719
+0.7086591401861929#1720
+0.6346812286318964#1721
+0.5543617920388316#1722
+0.4685033556673605#1723
+0.3779637886326811#1724
+0.2836477323602019#1725
+0.18649756170745438#1726
+0.08748396906602378#1727
+-0.012403734475959032#1728
+-0.11216750400318758#1729
+-0.21081053290806362#1730
+-0.30734721265281995#1731
+-0.40081298064423065#1732
+-0.49027395782420097#1733
+-0.5748362796806161#1734
+-0.6536550274460741#1735
+-0.7259426702469165#1736
+-0.7909769338513953#1737
+-0.848108017395044#1738
+-0.8967650859761198#1739
+-0.9364619742492493#1740
+-0.966802044028854#1741
+-0.9874821473667896#1742
+-0.9982956555064372#1743
+-0.9991345234489356#1744
+-0.9899903695030964#1745
+-0.970954559032491#1746
+-0.9422172915629393#1747
+-0.9040657003717193#1748
+-0.8568809835467744#1749
+-0.8011345951814257#1750
+-0.7373835347609137#1751
+-0.666264781807661#1752
+-0.5884889313924426#1753
+-0.5048330941033291#1754
+-0.41613313141356995#1755
+-0.32327530403005167#1756
+-0.2271874166692736#1757
+-0.12882954773931182#1758
+-0.029184456553725577#1759
+0.07075223607464673#1760
+0.16998199574774103#1761
+0.26751335150790145#1762
+0.3623718022879524#1763
+0.45360955380373474#1764
+0.5403149886012937#1765
+0.6216217746371384#1766
+0.6967175213816488#1767
+0.7648518969567075#1768
+0.8253441252037987#1769
+0.8775897877743497#1770
+0.9210668632780755#1771
+0.9553409431481533#1772
+0.9800695721080259#1773
+0.9950056698713242#1774
+0.9999999998864149#1775
+0.995002660458693#1776
+0.9800635833518199#1777
+0.9553320348860447#1778
+0.9210551245184746#1779
+0.8775753358070623#1780
+0.8253271044281046#1781
+0.7648324774385712#1782
+0.6966958971544762#1783
+0.6215981617630594#1784
+0.5402896230123407#1785
+0.4535826889444879#1786
+0.36234370658320497#1787
+0.26748430568064796#1788
+0.1699522900142862#1789
+0.0707221672448598#1790
+-0.029214588042036787#1791
+-0.12885944082227627#1792
+-0.22721677266508764#1793
+-0.32330382962330895#1794
+-0.4161605415859719#1795
+-0.5048591149814937#1796
+-0.5885133029843566#1797
+-0.6662872606004342#1798
+-0.7374038961538791#1799
+-0.8011526357302755#1800
+-0.8568965229963079#1801
+-0.9040785834568934#1802
+-0.9422273895602254#1803
+-0.9709617710460383#1804
+-0.9899946234728495#1805
+-0.9991357768706348#1806
+-0.9982938958563073#1807
+-0.9874773922266732#1808
+-0.966794340910539#1809
+-0.9364514001197477#1810
+-0.8967517464886383#1811
+-0.848092045833332#1812
+-0.790958489798018#1813
+-0.7259219379887585#1814
+-0.6536322141330055#1815
+-0.5748116132557202#1816
+-0.49024768474624164#1817
+-0.4007853634251181#1818
+-0.30731852723467856#1819
+-0.21078106590610934#1820
+-0.11213754984196339#1821
+-0.012373592447542393#1822
+0.08751399779244858#1823
+0.18652717709477906#1824
+0.2836766385012659#1825
+0.37799169670687793#1826
+0.46852998682643804#1827
+0.5543868801930514#1828
+0.6347045231087146#1829
+0.7086804082348972#1830
+0.7755753929805951#1831
+0.8347210847707713#1832
+0.8855265194040249#1833
+0.9274840657715442#1834
+0.960174497939346#1835
+0.9832711839152297#1836
+0.9965433492476736#1837
+0.9998583828478708#1838
+0.9931831619958922#1839
+0.9765843832919562#1840
+0.9502278962460459#1841
+0.9143770461644276#1842
+0.8693900428904013#1843
+0.8157163816899551#1844
+0.7538923520436499#1845
+0.6845356792194047#1846
+0.6083393521658111#1847
+0.5260646993956318#1848
+0.43853378204296184#1849
+0.3466211801001145#1850
+0.25124525390343583#1851
+0.1533589681803935#1852
+0.05394037034102778#1853
+-0.04601718184846958#1854
+-0.145514945568195#1855
+-0.24355877205264906#1856
+-0.3391690397965793#1857
+-0.4313904426092411#1858
+-0.5193015347180733#1859
+-0.6020239375502678#1860
+-0.6787311162011166#1861
+-0.7486566378975624#1862
+-0.8111018299411188#1863
+-0.8654427606145227#1864
+-0.9111364733012091#1865
+-0.9477264115283458#1866
+-0.9748469807281929#1867
+-0.9922272011381739#1868
+-0.9996934153410891#1869
+-0.9971710233926254#1870
+-0.98468522819934#1871
+-0.9623607836995489#1872
+-0.9304207483632138#1873
+-0.8891842564654433#1874
+-0.8390633294023081#1875
+-0.7805587589092471#1876
+-0.7142551033155872#1877
+-0.6408148468309454#1878
+-0.5609717802219951#1879
+-0.47552366901768395#1880
+-0.3853242824997751#1881
+-0.29127486312240225#1882
+-0.1943151215953794#1883
+-0.09541384760541509#1884
+0.0044407700101977065#1885
+0.10425101691979201#1886
+0.20301962212912839#1887
+0.2997597223835154#1888
+0.39350472257923697#1889
+0.48331795366231456#1890
+0.5683020315160732#1891
+0.6476078233265996#1892
+0.7204429318371323#1893
+0.7860796127195201#1894
+0.8438620459549884#1895
+0.8932128885709812#1896
+0.9336390432612995#1897
+0.9647365852513876#1898
+0.9861947981811614#1899
+0.9977992786801687#1900
+0.9994340786151946#1901
+0.9910828636056814#1902
+0.9728290762314595#1903
+0.9448551023020723#1904
+0.9074404485180556#1905
+0.8609589497323792#1906
+0.8058750337161689#1907
+0.7427390807499367#1908
+0.6721819244057498#1909
+0.5949085484667043#1910
+0.5116910429620009#1911
+0.42336088969859254#1912
+0.3308006543698204#1913
+0.23493516825074362#1914
+0.1367222875897472#1915
+0.03714332302553373#1916
+-0.06280676534440063#1917
+-0.16212930927617017#1918
+-0.25983191074247675#1919
+-0.35493835764565523#1920
+-0.4464983778062608#1921
+-0.5335971337685674#1922
+-0.6153643635540208#1923
+-0.6909830760312574#1924
+-0.7596977140214278#1925
+-0.8208217035757736#1926
+-0.8737443139955725#1927
+-0.9179367600513992#1928
+-0.9529574854303443#1929
+-0.9784565746207341#1930
+-0.9941792491522566#1931
+-0.999968413258218#1932
+-0.9957662235245147#1933
+-0.9816146668419067#1934
+-0.9576551408868839#1935
+-0.9241270413228225#1936
+-0.8813653698376505#1937
+-0.8297973869177182#1938
+-0.7699383428022528#1939
+-0.7023863292732867#1940
+-0.6278163037202744#1941
+-0.5469733451889683#1942
+-0.4606652097978839#1943
+-0.36975425990617233#1944
+-0.27514884767398695#1945
+-0.1777942391079601#1946
+-0.07866316927572836#1947
+0.021253876941319732#1948
+0.12095856144556782#1949
+0.21945466798743643#1950
+0.3157580560288433#1951
+0.40890649395014667#1952
+0.49796927335041663#1953
+0.5820565083781266#1954
+0.6603280271764242#1955
+0.7320017666026011#1956
+0.7963615863444993#1957
+0.8527644243577857#1958
+0.9006467221293312#1959
+0.9395300555675856#1960
+0.9690259152579552#1961
+0.9888395883204489#1962
+0.9987731030833557#1963
+0.998727207150748#1964
+0.9887023590996133#1965
+0.9687987238979044#1966
+0.9392151720892897#1967
+0.9002472927444187#1968
+0.8522844400326369#1969
+0.7958058429238293#1970
+0.731375816890965#1971
+0.6596381254564291#1972
+0.5813095479197075#1973
+0.49717271753556175#1974
+0.40806830170125163#1975
+0.3148866022857897#1976
+0.2185586600279604#1977
+0.12004695188501968#1978
+0.020335774281090385#1979
+-0.07957859165734228#1980
+-0.17869783461311994#1981
+-0.27603158787509413#1982
+-0.37060732475493247#1983
+-0.46148007575231387#1984
+-0.5477418703778104#1985
+-0.6285308092938824#1986
+-0.7030396761281532#1987
+-0.7705240029125717#1988
+-0.8303095085612607#1989
+-0.8817988360642393#1990
+-0.9244775210812064#1991
+-0.9579191322991703#1992
+-0.9817895321931679#1993
+-0.9958502156179638#1994
+-0.9999606928726213#1995
+-0.9940798934271551#1996
+-0.9782665762856902#1997
+-0.9526787428859168#1998
+-0.9175720584009519#1999
+-0.8732972972174424#2000
+-0.8202968381138436#2001
+-0.759100244157896#2002
+-0.6903189714875031#2003
+-0.6146402598431213#2004
+-0.5328202658954452#2005
+-0.44567650797790564#2006
+-0.3540796977137181#2007
+-0.25894504015316233#2008
+-0.16122308934724644#2009
+-0.0618902507258409#2010
+0.03806097482262027#2011
+0.13763190769193942#2012
+0.23582766803466082#2013
+0.33166711627264295#2014
+0.4241926563194016#2015
+0.5124798035636668#2016
+0.5956464220140248#2017
+0.6728615383101487#2018
+0.7433536445339318#2019
+0.8064184068615782#2020
+0.8614257030343491#2021
+0.9078259183318809#2022
+0.9451554371407925#2023
+0.9730412752486439#2024
+0.9912048065788938#2025
+0.9994645471305557#2026
+0.9977379683063444#2027
+0.9860423215111407#2028
+0.9644944657816552#2029
+0.9333097001695628#2030
+0.8927996125445465#2031
+0.8433689663113009#2032
+0.7855116561473892#2033
+0.7198057731708851#2034
+0.6469078288450127#2035
+0.5675461953326192#2036
+0.48251382784229224#2037
+0.3926603416820314#2038
+0.29888352318393624#2039
+0.20212035931994485#2040
+0.1033376756377367#2041
+0.003522476059450432#2042
+-0.09632791893524607#2043
+-0.19521583720571825#2044
+-0.29215322336060745#2045
+-0.38617151108069375#2046
+-0.47633130071339214#2047
+-0.5617317454435568#2048
+-0.6415195522570779#2049
+-0.7148975077626172#2050
+-0.7811324436842906#2051
+-0.8395625624367278#2052
+-0.8896040495877838#2053
+-0.9307569071393618#2054
+-0.9626099493421324#2055
+-0.9848449111276216#2056
+-0.9972396281075698#2057
+-0.9996702563670624#2058
+-0.9921125098719891#2059
+-0.97464190312707#2060
+-0.9474329966598855#2061
+-0.9107576528697868#2062
+-0.864982319668668#2063
+-0.8105643690545611#2064
+-0.7480475272018192#2065
+-0.6780564417289145#2066
+-0.6012904404259155#2067
+-0.5185165438023752#2068
+-0.4305618012719435#2069
+-0.338305027548012#2070
+-0.24266802181759525#2071
+-0.1446063574285605#2072
+-0.04509983411660629#2073
+0.054857311829817915#2074
+0.15426634164985503#2075
+0.2521339931777998#2076
+0.34748240519032947#2077
+0.43935888787260957#2078
+0.5268454417800063#2079
+0.6090679301850868#2080
+0.6852048131628486#2081
+0.7544953561460856#2082
+0.8162472309337178#2083
+0.8698434332053228#2084
+0.9147484474243518#2085
+0.9505135975323528#2086
+0.9767815299718332#2087
+0.993289784244882#2088
+0.9998734153317062#2089
+0.9964666417667453#2090
+0.9831035029053308#2091
+0.9599175188136995#2092
+0.9271403561806276#2093
+0.8850995135804554#2094
+0.8342150492155885#2095
+0.7749953838337934#2096
+0.7080322207561459#2097
+0.633994633773039#2098
+0.5536223819800354#2099
+0.4677185183495166#2100
+0.37714136589083663#2101
+0.2827959415705366#2102
+0.18562491368197392#2103
+0.08659918301533971#2104
+-0.013291818062099673#2105
+-0.11305001168715346#2106
+-0.21167864696479485#2107
+-0.308192259173622#2108
+-0.4016265162036029#2109
+-0.49104785384375327#2110
+-0.5755628036471371#2111
+-0.6543269201722473#2112
+-0.7265532184027201#2113
+-0.7915200370414769#2114
+-0.8485782491118543#2115
+-0.8971577478197825#2116
+-0.9367731428724192#2117
+-0.967028610337507#2118
+-0.9876218475852627#2119
+-0.9983470937963259#2120
+-0.9990971858558507#2121
+-0.9898646290919259#2122
+-0.970741672159859#2123
+-0.9419193853241061#2124
+-0.9036857513473486#2125
+-0.8564227880619233#2126
+-0.8006027313739196#2127
+-0.7367833168381062#2128
+-0.6656022069486314#2129
+-0.5877706198261639#2130
+-0.5040662229615295#2131
+-0.4153253630192043#2132
+-0.32243470933790386#2133
+-0.22632239462364384#2134
+-0.1279487413545418#2135
+-0.02829666655605602#2136
+0.07163813918102345#2137
+0.17085716031182666#2138
+0.26836903317466254#2139
+0.3631994513690255#2140
+0.45440090070308614#2141
+0.5410621264422896#2142
+0.6223172382654424#2143
+0.6973543619545768#2144
+0.7654237513737662#2145
+0.8258452796846828#2146
+0.8780152349491458#2147
+0.9214123522192472#2148
+0.9556030218444039#2149
+0.9802456219556541#2150
+0.995093931838447#2151
+0.9999995920886321#2152
+0.9949135869705855#2153
+0.9798867341662368#2154
+0.9550691770215901#2155
+0.9207088843640407#2156
+0.8771491728798204#2157
+0.824825276807153#2158
+0.7642599992196163#2159
+0.6960584883506457#2160
+0.6209021911524217#2161
+0.5395420445031802#2162
+0.4527909720941514#2163
+0.3615157619647542#2164
+0.2666284058430285#2165
+0.16907698682575256#2166
+0.06983620644553508#2167
+-0.030102354224705447#2168
+-0.1297401421220481#2169
+-0.22808160940569652#2170
+-0.3241441606419197#2171
+-0.41696797057282303#2172
+-0.5056255743730492#2173
+-0.5892311345717338#2174
+-0.6669492920476956#2175
+-0.7380035126616422#2176
+-0.8016838461286017#2177
+-0.8573540196064917#2178
+-0.9044577951240342#2179
+-0.9425245273266959#2180
+-0.9711738660094966#2181
+-0.99011955645053#2182
+-0.9991722995735218#2183
+-0.9982416433616265#2184
+-0.9873368866240788#2185
+-0.9665669860855675#2186
+-0.9361394677266565#2187
+-0.896358353252788#2188
+-0.8476211224098967#2189
+-0.7904147414981781#2190
+-0.7253107977657867#2191
+-0.6529597882979938#2192
+-0.5740846204653375#2193
+-0.48947338887213754#2194
+-0.3999715009757185#2195
+-0.3064732300545506#2196
+-0.2099127799252589#2197
+-0.11125495068689388#2198
+-0.01148549875726277#2199
+0.08839871247934979#2200
+0.18739967300159813#2201
+0.28452819793731066#2202
+0.3788138111717516#2203
+0.4693144420241625#2204
+0.5551258381065974#2205
+0.6353906003148769#2206
+0.709306749677019#2207
+0.7761357404620275#2208
+0.8352098394847063#2209
+0.8859387978749215#2210
+0.9278157486492024#2211
+0.9604222711580919#2212
+0.9834325718069646#2213
+0.9966167392779312#2214
+0.999843041727728#2215
+0.9930792430087505#2216
+0.9763929247619841#2217
+0.9499508111635871#2218
+0.9140171030720339#2219
+0.8689508382204706#2220
+0.8152023038303673#2221
+0.7533085374904468#2222
+0.6838879612546183#2223
+0.6076342025732385#2224
+0.5253091637969104#2225
+0.43773540950004725#2226
+0.34578794768754867#2227
+0.2503854870040551#2228
+0.15248125730085532#2229
+0.05305348527830788#2230
+-0.046904379631989734#2231
+-0.1463935914855311#2232
+-0.24442008696423675#2233
+-0.3400044177285349#2234
+-0.43219153674140776#2235
+-0.5200603407826888#2236
+-0.6027328738079627#2237
+-0.6793830991951469#2238
+-0.7492451532293688#2239
+-0.8116209973600432#2240
+-0.8658873927713292#2241
+-0.9115021275783626#2242
+-0.9480094344291783#2243
+-0.9750445443814343#2244
+-0.9923373315531067#2245
+-0.9997150121310117#2246
+-0.9971038707695518#2247
+-0.9845299971300822#2248
+-0.9621190252016383#2249
+-0.9300948780076469#2250
+-0.8887775302410945#2251
+-0.8385798111831653#2252
+-0.780003279849526#2253
+-0.7136332135784356#2254
+-0.6401327601330475#2255
+-0.5602363117481685#2256
+-0.4747421673258055#2257
+-0.3845045560964199#2258
+-0.2904251024428272#2259
+-0.19344381716740122#2260
+-0.09452970521486317#2261
+0.005328916304815557#2262
+0.10513429305428211#2263
+0.2038892027003272#2264
+0.3006069188298006#2265
+0.3943210699937632#2266
+0.4840952953715645#2267
+0.569032600578643#2268
+0.64828432013791#2269
+0.7210585970646649#2270
+0.7866282948398333#2271
+0.8443382627177061#2272
+0.8936118817756269#2273
+0.9339568262996617#2274
+0.9649699829403923#2275
+0.9863414784882509#2276
+0.9978577760242008#2277
+0.9994038085100443#2278
+0.9909641285002334#2279
+0.9726230624876389#2280
+0.9445638683411081#2281
+0.9070669042534167#2282
+0.8605068274948806#2283
+0.8053488509617559#2284
+0.7421440949227586#2285
+0.6715240804075154#2286
+0.5941944192571897#2287
+0.5109277638842079#2288
+0.42255608718475995#2289
+0.3299623697406341#2290
+0.23407177736911827#2291
+0.135842417171973#2292
+0.03625576444597857#2293
+-0.0636931438937977#2294
+-0.16300565139394135#2295
+-0.26068946030786144#2296
+-0.3557685463068644#2297
+-0.44729291059261544#2298
+-0.534348071971104#2299
+-0.6160642040464467#2300
+-0.6916248262387088#2301
+-0.7602749617879662#2302
+-0.8213286812325286#2303
+-0.8741759559893822#2304
+-0.9182887535581434#2305
+-0.9532263134472572#2306
+-0.9786395511071335#2307
+-0.9942745458675742#2308
+-0.9999750780291754#2309
+-0.9956841897589236#2310
+-0.9814447541940361#2311
+-0.9573990470677456#2312
+-0.9237873251372041#2313
+-0.8809454256173832#2314
+-0.8293014106066361#2315
+-0.7693712900317081#2316
+-0.7017538658471201#2317
+-0.6271247490039753#2318
+-0.5462296089686645#2319
+-0.45987672324004214#2320
+-0.3689289013078397#2321
+-0.2742948637454506#2322
+-0.17692016257434437#2323
+-0.07777773362082588#2324
+0.022141824737131294#2325
+0.12184014930142922#2326
+0.2203210873689061#2327
+0.3166006499598618#2328
+0.4097168435106797#2329
+0.4987392817955214#2330
+0.5827784820379505#2331
+0.6609947523288111#2332
+0.7326065815502183#2333
+0.7968984479763155#2334
+0.8532279685298386#2335
+0.901032317261481#2336
+0.9398338489207327#2337
+0.9692448714293358#2338
+0.9889715195723757#2339
+0.9988166912023702#2340
+0.9986820166187732#2341
+0.9885688414455068#2342
+0.968578213185931#2343
+0.9389098715895922#2344
+0.8998602529186711#2345
+0.8518195280548398#2346
+0.7952677040407854#2347
+0.7307698280085084#2348
+0.6589703414151602#2349
+0.5805866409970266#2350
+0.49640191077847906#2351
+0.407257296756089#2352
+0.31404350244587664#2353
+0.21769188926820557#2354
+0.1191651706923382#2355
+0.019447793121681437#2356
+-0.08046390036926145#2357
+-0.17957162516554395#2358
+-0.27688512964165996#2359
+-0.37143208942845196#2360
+-0.4622678225568002#2361
+-0.5484847284075876#2362
+-0.6292213561570731#2363
+-0.7036710121087649#2364
+-0.7710898199101781#2365
+-0.8308041531194559#2366
+-0.8822173658581055#2367
+-0.9248157542993909#2368
+-0.9581736894271621#2369
+-0.9819578697802895#2370
+-0.9959306516906896#2371
+-0.9999524237403014#2372
+-0.993983001712226#2373
+-0.9780820300981395#2374
+-0.9524083861502476#2375
+-0.917218592432299#2376
+-0.8728642537309242#2377
+-0.8197885439368322#2378
+-0.7585217779977886#2379
+-0.6896761131869558#2380
+-0.6139394326297725#2381
+-0.532068472203148#2382
+-0.44488125948072355#2383
+-0.35324894027176074#2384
+-0.2580870744201778#2385
+-0.16034648783323305#2386
+-0.061003772143360675#2387
+0.03894847307260204#2388
+0.13851155802027681#2389
+0.23669068126604687#2390
+0.33250486946414387#2391
+0.4249967789180523#2392
+0.5132422610422692#2393
+0.5963595961494876#2394
+0.6735183033022544#2395
+0.7439474382039768#2396
+0.8069432962194937#2397
+0.861876443559176#2398
+0.9081980063732902#2399
+0.9454451549180705#2400
+0.9732457279975278#2401
+0.9913219514750999#2402
+0.9994932137010042#2403
+0.9976778701241392#2404
+0.9858940590574525#2405
+0.9642595204459123#2406
+0.9329904194478973#2407
+0.8923991865843892#2408
+0.8428913960364823#2409
+0.7849617132822316#2410
+0.7191889525627104#2411
+0.6462302935614438#2412
+0.5668147150822461#2413
+0.4817357113339816#2414
+0.39184336359872296#2415
+0.2980358465005815#2416
+0.20125045374175918#2417
+0.1024542329737048#2418
+0.0026343233766439834#2419
+-0.09721190750880472#2420
+-0.19608682914840989#2421
+-0.29300251600885235#2422
+-0.3869906185830895#2423
+-0.47711203881853564#2424
+-0.5624663132743792#2425
+-0.6422006102546296#2426
+-0.7155182510205144#2427
+-0.7816866699410908#2428
+-0.840044734046876#2429
+-0.890009348851936#2430
+-0.9310812844412447#2431
+-0.9628501636109706#2432
+-0.9849985622218451#2433
+-0.9973051807962356#2434
+-0.999647055669374#2435
+-0.9920007876016487#2436
+-0.9744427755760723#2437
+-0.9471484534448972#2438
+-0.9103905370525548#2439
+-0.8645362993490856#2440
+-0.8100439007202268#2441
+-0.7474578112002859#2442
+-0.6774033703075353#2443
+-0.6005805388584559#2444
+-0.5177569051906351#2445
+-0.42976001567382827#2446
+-0.33746910614018294#2447
+-0.2418063168504405#2448
+-0.14372747877327008#2449
+-0.0442125632381852#2450
+0.05574410961404525#2451
+0.155143805749565#2452
+0.2529933562617591#2453
+0.34831508078667095#2454
+0.44015655616202054#2455
+0.5276001327246129#2456
+0.6097721031624384#2457
+0.6858514323093241#2458
+0.7550779606569172#2459
+0.8167599996172166#2460
+0.8702812426463021#2461
+0.9151069231755982#2462
+0.9507891578226558#2463
+0.9769714214938605#2464
+0.9933921096653152#2465
+0.9998871522487686#2466
+0.9963916529257024#2467
+0.9829405375698944#2468
+0.959668205279632#2469
+0.9268071855063493#2470
+0.8846858146972121#2471
+0.8337249556658711#2472
+0.774433792470347#2473
+0.7074047428142367#2474
+0.633307538804846#2475
+0.5528825352113574#2476
+0.4669333120847054#2477
+0.3763186456513355#2478
+0.28194392770502347#2479
+0.18475211923135468#2480
+0.08571432865325745#2481
+-0.014179891163352991#2482
+-0.11393243019470806#2483
+-0.212546594044612#2484
+-0.3090370625853853#2485
+-0.402439734950877#2486
+-0.49182136251362973#2487
+-0.5762888735966745#2488
+-0.6549982967505166#2489
+-0.7271631934368789#2490
+-0.7920625158626148#2491
+-0.8490478114509101#2492
+-0.8975497019650812#2493
+-0.9370835725477036#2494
+-0.9672544138320761#2495
+-0.9877607687452395#2496
+-0.9983977445674013#2497
+-0.9990590601522629#2498
+-0.9897381078531023#2499
+-0.9705280195441958#2500
+-0.9416207360779147#2501
+-0.9033050894751768#2502
+-0.8559639170113676#2503
+-0.8000702360328346#2504
+-0.7361825177239204#2505
+-0.664939107047496#2506
+-0.5870518446130994#2507
+-0.5032989542008693#2508
+-0.4145172670067797#2509
+-0.32159386030194986#2510
+-0.22545719404978#2511
+-0.12706783404090483#2512
+-0.027408854237334586#2513
+0.07252398577761245#2514
+0.17173219009991203#2515
+0.26922450314584817#2516
+0.36402681395014#2517
+0.4551918891607088#2518
+0.5418088374812179#2519
+0.6230122109958052#2520
+0.6979906524385796#2521
+0.7659950020072227#2522
+0.8263457827200938#2523
+0.8784399895256259#2524
+0.9217571143294733#2525
+0.9558643467393337#2526
+0.9804208985633203#2527
+0.9951814088529242#2528
+0.9999983954685079#2529
+0.9948237286720926#2530
+0.9797091120237905#2531
+0.9548055657769237#2532
+0.9203619179335726#2533
+0.8767223180374318#2534
+0.8243227985453299#2535
+0.7636869181350534#2536
+0.6954205304801045#2537
+0.620205730760064#2538
+0.5387940403910272#2539
+0.45199889807203436#2540
+0.3606875321744773#2541
+0.26577229568287974#2542
+0.16820155026545985#2543
+0.068950190557828#2544
+-0.03099009666195487#2545
+-0.13062074107985552#2546
+-0.2289462662303628#2547
+-0.32498423596827036#2548
+-0.41777507064588915#2549
+-0.5063916349156925#2550
+-0.5899485013602381#2551
+-0.6676107973902402#2552
+-0.738602547015509#2553
+-0.8022144241405411#2554
+-0.8578108399163944#2555
+-0.9048362933343682#2556
+-0.9428209216084585#2557
+-0.9713851948889993#2558
+-0.9902437083994649#2559
+-0.9992080341066545#2560
+-0.9981886034313139#2561
+-0.9871956021877676#2562
+-0.966338868810637#2563
+-0.9358267968855071#2564
+-0.8959642529491038#2565
+-0.8471495303636348#2566
+-0.7898703697011723#2567
+-0.7246990854010827#2568
+-0.6522868473933305#2569
+-0.5733571748237859#2570
+-0.48869870689008327#2571
+-0.39915732301944756#2572
+-0.30562769112106847#2573
+-0.20904432836008902#2574
+-0.11037226377100239#2575
+-0.010597396006535125#2576
+0.0892833574357961#2577
+0.18827202108378255#2578
+0.2853795329315549#2579
+0.37963562682020546#2580
+0.4700985270165206#2581
+0.5558643581247975#2582
+0.6360761763110162#2583
+0.7099325316023618#2584
+0.7766954757104277#2585
+0.8356979353665813#2586
+0.8863503774975581#2587
+0.9281466996450561#2588
+0.9606692867742049#2589
+0.9835931839449478#2590
+0.9966893431543875#2591
+0.9998269119087179#2592
+0.992974540658088#2593
+0.9762006960309414#2594
+0.9496729767380968#2595
+0.9136564389818304#2596
+0.8685109481019182#2597
+0.8146875829201173#2598
+0.7527241287096857#2599
+0.6832397038226994#2600
+0.6069285736641322#2601
+0.5245532138214233#2602
+0.43693669166044735#2603
+0.34495444250846585#2604
+0.2495255225937167#2605
+0.15160342613938146#2606
+0.052166558364490814#2607
+-0.047791540417606526#2608
+-0.14727212192563383#2609
+-0.24528120907307063#2610
+-0.3408395274586362#2611
+-0.4329922899524019#2612
+-0.520818736613183#2613
+-0.6034413346175079#2614
+-0.6800345462775168#2615
+-0.7498330775406523#2616
+-0.8121395245548596#2617
+-0.8663313418973455#2618
+-0.911867062842657#2619
+-0.9482917095192162#2620
+-0.9752413388978184#2621
+-0.9924466791900753#2622
+-0.9997358203231163#2623
+-0.9970359316082094#2624
+-0.9843739894409296#2625
+-0.9618765077619307#2626
+-0.9297682739714707#2627
+-0.888370102928013#2628
+-0.8380956314722081#2629
+-0.7794471855043118#2630
+-0.713010760909837#2631
+-0.6394501684823696#2632
+-0.5595004013455463#2633
+-0.4739602911447193#2634
+-0.38368452638521455#2635
+-0.28957511266730906#2636
+-0.19257236014443638#2637
+-0.0936454882549586#2638
+0.006217058398080305#2639
+0.10601748625869184#2640
+0.2047586224413277#2641
+0.3014538781527306#2642
+0.3951371063610338#2643
+0.48487225521753735#2644
+0.5697627207773633#2645
+0.6489603055696946#2646
+0.7216736935065267#2647
+0.7871763564514449#2648
+0.8448138134486051#2649
+0.8940101700801013#2650
+0.934273872612625#2651
+0.9652026194398814#2652
+0.986487380747257#2653
+0.9979154862355749#2654
+0.9993727500524254#2655
+0.9908446116994578#2656
+0.9724162815160672#2657
+0.9442718892858502#2658
+0.9066926444726718#2659
+0.860054026468659#2660
+0.8048220329282305#2661
+0.7415485236735729#2662
+0.6708657066937176#2663
+0.5934798213312947#2664
+0.5101640817724733#2665
+0.42175095134640345#2666
+0.32912382482680763#2667
+0.23320820184341287#2668
+0.13496243959558005#2669
+0.035368177263958724#2670
+-0.06457947220371922#2671
+-0.16388186493227264#2672
+-0.26154680423856425#2673
+-0.3565984543327818#2674
+-0.4480870905470817#2675
+-0.5350985886705324#2676
+-0.6167635585760615#2677
+-0.6922660308792223#2678
+-0.7608516098345607#2679
+-0.8218350110085325#2680
+-0.8746069084150397#2681
+-0.918640022699266#2682
+-0.9534943895386959#2683
+-0.9788217556211913#2684
+-0.9943690582769701#2685
+-0.9999809539971505#2686
+-0.9956013705747425#2687
+-0.9812740673596052#2688
+-0.9571421980294875#2689
+-0.9234468802458005#2690
+-0.8805247864856478#2691
+-0.8288047801217232#2692
+-0.7688036303612542#2693
+-0.7011208488589045#2694
+-0.6264326995944929#2695
+-0.54548544186685#2696
+-0.4590878739175849#2697
+-0.3681032516864081#2698
+-0.2734406634431365#2699
+-0.17604594647820584#2700
+-0.07689223660911715#2701
+0.023029755070976092#2702
+0.12272164105102494#2703
+0.22118733296007248#2704
+0.31744299415299343#2705
+0.4105268698810389#2706
+0.4995088968273724#2707
+0.5834999959922931#2708
+0.6616609560767109#2709
+0.7332108186040404#2710
+0.797434680999148#2711
+0.8536908396585681#2712
+0.9014172016407891#2713
+0.9401369009131222#2714
+0.9694630630394689#2715
+0.9891026707018031#2716
+0.9988594914323538#2717
+0.9986360383035573#2718
+0.988434543985213#2719
+0.9683569384363839#2720
+0.9386038304549402#2721
+0.8994725032607627#2722
+0.8513539441400785#2723
+0.7947289378297411#2724
+0.730163262675065#2725
+0.6583020375596216#2726
+0.5798632760906015#2727
+0.4956307124441966#2728
+0.4064459705527783#2729
+0.31320015487677#2730
+0.2168249467834381#2731
+0.11828329549464342#2732
+0.018559796616524828#2733
+-0.08134914561433308#2734
+-0.18044527407266456#2735
+-0.2777384529997385#2736
+-0.37225656111256417#2737
+-0.4630552047184104#2738
+-0.5492271537844082#2739
+-0.6299114066801492#2740
+-0.7043017930213666#2741
+-0.7716550286579311#2742
+-0.8312981423233815#2743
+-0.8826351997413644#2744
+-0.9251532580039342#2745
+-0.9584274907275325#2746
+-0.9821254327777841#2747
+-0.9960103021512207#2748
+-0.9999433658227904#2749
+-0.9938853259203851#2750
+-0.9778967123761879#2751
+-0.9521372781315993#2752
+-0.9168644029386548#2753
+-0.8724305217066197#2754
+-0.8192796030888767#2755
+-0.7579427134948966#2756
+-0.6890327108502228#2757
+-0.6132381211226626#2758
+-0.531316258798414#2759
+-0.4440856600460539#2760
+-0.3524179041737139#2761
+-0.2572289050967394#2762
+-0.15946975982860834#2763
+-0.06011724543396326#2764
+0.039835940604938974#2765
+0.13939109909332772#2766
+0.23755350779614662#2767
+0.3333423603738149#2768
+0.425800566274961#2769
+0.5140043136688397#2770
+0.5970722998677733#2771
+0.6741745370122875#2772
+0.7445406450354447#2773
+0.8074675490458203#2774
+0.862326504219411#2775
+0.908569378010082#2776
+0.9457341269087781#2777
+0.9734494130295364#2778
+0.9914383143948933#2779
+0.9995210918487465#2780
+0.997616984950588#2781
+0.9857450189071303#2782
+0.9640238144787292#2783
+0.932670402759958#2784
+0.8919980566766509#2785
+0.8424131608663822#2786
+0.7844111512175009#2787
+0.7185715646375037#2788
+0.6455522485118246#2789
+0.5660827877102146#2790
+0.4809572148158928#2791
+0.39102607641444626#2792
+0.29718793471350063#2793
+0.20038038940616668#2794
+0.10157070948483571#2795
+0.001746168609144461#2796
+-0.09809581940608277#2797
+-0.1969576664199707#2798
+-0.2938515775365379#2799
+-0.38780942082477593#2800
+-0.4778924005728819#2801
+-0.5632004374246865#2802
+-0.6428811616750538#2803
+-0.7161384298662196#2804
+-0.7822402795900505#2805
+-0.8405262430144722#2806
+-0.8904139460597256#2807
+-0.9314049272876644#2808
+-0.9630896183636759#2809
+-0.9851514363280947#2810
+-0.9973699467884874#2811
+-0.9996230664272368#2812
+-0.9918882828176945#2813
+-0.9742428793609076#2814
+-0.9468631630954215#2815
+-0.9100227030956302#2816
+-0.8640895970600148#2817
+-0.8095227934006172#2818
+-0.746867505582215#2819
+-0.6767497645296058#2820
+-0.5998701635335436#2821
+-0.5169968581541643#2822
+-0.4289578910645463#2823
+-0.33663291852203614#2824
+-0.24094442113370063#2825
+-0.14284848673503256#2826
+-0.04332525747633915#2827
+0.056630863433631995#2828
+0.15602114747584864#2829
+0.25385251978622037#2830
+0.34914748163137366#2831
+0.44095387725287755#2832
+0.5283544074928413#2833
+0.610475795143881#2834
+0.6864975104463086#2835
+0.7556599695502599#2836
+0.8172721240264376#2837
+0.8707183655935856#2838
+0.9154646770729435#2839
+0.9510639681113735#2840
+0.9771605423603803#2841
+0.9934936514764484#2842
+0.9999001004322978#2843
+0.9963158781076524#2844
+0.9827767968671937#2845
+0.9594181347352508#2846
+0.9264732837424994#2847
+0.8842714179499392#2848
+0.8332342044504877#2849
+0.7738715902107717#2850
+0.7067767068496035#2851
+0.6326199442629082#2852
+0.5521422523094861#2853
+0.4661477374849479#2854
+0.3754956285554135#2855
+0.281091691427704#2856
+0.1838791790358073#2857
+0.08482940666935936#2858
+-0.015067953087655503#2859
+-0.11481475883822152#2860
+-0.21341437347118883#2861
+-0.3098816222298437#2862
+-0.4032526362524221#2863
+-0.4925944832311636#2864
+-0.5770144889635445#2865
+-0.6556691566578302#2866
+-0.7277725948741954#2867
+-0.7926043698922097#2868
+-0.8495167040464284#2869
+-0.8979409481066987#2870
+-0.9373932630332972#2871
+-0.9674794543366784#2872
+-0.9878989107385114#2873
+-0.9984476077802041#2874
+-0.9990201463678514#2875
+-0.9896108058851415#2876
+-0.9703136013518633#2877
+-0.9413213440569057#2878
+-0.902923715051594#2879
+-0.8555043707523807#2880
+-0.7995371095727526#2881
+-0.7355811378860999#2882
+-0.6642754826204825#2883
+-0.5863326063127988#2884
+-0.5025312884186264#2885
+-0.41370884400533103#2886
+-0.3207527575766946#2887
+-0.22459181562111544#2888
+-0.12618682648403282#2889
+-0.026521020288540302#2890
+0.07340977517499168#2891
+0.17260708443102024#2892
+0.27007976075572954#2893
+0.3648538893874657#2894
+0.4559825185611017#2895
+0.5425551211370541#2896
+0.623706692287481#2897
+0.6986263923385901#2898
+0.7665656484126308#2899
+0.8268456339206427#2900
+0.878864051173344#2901
+0.9221011493405477#2902
+0.9561249176296516#2903
+0.9805954017946731#2904
+0.995268100846702#2905
+0.9999964100269597#2906
+0.9947330856330885#2907
+0.979530717062608#2908
+0.9545412013570396#2909
+0.920014225496878#2910
+0.876294771611817#2911
+0.8238196700333464#2912
+0.7631132346304763#2913
+0.6947820240388727#2914
+0.6195087811274721#2915
+0.5380456112574195#2916
+0.45120646749391313#2917
+0.35985901785623386#2918
+0.26491597586570953#2919
+0.16732598101391277#2920
+0.06806412027043987#2921
+-0.03187781466376874#2922
+-0.13150123701126137#2923
+-0.22981074246706656#2924
+-0.3258240549494714#2925
+-0.41858184117793273#2926
+-0.507157296014103#2927
+-0.5906654027924112#2928
+-0.6682717761140383#2929
+-0.7392009987500107#2930
+-0.8027443693538329#2931
+-0.8582669835710771#2932
+-0.9052140777938206#2933
+-0.9431165721752354#2934
+-0.9715957575203611#2935
+-0.9903670792231963#2936
+-0.9992429804422601#2937
+-0.9981347761065544#2938
+-0.987053539027478#2939
+-0.9661099892629551#2940
+-0.9355133878392158#2941
+-0.8955694458837944#2942
+-0.8466772700609979#2943
+-0.7893253748300435#2944
+-0.724086801370063#2945
+-0.6516133919420634#2946
+-0.5726292768965259#2947
+-0.4879236394023083#2948
+-0.3983428301892924#2949
+-0.3047819110916564#2950
+-0.2081757118858963#2951
+-0.1094894897807127#2952
+-0.009709284886053158#2953
+0.090167931973725#2954
+0.18914422066277686#2955
+0.28623064282173216#2956
+0.38045714301288247#2957
+0.47088224119345734#2958
+0.5566024396729995#2959
+0.6367612505636312#2960
+0.7105577535239129#2961
+0.7772545982901459#2962
+0.8361853720364713#2963
+0.8867612579515394#2964
+0.9284769185014516#2965
+0.9609155445953574#2966
+0.9837530202041103#2967
+0.9967611608204933#2968
+0.9998099934033869#2969
+0.9928690550254331#2970
+0.9760076972485352#2971
+0.9493943931859762#2972
+0.9132950541747605#2973
+0.8680703728774336#2974
+0.8141722193602262#2975
+0.7521391261567218#2976
+0.6825909074287959#2977
+0.6062224659883935#2978
+0.523796850058337#2979
+0.4361376291467138#2980
+0.3441206652125872#2981
+0.24866536134282327#2982
+0.1507254753803607#2983
+0.05127959029111491#2984
+-0.04867866351354105#2985
+-0.1481505362033963#2986
+-0.2461421377075628#2987
+-0.3416743683355274#2988
+-0.43379270161761196#2989
+-0.521576721617934#2990
+-0.6041493194261889#2991
+-0.6806854569399482#2992
+-0.7504204103726574#2993
+-0.8126574111209275#2994
+-0.8667746076460986#2995
+-0.9122312788092578#2996
+-0.9485732365781204#2997
+-0.9754373641237138#2998
+-0.9925552439637022#2999
+-0.9997558399011433#3000
+-0.9969672059616304#3001
+-0.9842172052536875#3002
+-0.9616332315697985#3003
+-0.9294409365097438#3004
+-0.8879619748444056#3005
+-0.8376107906476223#3006
+-0.778890476308#3007
+-0.712387745796065#3008
+-0.6387670724122129#3009
+-0.5587640495891363#3010
+-0.4731780410854005#3011
+-0.38286419400700217#3012
+-0.2887248944601604#3013
+-0.1917007512076325#3014
+-0.09276119741688045#3015
+0.007105195595686342#3016
+0.10690059584252641#3017
+0.20562788067234633#3018
+0.30230059969002754#3019
+0.39595283104289725#3020
+0.48564883259258895#3021
+0.5704923915411738#3022
+0.649635779093189#3023
+0.7222882206815403#3024
+0.7877237971255806#3025
+0.8452886977756067#3026
+0.8944077531727492#3027
+0.9345901819520811#3028
+0.9654344945677839#3029
+0.9866325048439754#3030
+0.9979724092691066#3031
+0.9993409032666355#3032
+0.9907243132969028#3033
+0.9722087334786201#3034
+0.9439791653648948#3035
+0.9063176694688648#3036
+0.8596005470082881#3037
+0.8042945800281633#3038
+0.7409523674688342#3039
+0.670206803780042#3040
+0.5927647552487915#3041
+0.5093999972250692#3042
+0.42094548281432353#3043
+0.32828502028537193#3044
+0.23234444235032745#3045
+0.13408235555017892#3046
+0.0344805621751064#3047
+-0.06546574957946144#3048
+-0.16475794920433068#3049
+-0.26240394186248667#3050
+-0.3574280810727624#3051
+-0.4488809170469727#3052
+-0.5358486832783511#3053
+-0.6174624265944348#3054
+-0.6929066894499258#3055
+-0.7614276577089293#3056
+-0.8223406925066218#3057
+-0.8750371709344767#3058
+-0.9189905671991826#3059
+-0.9537617134943233#3060
+-0.9790031880199306#3061
+-0.9944627863062665#3062
+-0.9999860411575177#3063
+-0.9955177660369557#3064
+-0.9811026064725701#3065
+-0.9568845939737097#3066
+-0.9231057069158529#3067
+-0.8801034527726663#3068
+-0.8283074958528935#3069
+-0.7682353642366102#3070
+-0.7004872788057198#3071
+-0.6257401560353084#3072
+-0.5447408444679848#3073
+-0.45829866245011713#3074
+-0.36727731169044214#3075
+-0.27258624743809257#3076
+-0.17517159150637399#3077
+-0.07600667893635255#3078
+0.0239176672451336#3079
+0.12360303600163591#3080
+0.22205340408014085#3081
+0.3182850879461725#3082
+0.41133657242450644#3083
+0.5002781178409661#3084
+0.5842210496739159#3085
+0.6623266378963246#3086
+0.7338144772889486#3087
+0.7979702849913142#3088
+0.8541530373799495#3089
+0.901801374964536#3090
+0.9404392113063745#3091
+0.969680489916708#3092
+0.9892330416055432#3093
+0.9989015037396196#3094
+0.9985892722412621#3095
+0.9882994668243924#3096
+0.9681348998233783#3097
+0.9382970489261745#3098
+0.8990840440758637#3099
+0.8508876886548145#3100
+0.7941895447147971#3101
+0.7295561213681458#3102
+0.6576332144159718#3103
+0.5791394537699889#3104
+0.49485912313998487#3105
+0.40563432373024166#3106
+0.31235656024266445#3107
+0.21595783325649234#3108
+0.11740132698658906#3109
+0.017671785465154324#3110
+-0.08223432669513268#3111
+-0.18131878064613588#3112
+-0.2785915572769423#3113
+-0.37308073915756135#3114
+-0.4638422216166124#3115
+-0.5499691459231215#3116
+-0.6306009603191937#3117
+-0.704932018368717#3118
+-0.7722196287102416#3119
+-0.8317914757835613#3120
+-0.8830523373845538#3121
+-0.9254900319286898#3122
+-0.9586805360001208#3123
+-0.9822922210534869#3124
+-0.9960891669367201#3125
+-0.9999335191272192#3126
+-0.9937868661286703#3127
+-0.9777106232660219#3128
+-0.951865419043858#3129
+-0.9165094901994781#3130
+-0.8719961014867792#3131
+-0.8187700159716086#3132
+-0.7573630511062297#3133
+-0.6883887649851336#3134
+-0.6125363258753749#3135
+-0.530563626275056#3136
+-0.4432897103020118#3137
+-0.3515865900757242#3138
+-0.2563705328604733#3139
+-0.1585929060257105#3140
+-0.05923067129778288#3141
+0.040723376718695616#3142
+0.14027053021635935#3143
+0.23841614694337318#3144
+0.3341795883400279#3145
+0.4266040177550728#3146
+0.5147659608412467#3147
+0.597784532605696#3148
+0.6748302389216413#3149
+0.7451332645594977#3150
+0.807991164926182#3151
+0.8627758846592893#3152
+0.908940032948667#3153
+0.9460223528844458#3154
+0.9736523301836125#3155
+0.99155389524625#3156
+0.9995481815517231#3157
+0.9975553128338268#3158
+0.985595201178036#3159
+0.9637873480665278#3160
+0.9323496503588747#3161
+0.8915962231386506#3162
+0.8419342611793482#3163
+0.783859970388803#3164
+0.7179536098837859#3165
+0.6448736942327173#3166
+0.5653504137957747#3167
+0.4801783389041825#3168
+0.3902084807761133#3169
+0.29633978849390213#3170
+0.19951016700196894#3171
+0.10068710587064418#3172
+8.58012460191664E-4#3173
+-0.09897965392714189#3174
+-0.19782834833075857#3175
+-0.2947004072712111#3176
+-0.3886279171572114#3177
+-0.4786723853582849#3178
+-0.5639341173129099#3179
+-0.6435612059791769#3180
+-0.7167580438083482#3181
+-0.7827932721924921#3182
+-0.8410070889579382#3183
+-0.8908178408904955#3184
+-0.931727835422099#3185
+-0.9633283134104351#3186
+-0.9853035333251733#3187
+-0.9974339260329675#3188
+-0.9995982886596559#3189
+-0.991774995609316#3190
+-0.9740422146400699#3191
+-0.9465771258376843#3192
+-0.9096541512907214#3193
+-0.8636422131557419#3194
+-0.8090010475090663#3195
+-0.7462766108158684#3196
+-0.6760956249136447#3197
+-0.5991593150147811#3198
+-0.5162364032960245#3199
+-0.4281554280805988#3200
+-0.33579646535715757#3201
+-0.24008233535141982#3202
+-0.14196938201151837#3203
+-0.04243791753539556#3204
+0.057517572584630666#3205
+0.1568983661321727#3206
+0.25471148306902575#3207
+0.34997960706347403#3208
+0.44175085051201957#3209
+0.5291082654856638#3210
+0.6111790055705121#3211
+0.6871430470606158#3212
+0.7562413823637792#3213
+0.8177836037545257#3214
+0.8711548016998724#3215
+0.9158217088321214#3216
+0.9513380281801238#3217
+0.9773488924210882#3218
+0.9935944095975676#3219
+0.9999122598719884#3220
+0.9962393173728123#3221
+0.9826122809273776#3222
+0.959167307379348#3223
+0.9261386511545373#3224
+0.8838563236681221#3225
+0.8327427959596674#3226
+0.7733087775021505#3227
+0.7061481133617248#3228
+0.6319318506941176#3229
+0.5514015338632693#3230
+0.4653617951751706#3231
+0.374672315257837#3232
+0.2802392334166466#3233
+0.18300609378993019#3234
+0.08394441776783579#3235
+-0.015956003128259934#3236
+-0.1156969969154514#3237
+-0.21428198455380562#3238
+-0.310725937434704#3239
+-0.40406521946109236#3240
+-0.4933672153808272#3241
+-0.5777396491699932#3242
+-0.6563394993599873#3243
+-0.7283814222293667#3244
+-0.7931455986987139#3245
+-0.8499849265249375#3246
+-0.8983314859329812#3247
+-0.9377022140824873#3248
+-0.9677037316720184#3249
+-0.9880362734550029#3250
+-0.9984966833949899#3251
+-0.9989804445336107#3252
+-0.9894827232894784#3253
+-0.9700984177537353#3254
+-0.941021209499695#3255
+-0.9025416283805849#3256
+-0.8550441496512888#3257
+-0.7990033524186914#3258
+-0.7349791778041159#3259
+-0.6636113341967335#3260
+-0.5856129054987965#3261
+-0.5017632262270028#3262
+-0.4129000946596174#3263
+-0.3199114018330162#3264
+-0.22372626002794793#3265
+-0.12530571938674848#3266
+-0.025633165417999926#3267
+0.07429550666640745#3268
+0.1734818426070331#3269
+0.27093480532180136#3270
+0.36568067702093243#3271
+0.4567727882732294#3272
+0.5433009768141075#3273
+0.6244006815860823#3274
+0.69926158114707#3275
+0.7671356901343803#3276
+0.8273448328872091#3277
+0.8792874195536663#3278
+0.9224444569777169#3279
+0.9563847343072394#3280
+0.9807691315103211#3281
+0.9953540077505189#3282
+0.9999936357655596#3283
+0.994641657925974#3284
+0.9793515494252069#3285
+0.9542760839731598#3286
+0.9196658073317829#3287
+0.8758665339446406#3288
+0.8233158916733028#3289
+0.7625389491644119#3290
+0.6941429695373308#3291
+0.6188113428117887#3292
+0.5372967577007027#3293
+0.4504136809933635#3294
+0.3590302196725045#3295
+0.264059447076288#3296
+0.16645027977133223#3297
+0.0671779962920478#3298
+-0.03276550752009386#3299
+-0.1323816292119314#3300
+-0.23067503742423134#3301
+-0.3266636169136169#3302
+-0.4193882815234355#3303
+-0.5079225570556044#3304
+-0.5913818382945464#3305
+-0.668932227690092#3306
+-0.7397988673861511#3307
+-0.8032736813442769#3308
+-0.8587224502053834#3309
+-0.9055911481999364#3310
+-0.9434114787903057#3311
+-0.9718055537349715#3312
+-0.9904896688229197#3313
+-0.9992771385523388#3314
+-0.9980801614304436#3315
+-0.9869106972569683#3316
+-0.9658803476258001#3317
+-0.9351992408387446#3318
+-0.8951739323729925#3319
+-0.8462043418801258#3320
+-0.7887797573211552#3321
+-0.7234739461629501#3322
+-0.6509394224833727#3323
+-0.5719009272663036#3324
+-0.4871481870292994#3325
+-0.3975280231372775#3326
+-0.30393589064335974#3327
+-0.20730693119798013#3328
+-0.10860662942263#3329
+-0.008821166106667043#3330
+0.09105243538514393#3331
+0.19001627104051966#3332
+0.2870815269266859#3333
+0.3812783590923355#3334
+0.47166558392780156#3335
+0.557340082160572#3336
+0.6374458225245284#3337
+0.711182414941391#3338
+0.777813107753807#3339
+0.836672149104373#3340
+0.8871714389081266#3341
+0.9288064049541939#3342
+0.9611610444245324#3343
+0.9839120804565766#3344
+0.9968321922187865#3345
+0.9997922862252552#3346
+0.9927627861951471#3347
+0.9758139285691194#3348
+0.9491150607300238#3349
+0.9129329489398365#3350
+0.867629112899349#3351
+0.813656213562821#3352
+0.751553530299355#3353
+0.6819415725917019#3354
+0.605515880110623#3355
+0.5230400731124144#3356
+0.4353382225977257#3357
+0.34328661646652237#3358
+0.24780500393905253#3359
+0.14984740572566616#3360
+0.05039258176723505#3361
+-0.04956574821064165#3362
+-0.14902883361665542#3363
+-0.2470028721795537#3364
+-0.34250893969192686#3365
+-0.4345927710972995#3366
+-0.5223342951911364#3367
+-0.6048568276681833#3368
+-0.6813358306622516#3369
+-0.7510071512560216#3370
+-0.8131746566443966#3371
+-0.8672171896633807#3372
+-0.9125947751871345#3373
+-0.9488540153809398#3374
+-0.9756326199024913#3375
+-0.9926630257872393#3376
+-0.9997750708490869#3377
+-0.9968976938847057#3378
+-0.9840596446935896#3379
+-0.9613891968195613#3380
+-0.9291128658839244#3381
+-0.8875531463162514#3382
+-0.8371252890966461#3383
+-0.7783331527052134#3384
+-0.7117641687346805#3385
+-0.6380834724681006#3386
+-0.5580272570669699#3387
+-0.4723954177725101#3388
+-0.38204355961682934#3389
+-0.28787444850026606#3390
+-0.19082899105292786#3391
+-0.09187683340666573#3392
+0.00799332718855293#3393
+0.10778362110074621#3394
+0.20649697669942857#3395
+0.3031470827657546#3396
+0.39676824338818645#3397
+0.48642502687682576#3398
+0.5712216122876458#3399
+0.6503107401692458#3400
+0.7229021780992223#3401
+0.7882706164253177#3402
+0.8457629153197103#3403
+0.8948046307362744#3404
+0.9349057540656031#3405
+0.9656656081390587#3406
+0.9867768506625949#3407
+0.9980285450793656#3408
+0.9993082681780738#3409
+0.9906032333885376#3410
+0.972000418540872#3411
+0.9436856968117622#3412
+0.9059419795411228#3413
+0.8591463894755079#3414
+0.8037664926822882#3415
+0.7403556267840615#3416
+0.6695473721920379#3417
+0.592049221580004#3418
+0.508635510851393#3419
+0.4201396822308988#3420
+0.32744595678526595#3421
+0.23148049957867578#3422
+0.1332021657375744#3423
+0.03359291988720454#3424
+-0.06635197531433547#3425
+-0.1656339035115813#3426
+-0.2632608724962278#3427
+-0.35825742586536535#3428
+-0.4496743894594147#3429
+-0.5365983551965742#3430
+-0.6181608075444406#3431
+-0.6935468014401158#3432
+-0.7620031049518906#3433
+-0.8228457253237202#3434
+-0.8754667432047455#3435
+-0.9193403867784948#3436
+-0.9540282851010776#3437
+-0.9791838481587489#3438
+-0.9945557298807602#3439
+-0.9999903395062136#3440
+-0.9954333762121745#3441
+-0.9809303716695452#3442
+-0.9566262351056599#3443
+-0.9227638054191856#3444
+-0.8796814248141186#3445
+-0.8278095581963233#3446
+-0.7676664921104855#3447
+-0.6998531561922808#3448
+-0.6250471188780957#3449
+-0.5439958173651854#3450
+-0.45750908946626917#3451
+-0.366451081977802#3452
+-0.27173161641083377#3453
+-0.17429709835521742#3454
+-0.07512106130779558#3455
+0.02480556055249268#3456
+0.12448433345136849#3457
+0.22291930003944738#3458
+0.3191269306688547#3459
+0.4121459504963556#3460
+0.5010469442238331#3461
+0.5849416425087233#3462
+0.6629917972576633#3463
+0.7344175571243525#3464
+0.7985052595264196#3465
+0.854614561326041#3466
+0.9021848369269034#3467
+0.9407407798598458#3468
+0.969897151887982#3469
+0.9893626321798219#3470
+0.9989427280907218#3471
+0.9985417184690987#3472
+0.9881636100705354#3473
+0.9679120975236041#3474
+0.9379895272474138#3475
+0.8986948756730775#3476
+0.8504207619700415#3477
+0.793649525125126#3478
+0.7289484045708101#3479
+0.6569638725163257#3480
+0.5784151746110389#3481
+0.49408714347967225#3482
+0.40482235693414975#3483
+0.3115127192146192#3484
+0.21509054937710928#3485
+0.11651926586970504#3486
+0.016783760373878607#3487
+-0.08311944290763014#3488
+-0.1821921441912403#3489
+-0.2794444417948066#3490
+-0.3739046229080092#3491
+-0.4646288726255491#3492
+-0.550710704233698#3493
+-0.6312900165258971#3494
+-0.7055616876497018#3495
+-0.7727836196181932#3496
+-0.8322841531077579#3497
+-0.8834687784560297#3498
+-0.9258260758059158#3499
+-0.9589328250437571#3500
+-0.9824582344748051#3501
+-0.9961672459844911#3502
+-0.9999228836614071#3503
+-0.9936876224153341#3504
+-0.9775237629155394#3505
+-0.9515928091030836#3506
+-0.9161538544968271#3507
+-0.8715609934166348#3508
+-0.8182597829899804#3509
+-0.7567827912924092#3510
+-0.6877442761033722#3511
+-0.6118340474455396#3512
+-0.5298105752310752#3513
+-0.4424934108809914#3514
+-0.35075499863825743#3515
+-0.2555119583933158#3516
+-0.15771592712113114#3517
+-0.05834405043910549#3518
+0.041610780708929006#3519
+0.14114985069081507#3520
+0.23927859802253518#3521
+0.3350165526978016#3522
+0.427407132720259#3523
+0.5155272019545877#3524
+0.5984962937976203#3525
+0.6754854085095959#3526
+0.7457252963055302#3527
+0.8085141434447857#3528
+0.8632245845219801#3529
+0.9093099708947372#3530
+0.9463098326162236#3531
+0.9738544792986461#3532
+0.9916686939374035#3533
+0.999574482788422#3534
+0.9974928538228081#3535
+0.9854446059890913#3536
+0.9635501213970051#3537
+0.9320281624992393#3538
+0.8911936862893262#3539
+0.841454697355472#3540
+0.7833081712335805#3541
+0.7173350887919758#3542
+0.6441946312626129#3543
+0.5646175939201048#3544
+0.4793990842169069#3545
+0.38939057733247995#3546
+0.2954914085147568#3547
+0.19863978721962608#3548
+0.09980342283217974#3549
+-3.01443655808235E-5#3550
+-0.0998634103708049#3551
+-0.19869887419005808#3552
+-0.2955490045395186#3553
+-0.38944610693113085#3554
+-0.47945199255605286#3555
+-0.5646673523571102#3556
+-0.6442407426276232#3557
+-0.7173770923554741#3558
+-0.783345647309845#3559
+-0.8414872714959365#3560
+-0.8912210330239467#3561
+-0.9320500085884833#3562
+-0.9635662485619702#3563
+-0.9854548530924759#3564
+-0.9974971184789425#3565
+-0.9995727223862718#3566
+-0.9916609260663253#3567
+-0.9738407815726398#3568
+-0.9462903418984395#3569
+-0.9092848819299848#3570
+-0.8631941479909019#3571
+-0.8084786634591391#3572
+-0.7456851273696038#3573
+-0.6754409519781194#3574
+-0.5984479938655606#3575
+-0.5154755412189004#3576
+-0.42735262735793816#3577
+-0.33495974730841055#3578
+-0.23922006018674727#3579
+-0.14109016529933546#3580
+-0.04155054411846003#3581
+0.05840423636446346#3582
+0.15777546102350673#3583
+0.2555702454296358#3584
+0.350811456423722#3585
+0.4425474753080707#3586
+0.5298617061058852#3587
+0.6118817338852807#3588
+0.6877880416409017#3589
+0.7568221986369429#3590
+0.8182944383963581#3591
+0.8715905506194918#3592
+0.9161780181703624#3593
+0.9516113378118588#3594
+0.9775364715268212#3595
+0.9936943839488795#3596
+0.9999236305582081#3597
+0.9961619707818016#3598
+0.9824469898807066#3599
+0.9589157234105169#3600
+0.9258032880074003#3601
+0.8834405321803889#3602
+0.8322507305824411#3603
+0.7727453547900252#3604
+0.7055189628481972#3605
+0.6312432586431493#3606
+0.5506603804590156#3607
+0.4645754857774538#3608
+0.3738487064102398#3609
+0.2793865543465253#3610
+0.1821328641846953#3611
+0.08305936264905144#3612
+-0.016844040582407176#3613
+-0.11657914372826583#3614
+-0.2151494266059326#3615
+-0.31157000753189684#3616
+-0.4048774839339524#3617
+-0.4941395583512405#3618
+-0.5784643536423021#3619
+-0.6570093243266599#3620
+-0.7289896750207507#3621
+-0.7936862018539796#3622
+-0.8504524785160569#3623
+-0.8987213151350112#3624
+-0.9380104254509017#3625
+-0.9679272456607052#3626
+-0.9881728567860709#3627
+-0.9985449713729435#3628
+-0.9989399546809362#3629
+-0.9893538601673995#3630
+-0.9698824689199713#3631
+-0.9407203326436097#3632
+-0.9021588297642675#3633
+-0.8545832540719774#3634
+-0.7984689649926625#3635
+-0.7343766379538854#3636
+-0.6629466623013117#3637
+-0.5848927427400513#3638
+-0.5009947682331652#3639
+-0.41209101960894357#3640
+-0.3190697937359677#3641
+-0.22286052795443187#3642
+-0.12442451344547048#3643
+-0.024745290327437247#3644
+0.07518117955184238#3645
+0.1743564639366335#3646
+0.27178963616835333#3647
+0.36650717619718665#3648
+0.45756269767262103#3649
+0.5440464039230273#3650
+0.6250941783432632#3651
+0.6998962183621539#3652
+0.7677051267220971#3653
+0.8278433792254051#3654
+0.8797100943321279#3655
+0.9227870369697753#3656
+0.9566437965668558#3657
+0.9809420875730321#3658
+0.9954391294965175#3659
+0.9999900726864973#3660
+0.9945494456229591#3661
+0.9791716092530895#3662
+0.9540102138346597#3663
+0.9193166637134389#3664
+0.8754376053740758#3665
+0.8228114638630091#3666
+0.7619640621903281#3667
+0.6935033674800697#3668
+0.6181134163636822#3669
+0.5365474803121163#3670
+0.44962053919628586#3671
+0.35820113827759426#3672
+0.26320270999078516#3673
+0.1655744472289955#3674
+0.0662918193221285#3675
+-0.033653174530243454#3676
+-0.13326191698696957#3677
+-0.2315391504196944#3678
+-0.3275029211980919#3679
+-0.4201943910459491#3680
+-0.508687417436272#3681
+-0.5920978073012736#3682
+-0.6695921515972314#3683
+-0.7403961524521645#3684
+-0.8038023596942209#3685
+-0.8591772394599432#3686
+-0.9059675042552137#3687
+-0.943705641221003#3688
+-0.9720145833673183#3689
+-0.9906114771019258#3690
+-0.9993105084099446#3691
+-0.9980247594460628#3692
+-0.9867670769889152#3693
+-0.9656499440803186#3694
+-0.9348843561318997#3695
+-0.894777712728688#3696
+-0.845730746194075#3697
+-0.788233517604903#3698
+-0.7228605202631786#3699
+-0.6502649395489006#3700
+-0.5711721265076578#3701
+-0.4863723503827509#3702
+-0.396712902506141#3703
+-0.3030896304435386#3704
+-0.20643798698165444#3705
+-0.10772368339317456#3706
+-0.00793304036894502#3707
+0.09193686697233655#3708
+0.19088817152911786#3709
+0.28793218457521963#3710
+0.3820992744107705#3711
+0.4724485546016347#3712
+0.558077285005646#3713
+0.6381298916537022#3714
+0.7118065153620489#3715
+0.778371003660846#3716
+0.837158266186306#3717
+0.8875809200437595#3718
+0.9291351587433763#3719
+0.9614057860680744#3720
+0.9840703645768764#3721
+0.996902437293236#3722
+0.9997737903882905#3723
+0.9926557342510572#3724
+0.9756193901455429#3725
+0.9488349795905833#3726
+0.9125701235626947#3727
+0.8671871685157403#3728
+0.8131395659349391#3729
+0.7509673415995165#3730
+0.6812916998236274#3731
+0.6048088165881917#3732
+0.5222828835806185#3733
+0.43453847264407314#3734
+0.3424522969281879#3735
+0.24694445106107385#3736
+0.1489692178679391#3737
+0.04950553349254367#3738
+-0.0504527938091558#3739
+-0.14990701347259025#3740
+-0.2478634118100764#3741
+-0.34334324086950585#3742
+-0.43539249776035166#3743
+-0.523091456735199#3744
+-0.6055638587853923#3745
+-0.6819856669313974#3746
+-0.7515932997279102#3747
+-0.8136912607172517#3748
+-0.8676590876000732#3749
+-0.9129575516895527#3750
+-0.9491340457061896#3751
+-0.9758271060801286#3752
+-0.9927700245756657#3753
+-0.9997935131517774#3754
+-0.9968273954322683#3755
+-0.9839013078849232#3756
+-0.961144403703719#3757
+-0.9287840623528019#3758
+-0.8871436176660437#3759
+-0.8366391272022538#3760
+-0.7777752151355816#3761
+-0.7111400302175752#3762
+-0.6373993691892722#3763
+-0.5572900243602457#3764
+-0.47161242182339913#3765
+-0.38122262386203104#3766
+-0.28702377545847707#3767
+-0.18995708036798664#3768
+-0.09099239692192086#3769
+0.008881452476101726#3770
+0.10866656133680092#3771
+0.20736590983701175#3772
+0.3039933267121866#3773
+0.3975833427536857#3774
+0.48720083745796805#3775
+0.5719503824415534#3776
+0.6509851882654402#3777
+0.7235155652752691#3778
+0.7888168139193128#3779
+0.8462364657068425#3780
+0.8952008024576104#3781
+0.9352205887042604#3782
+0.9658959599713982#3783
+0.9869204180892522#3784
+0.9980838936220705#3785
+0.9992748448124834#3786
+0.9904813720698726#3787
+0.9717913368671467#3788
+0.943391483857947#3789
+0.9055655749857984#3790
+0.8586915542285684#3791
+0.8032377713071723#3792
+0.7397583020899774#3793
+0.6688874124498796#3794
+0.5913332208893615#3795
+0.5078706232544888#3796
+0.41933355023176294#3797
+0.326606634988362#3798
+0.23061637420995554#3799
+0.13232187085208025#3800
+0.032705251100445504#3801
+-0.06723814870926637#3802
+-0.1665097271630519#3803
+-0.2641175954638214#3804
+-0.3590864880563847#3805
+-0.45046750715849865#3806
+-0.5373476038338433#3807
+-0.61885870087518#3808
+-0.6941863663448576#3809
+-0.7625779511095188#3810
+-0.8233501090614465#3811
+-0.8758956248869896#3812
+-0.9196894811612573#3813
+-0.954294104148681#3814
+-0.9793637358951378#3815
+-0.9946478889271355#3816
+-0.9999938490398477#3817
+-0.9953482011669674#3818
+-0.9807573630863935#3819
+-0.9563671216291374#3820
+-0.9224211760254981#3821
+-0.8792587029429098#3822
+-0.8273109675447968#3823
+-0.7670970144316195#3824
+-0.6992184815187981#3825
+-0.624353588669538#3826
+-0.5432503611461462#3827
+-0.45671915558887405#3828
+-0.3656245632002365#3829
+-0.27087677103551244#3830
+-0.17342246771455624#3831
+-0.07423538442204156#3832
+0.025693434292662947#3833
+0.12536553270503523#3834
+0.22378502015495372#3835
+0.31996852165697554#3836
+0.4129550034581306#3837
+0.5018153753695055#3838
+0.5856617739282951#3839
+0.663656433636034#3840
+0.7350200576345289#3841
+0.7990396041824644#3842
+0.8550754111327816#3843
+0.902567587225408#3844
+0.9410416063356517#3845
+0.970113048782383#3846
+0.9894914423224154#3847
+0.9989831644531418#3848
+0.9984933770245784#3849
+0.988026973830809#3850
+0.9676885317128129#3851
+0.9376812656612382#3852
+0.8983049983593889#3853
+0.8499531644540819#3854
+0.7931088794867078#3855
+0.7283401127624386#3856
+0.6562940123886756#3857
+0.5776904391850793#3858
+0.4933147740722138#3859
+0.40401007080500034#3860
+0.31066863245827525#3861
+0.21422309582942212#3862
+0.11563711283978116#3863
+0.01589572204319201#3864
+-0.08400449355362567#3865
+-0.18306536401904885#3866
+-0.2802971058805568#3867
+-0.37472821171400944#3868
+-0.4654151571246921#3869
+-0.5514518281311794#3870
+-0.6319785747567164#3871
+-0.7061908003676237#3872
+-0.7733470009368971#3873
+-0.8327761739073366#3874
+-0.8838845226272941#3875
+-0.9261613893705334#3876
+-0.9591843576594301#3877
+-0.9826234729107834#3878
+-0.9962445392329431#3879
+-0.9999114594337439#3880
+-0.9935875948586621#3881
+-0.9773361314721403#3882
+-0.951319448524317#3883
+-0.9157974961112352#3884
+-0.8711251978394099#3885
+-0.8177489045464752#3886
+-0.7562019345111574#3887
+-0.6870992447133262#3888
+-0.6111312863871298#3889
+-0.5290571062604954#3890
+-0.44169676241113176#3891
+-0.34992313051729185#3892
+-0.25465318237253#3893
+-0.15683882380665107#3894
+-0.05745738355731774#3895
+0.042498151875634736#3896
+0.14202905982306696#3897
+0.24014086035331167#3898
+0.33585325278691963#3899
+0.42820991053700425#3900
+0.5162880364083785#3901
+0.5992075828820926#3902
+0.6761400452593388#3903
+0.7463167398065342#3904
+0.809036484189094#3905
+0.8636726034535386#3906
+0.909679191556477#3907
+0.9465965658773408#3908
+0.9740558602151771#3909
+0.991782710377798#3910
+0.9995999955380961#3911
+0.9974296079668007#3912
+0.9852932334590895#3913
+0.9633121346572913#3914
+0.9317059394346487#3915
+0.8907904464462075#3916
+0.8409744697730445#3917
+0.7827557541871054#3918
+0.7167160018499767#3919
+0.6435150601371714#3920
+0.56388432866127#3921
+0.47861945136875983#3922
+0.38857236672872686#3923
+0.29464279544528593#3924
+0.19776925074571347#3925
+0.0989196610665116#3926
+-9.183011675747517E-4#3927
+-0.10074708803994468#3928
+-0.19956924331117867#3929
+-0.2963973686720675#3930
+-0.3902639895011276#3931
+-0.48023122155121406#3932
+-0.5654001419788951#3933
+-0.6449197710843588#3934
+-0.7179955750192778#3935
+-0.7838974045063832#3936
+-0.8419667902496881#3937
+-0.891623522142032#3938
+-0.9323714465326797#3939
+-0.9638034236305925#3940
+-0.9856053955106381#3941
+-0.9975595240765649#3942
+-0.9995463676272517#3943
+-0.9915460742787029#3944
+-0.9736385803175122#3945
+-0.9460028115039091#3946
+-0.9089148953047087#3947
+-0.8627454019189386#3948
+-0.8079556416629041#3949
+-0.7450930557099968#3950
+-0.6747857462394504#3951
+-0.5977362006469884#3952
+-0.5147142725229772#3953
+-0.4265494895298316#3954
+-0.3341227650358171#3955
+-0.23835759631986517#3956
+-0.14021083729202993#3957
+-0.04066313792551283#3958
+0.059290854073709855#3959
+0.1586524314579784#3960
+0.25642880619063935#3961
+0.351643029055936#3962
+0.44334375101263535#3963
+0.5306147287591743#3964
+0.6125839795338587#3965
+0.6884324936783796#3966
+0.7574024179115897#3967
+0.8188046275489766#3968
+0.8720256120087151#3969
+0.9165336048066015#3970
+0.9518838967909858#3971
+0.9777232795296128#3972
+0.993793574451522#3973
+0.9999342124819873#3974
+0.9960838383956331#3975
+0.9822809238575657#3976
+0.9586633830272128#3977
+0.9254671945656303#3978
+0.8830240438147254#3979
+0.8317580087069611#3980
+0.7721813225188363#3981
+0.7048892558053088#3982
+0.6305541686531807#3983
+0.5499187926813633#3984
+0.4637888099120561#3985
+0.37302480266230326#3986
+0.27853365488995285#3987
+0.18125949090892593#3988
+0.08217424201115783#3989
+-0.017732064749593147#3990
+-0.11746119858080742#3991
+-0.21601669894331174#3992
+-0.31241383185560057#3993
+-0.40568942903026955#3994
+-0.49491151153316204#3995
+-0.579188601808808#3996
+-0.6576786310294751#3997
+-0.7295973527685441#3998
+-0.7942261789315666#3999
+-0.850919359650971#4000
+-0.8991104354052828#4001
+-0.9383178968954163#4002
+-0.9681499961264257#4003
+-0.9883086606239754#4004
+-0.9985924716759744#4005
+-0.9988986768417671#4006
+-0.9892242166205548#4007
+-0.9696657550209166#4008
+-0.9404187137259883#4009
+-0.9017753195046023#4010
+-0.8541216843780113#4011
+-0.7979339477162029#4012
+-0.7337735188107056#4013
+-0.6622814674585256#4014
+-0.5841721186046438#4015
+-0.5002259150432908#4016
+-0.41128161949152625#4017
+-0.3182279339494287#4018
+-0.2219946200834764#4019
+-0.12354320935531402#4020
+-0.023857395717228277#4021
+0.07606679313265759#4022
+0.1752309477299004#4023
+0.2726442526210754#4024
+0.36733338626426704#4025
+0.4583522461361782#4026
+0.5447914018758033#4027
+0.6257871820119776#4028
+0.7005303034832253#4029
+0.7682739577265967#4030
+0.8283412725419662#4031
+0.8801320751753131#4032
+0.9231288890464878#4033
+0.9569021042041466#4034
+0.9811142698463743#4035
+0.9955234660175518#4036
+0.9999857207925835#4037
+0.9944564487967827#4038
+0.978990896688197#4039
+0.9537435911512637#4040
+0.9189667949172583#4041
+0.8750079862384708#4042
+0.8223063870003694#4043
+0.761388574161709#4044
+0.6928632183716221#4045
+0.6174150023336926#4046
+0.5357977796827074#4047
+0.4488270427283285#4048
+0.35737177432550127#4049
+0.26234576528501463#4050
+0.1646984840777792#4051
+0.06540559005971848#4052
+-0.034540814994005645#4053
+-0.13414209964198492#4054
+-0.2324030807718237#4055
+-0.3283419671408341#4056
+-0.421000169109596#4057
+-0.5094518765527665#4058
+-0.5928133092478203#4059
+-0.6702515473148938#4060
+-0.7409928534768989#4061
+-0.8043304039866315#4062
+-0.8596313509760083#4063
+-0.9063431456627741#4064
+-0.9439990592352849#4065
+-0.9722228462525142#4066
+-0.9907325039641293#4067
+-0.9993430899887548#4068
+-0.9979685701971142#4069
+-0.9866226783366094#4070
+-0.9654187788082579#4071
+-0.9345687339670693#4072
+-0.8943807872634282#4073
+-0.8452564833764284#4074
+-0.7876866561121733#4075
+-0.7222465241546325#4076
+-0.6495899436706947#4077
+-0.5704428751954832#4078
+-0.48559613007466035#4079
+-0.3958974689388687#4080
+-0.30224313115974216#4081
+-0.20556887992236214#4082
+-0.10684065238883424#4083
+-0.0070449083734608125#4084
+0.09282122603764317#4085
+0.19175992144079657#4086
+0.28878261509631514#4087
+0.382919888320631#4088
+0.47323115259733173#4089
+0.5588140476266991#4090
+0.6388134574115429#4091
+0.712430054293582#4092
+0.7789282855711821#4093
+0.8376437228988098#4094
+0.8879897010354305#4095
+0.9294631796096705#4096
+0.9616497693329252#4097
+0.9842278724401516#4098
+0.996971895988431#4099
+0.9997545059070827#4100
+0.9925478992776083#4101
+0.9754240821312622#4102
+0.9485541499885891#4103
+0.9122065783295403#4104
+0.8667445400752233#4105
+0.8126222768841236#4106
+0.7503805605196052#4107
+0.6806412896372068#4108
+0.6041012759788476#4109
+0.5215252820602374#4110
+0.433738379916617#4111
+0.34161770725571405#4112
+0.24608370338771093#4113
+0.148090912499914#4114
+0.04861844616676457#4115
+-0.0513397996093618#4116
+-0.15078507507847264#4117
+-0.24872375592031773#4118
+-0.34417727121014857#4119
+-0.43619188097592587#4120
+-0.5238482056528556#4121
+-0.606270412220094#4122
+-0.6826349652347802#4123
+-0.7521788553259561#4124
+-0.8142072229319841#4125
+-0.8681003011075967#4126
+-0.9133196080303462#4127
+-0.9494133273329757#4128
+-0.9760208225032105#4129
+-0.9928762402445782#4130
+-0.9998111667946672#4131
+-0.9967563106597709#4132
+-0.983742194952588#4133
+-0.9608988524153701#4134
+-0.928454526175744#4135
+-0.8867333892168279#4136
+-0.836152305347941#4137
+-0.7772166640392184#4138
+-0.710515330737084#4139
+-0.6367147631153636#4140
+-0.5565523520505097#4141
+-0.47082905385571255#4142
+-0.38040138739018#4143
+-0.28617287600582364#4144
+-0.18908501984059176#4145
+-0.09010788866030936#4146
+0.009769570757759355#4147
+0.10954941585420723#4148
+0.20823467939966173#4149
+0.30483933086178727#4150
+0.39839812849642603#4151
+0.48797626372403896#4152
+0.572678701428026#4153
+0.651659122849752#4154
+0.7241283817258269#4155
+0.7893623891767129#4156
+0.8467093485634559#4157
+0.8955962680242483#4158
+0.9355346856197043#4159
+0.9661255498830958#4160
+0.987063207010698#4161
+0.9981384548535612#4162
+0.9992406331962297#4163
+0.9903587294370351#4164
+0.9715814886223723#4165
+0.943096526735531#4166
+0.905188456099808#4167
+0.8582360416262537#4168
+0.8027084163198831#4169
+0.7391603938577652#4170
+0.6682269250741585#4171
+0.5906167537416616#4172
+0.5071053350377174#4173
+0.41852708745281125#4174
+0.32576705555673624#4175
+0.22975206692580843#4176
+0.13144147158809297#4177
+0.03181755651504257#4178
+-0.06812426906522044#4179
+-0.16738541946787286#4180
+-0.26497411008946486#4181
+-0.35991526699183735#4182
+-0.45126026951859527#4183
+-0.5380964285991342#4184
+-0.619556106036139#4185
+-0.694825383659648#4186
+-0.7631521957283619#4187
+-0.8238538433219311#4188
+-0.8763238156428974#4189
+-0.9200378500720962#4190
+-0.9545591704274494#4191
+-0.9795428510871975#4192
+-0.9947392633726951#4193
+-0.9999965697556514#4194
+-0.9952622409685223#4195
+-0.9805835808595879#4196
+-0.9561072537485367#4197
+-0.9220778190050644#4198
+-0.8788352874924923#4199
+-0.8268117242916139#4200
+-0.7665269316492288#4201
+-0.6985832552859171#4202
+-0.6236595659567079#4203
+-0.5425044763989001#4204
+-0.4559288614410496#4205
+-0.3647977560097223#4206
+-0.27002171198645003#4207
+-0.17254770027431887#4208
+-0.07334964897773245#4209
+0.026581287765269457#4210
+0.1262466330675262#4211
+0.2246505637437602#4212
+0.32080986024666885#4213
+0.413763730671632#4214
+0.5025834106718274#4215
+0.5863814433645755#4216
+0.6643205465071567#4217
+0.7356219783442121#4218
+0.7995733185379454#4219
+0.8555355864366431#4220
+0.9029496255581272#4221
+0.9413416904964934#4222
+0.9703281804296068#4223
+0.9896194719317152#4224
+0.9990228127949825#4225
+0.9984442479458342#4226
+0.9878895582129948#4227
+0.9674642025673584#4228
+0.9373722644108115#4229
+0.8979144124423419#4230
+0.8494848964757872#4231
+0.7925676082260158#4232
+0.7277312464228656#4233
+0.6556236345614223#4234
+0.576965248063798#4235
+0.49254201552687205#4236
+0.4031974659835432#4237
+0.3098243006394673#4238
+0.21335547329769788#4239
+0.11475486859267976#4240
+0.015007671173599317#4241
+-0.08488947793497129#4242
+-0.1839384394407459#4243
+-0.28114954886159205#4244
+-0.3755515049258966#4245
+-0.46620107449380255#4246
+-0.5521925170309506#4247
+-0.6326666344685011#4248
+-0.7068193560262241#4249
+-0.7739097722219453#4250
+-0.83326753779418#4251
+-0.8842995695703985#4252
+-0.9264959723580396#4253
+-0.9594351336487255#4254
+-0.9827879362310783#4255
+-0.9963210466211054#4256
+-0.9998992464532412#4257
+-0.9934867835375585#4258
+-0.9771477290838324#4259
+-0.9510453375231913#4260
+-0.9154404153238058#4261
+-0.8706887150988698#4262
+-0.8172373810440856#4263
+-0.7556204812206672#4264
+-0.686453671323811#4265
+-0.6104280432544994#4266
+-0.5283032199576698#4267
+-0.4408997655208472#4268
+-0.34909098636902386#4269
+-0.2537942054755377#4270
+-0.15596159677414934#4271
+-0.05657067135184257#4272
+0.043385489518834315#4273
+0.14290815691957492#4274
+0.24100293325553057#4275
+0.33668968794737386#4276
+0.42901235057205933#4277
+0.5170484636024555#4278
+0.5999183992980321#4279
+0.6767941486544775#4280
+0.7469075945959657#4281
+0.8095581867470729#4282
+0.8641199411005575#4283
+0.910047694642637#4284
+0.9468825524416159#4285
+0.9742564727743516#4286
+0.9918959444774944#4287
+0.9996247197806206#4288
+0.9973655753156946#4289
+0.9851410837074361#4290
+0.9630733880351154#4291
+0.9313829814192799#4292
+0.8903865039273795#4293
+0.8404935788108798#4294
+0.7822027196851367#4295
+0.7160963495461387#4296
+0.6428349813924542#4297
+0.5631506185976866#4298
+0.4778394409747333#4299
+0.38775384961027715#4300
+0.2937939499548949#4301
+0.19689855826693#4302
+0.09803582127077107#4303
+-0.0018064572451918896#4304
+-0.10163068623749626#4305
+-0.20043945500755345#4306
+-0.2972454989996491#4307
+-0.3910815642220373#4308
+-0.48101007172909493#4309
+-0.5661324856002233#4310
+-0.6455982908137508#4311
+-0.7186134913118861#4312
+-0.7844485433468682#4313
+-0.8424456448409379#4314
+-0.8920253079272591#4315
+-0.9326921490011307#4316
+-0.9640398384292128#4317
+-0.9857551604609085#4318
+-0.9976211427766078#4319
+-0.9995192244033847#4320
+-0.9914304403370466#4321
+-0.973435611034188#4322
+-0.9457145348809033#4323
+-0.9085441917067469#4324
+-0.8622959752938333#4325
+-0.8074319825329326#4326
+-0.7445003963040872#4327
+-0.6741300082144792#4328
+-0.5970239359205429#4329
+-0.5139525978087609#4330
+-0.42574601522981265#4331
+-0.33328551919960797#4332
+-0.23749494443110458#4333
+-0.1393313986832356#4334
+-0.0397756996565601#4335
+0.06017742501298571#4336
+0.15952927674381348#4337
+0.2572871646747842#4338
+0.35247432430415254#4339
+0.4441396769975931#4340
+0.5313673328515297#4341
+0.6132857419622988#4342
+0.6890764026646912#4343
+0.7579820397300296#4344
+0.8193141708099325#4345
+0.872459985524356#4346
+0.9168884684603441#4347
+0.9521557049025041#4348
+0.9779093162821043#4349
+0.9938919810272516#4350
+0.9999440056349789#4351
+0.9960049202759392#4352
+0.9821140829889516#4353
+0.9584102864284875#4354
+0.9251303710943455#4355
+0.8826068588996672#4356
+0.8312646307218977#4357
+0.7716166811335055#4358
+0.7042589927297871#4359
+0.6298645812677813#4360
+0.5491767711152941#4361
+0.4630017681995254#4362
+0.3722006046639412#4363
+0.27768053571971557#4364
+0.18038597465155876#4365
+0.08128905655235824#4366
+-0.018620074929324236#4367
+-0.11834316077729126#4368
+-0.21688380088181902#4369
+-0.3132574097401875#4370
+-0.4065010541095631#4371
+-0.49568307431765746#4372
+-0.5799123930982074#4373
+-0.6583474189404683#4374
+-0.7302044549933965#4375
+-0.7947655295055287#4376
+-0.8513855695613934#4377
+-0.8994988464368491#4378
+-0.9386246281734907#4379
+-0.9683719828934694#4380
+-0.9884436848615913#4381
+-0.9986391842666134#4382
+-0.9988566110486644#4383
+-0.9890937927512102#4384
+-0.9694482762275201#4385
+-0.9401163529847545#4386
+-0.9013910979041106#4387
+-0.8536594409334871#4388
+-0.7973983010113463#4389
+-0.7331698208503304#4390
+-0.6616157501930958#4391
+-0.5834510336610189#4392
+-0.4994566672638683#4393
+-0.4104718949458387#4394
+-0.31738582313747726#4395
+-0.2211285370981292#4396
+-0.12266180781147178#4397
+-0.022969482287764426#4398
+0.07695234671026101#4399
+0.17610529329702104#4400
+0.27349865400582685#4401
+0.3681593065704404#4402
+0.45914143304108707#4403
+0.5455359700847644#4404
+0.6264796920455684#4405
+0.7011638360101038#4406
+0.768842182699172#4407
+0.8288385124441429#4408
+0.880553361750354#4409
+0.9234700129381941#4410
+0.9571596570153528#4411
+0.9812856781945266#4412
+0.9956070172470954#4413
+0.9999805800872513#4414
+0.9943626675208029#4415
+0.9788094118730793#4416
+0.9534762161332899#4417
+0.9186162012192256#4418
+0.874577676876719#4419
+0.8218006614837998#4420
+0.7608124855325126#4421
+0.6922225227169522#4422
+0.6167161012727448#4423
+0.5350476564038567#4424
+0.44803319221541943#4425
+0.35654212847044664#4426
+0.2614886136349538#4427
+0.16382239100866292#4428
+0.06451930920389547#4429
+-0.03542842821118951#4430
+-0.13502217648266945#4431
+-0.2332668277991315#4432
+-0.3291807540799851#4433
+-0.4218056150787603#4434
+-0.5102159338020652#4435
+-0.5935283435697821#4436
+-0.6709104143229327#4437
+-0.7415889699896632#4438
+-0.8048578138049752#4439
+-0.8600847843953653#4440
+-0.9067180721263033#4441
+-0.944291732601697#4442
+-0.9724303422262768#4443
+-0.9908527493140615#4444
+-0.9993748832630681#4445
+-0.997911593727921#4446
+-0.9864775014139562#4447
+-0.9651868519919665#4448
+-0.9342523745932234#4449
+-0.8939831562903168#4450
+-0.8447815538012954#4451
+-0.7871391732743425#4452
+-0.721631958321646#4453
+-0.6489144353812071#4454
+-0.5697131739050296#4455
+-0.4848195267173279#4456
+-0.39508172307869294#4457
+-0.30139639345970826#4458
+-0.20469961070567458#4459
+-0.10595753710616392#4460
+-0.006156770820793085#4461
+0.09370551188346128#4462
+0.1926315200878997#4463
+0.28963281781913364#4464
+0.3837402001745981#4465
+0.47401337729756166#4466
+0.5595503694425562#4467
+0.6394965192588389#4468
+0.7130530312441288#4469
+0.7794849530452186#4470
+0.8381285188589453#4471
+0.8883977815606836#4472
+0.9297904672943264#4473
+0.9618929940266256#4474
+0.9843846039221565#4475
+0.9970405682495806#4476
+0.9997344327968439#4477
+0.9924392813598633#4478
+0.9752280046803405#4479
+0.948272572145566#4480
+0.911842313527146#4481
+0.8663012279269533#4482
+0.8121043468184239#4483
+0.7497931875224875#4484
+0.6799903425454984#4485
+0.6033932588407144#4486
+0.5207672691488844#4487
+0.4329379450464886#4488
+0.340782848107444#4489
+0.245222761597941#4490
+0.14721249031441808#4491
+0.04773132048965235#4492
+-0.052226764911569364#4493
+-0.15166301774166763#4494
+-0.2495839038316188#4495
+-0.345011030055953#4496
+-0.4369909201134505#4497
+-0.5246045413471654#4498
+-0.6069764874149429#4499
+-0.6832837250602186#4500
+-0.7527638175882598#4501
+-0.8147225428815908#4502
+-0.8685408298379123#4503
+-0.9136809439239166#4504
+-0.9496918600409943#4505
+-0.9762137690189293#4506
+-0.9929816727101918#4507
+-0.9998280317638305#4508
+-0.9966844396232869#4509
+-0.9835823060220958#4510
+-0.9606525431482109#4511
+-0.9281242576126963#4512
+-0.8863224612922014#4513
+-0.835664823917724#4514
+-0.7766574998567214#4515
+-0.7098900707859835#4516
+-0.6360296547864077#4517
+-0.5558142407196545#4518
+-0.47004531448738884#4519
+-0.37957985084908624#4520
+-0.2853217508135146#4521
+-0.18821281015864433#4522
+-0.08922330931955144#4523
+0.010657681332957976#4524
+0.11043218395654948#4525
+0.20910328470207334#4526
+0.30568509454720927#4527
+0.39921259997368597#4528
+0.4887513050633646#4529
+0.5734065686725494#4530
+0.6523325433905668#4531
+0.7247406269674924#4532
+0.7899073417671557#4533
+0.84718156351653#4534
+0.8959910271242357#4535
+0.9358480445641681#4536
+0.9663543776930457#4537
+0.9872052173142973#4538
+0.9981922287307987#4539
+0.9992056333562993#4540
+0.990235305586768#4541
+0.9713708739720819#4542
+0.942800825677183#4543
+0.9048106231806318#4544
+0.8577798520278825#4545
+0.8021784281379878#4546
+0.7385619025590685#4547
+0.6675659105858819#4548
+0.5898998207020697#4549
+0.5063396468047552#4550
+0.41772029453019976#4551
+0.32492721915266787#4552
+0.2288875784080196#4553
+0.13056096864009153#4554
+0.03092983683122936#4555
+-0.06901033568320586#4556
+-0.16826097973527826#4557
+-0.2658304156975201#4558
+-0.36074376201796365#4559
+-0.45205267591435566#4560
+-0.538844828901757#4561
+-0.6202530224771886#4562
+-0.6954638528804155#4563
+-0.7637258383554432#4564
+-0.8243569277078173#4565
+-0.8767513151347024#4566
+-0.9203854932362104#4567
+-0.9548234837282926#4568
+-0.9797211935936381#4569
+-0.9948298531453608#4570
+-0.9999985016514786#4571
+-0.9951754956846467#4572
+-0.9804090251262118#4573
+-0.9558466316688474#4574
+-0.9217337346287321#4575
+-0.8784111787968661#4576
+-0.8263118288305887#4577
+-0.7659562442130079#4578
+-0.6979474779947189#4579
+-0.622965051287066#4580
+-0.5417581637118176#4581
+-0.45513820764619767#4582
+-0.36397066105846365#4583
+-0.2691664399381365#4584
+-0.17167279672454178#4585
+-0.07246385567355651#4586
+0.02746912026995325#4587
+0.12712763384380946#4588
+0.2255159301231064#4589
+0.32165094577426767#4590
+0.41457213149891764#4591
+0.5033510495249554#4592
+0.5871006502498729#4593
+0.6649841353471638#4594
+0.736223318778593#4595
+0.8001064021718566#4596
+0.8559950868746282#4597
+0.9033309516237009#4598
+0.941641032105658#4599
+0.9705425466599525#4600
+0.9897467209067285#4601
+0.9990616730849682#4602
+0.9983943312716201#4603
+0.9877513633254895#4604
+0.9672391102641967#4605
+0.9370625237398807#4606
+0.8975231182300396#4607
+0.849015958404538#4608
+0.7920257117700172#4609
+0.7271218060323789#4610
+0.6549527395633749#4611
+0.5762396018192422#4612
+0.49176886845321643#4613
+0.4023845431107794#4614
+0.30897972442422345#4615
+0.21248768246633692#4616
+0.11387253382433511#4617
+0.014119608465615191#4618
+-0.0857743953535712#4619
+-0.18481136976762977#4620
+-0.282001770065486#4621
+-0.37637450189423827#4622
+-0.46698662411293085#4623
+-0.5529327703487394#4624
+-0.6333541951184943#4625
+-0.7074473541296843#4626
+-0.7744719330294112#4627
+-0.833758244380689#4628
+-0.8847139189579444#4629
+-0.9268298245045077#4630
+-0.9596851528138249#4631
+-0.9829516243059571#4632
+-0.9963967680886273#4633
+-0.9998862447295328#4634
+-0.9933851885315454#4635
+-0.9769585558992319#4636
+-0.9507704763159315#4637
+-0.9150826124162126#4638
+-0.8702515455393219#4639
+-0.8167252128863131#4640
+-0.7550384318796021#4641
+-0.6858075564440695#4642
+-0.6097243186023826#4643
+-0.5275489169172812#4644
+-0.44010242083882695#4645
+-0.3482585668498676#4646
+-0.25293502837991955#4647
+-0.1550842467156025#4648
+-0.05568391452213869#4649
+0.044272792938575674#4650
+0.14378714128688722#4651
+0.2418648160491692#4652
+0.33752585751936537#4653
+0.4298144521924413#4654
+0.5178084829369766#4655
+0.6006287424847309#4656
+0.6774477181790405#4657
+0.7474978602077449#4658
+0.8100792507071913#4659
+0.8645665971101664#4660
+0.9104154798625334#4661
+0.947167792083456#4662
+0.9744563168179221#4663
+0.9920083961471714#4664
+0.9996486554964923#4665
+0.9973007559200001#4666
+0.9849881568541509#4667
+0.9628338817188064#4668
+0.9310592887078893#4669
+0.8899818590514812#4670
+0.8400120248483158#4671
+0.7816490681639204#4672
+0.7154761323692573#4673
+0.6421543955649226#4674
+0.5624164643081216#4675
+0.4770590536501172#4676
+0.3869350266227958#4677
+0.29294487271317216#4678
+0.19602771047009768#4679
+0.09715190414215104#4680
+-0.002694611897834578#4681
+-0.10251420426645728#4682
+-0.2013095085927397#4683
+-0.2980933948532388#4684
+-0.3918988304489386#4685
+-0.4817885424753208#4686
+-0.5668643826434057#4687
+-0.6462763012805672#4688
+-0.7192308407458727#4689
+-0.784999063396549#4690
+-0.8429238348919543#4691
+-0.89242639006269#4692
+-0.933012115740859#4693
+-0.9642754927713421#4694
+-0.985904147825149#4695
+-0.9976819745304649#4696
+-0.9994912927360821#4697
+-0.991314024332571#4698
+-0.9732318738827741#4699
+-0.9454255122568215#4700
+-0.9081727714285188#4701
+-0.8618458684701038#4702
+-0.8069076864822988#4703
+-0.7439071496193778#4704
+-0.6734737384204668#4705
+-0.596311200248075#4706
+-0.5131905176770778#4707
+-0.42494220509167996#4708
+-0.3324480104602216#4709
+-0.2366321052009449#4710
+-0.13845185016667366#4711
+-0.03888823001163328#4712
+0.06106394848294375#4713
+0.16040599618933662#4714
+0.25814532020497766#4715
+0.35330534151262716#4716
+0.44493525263509953#4717
+0.5321195177892803#4718
+0.6139870206170349#4719
+0.6897197680919065#4720
+0.7585610636350439#4721
+0.8198230677772865#4722
+0.872893670823771#4723
+0.9172426088516656#4724
+0.9524267619320054#4725
+0.9780945816375459#4726
+0.9939896035984427#4727
+0.9999530100094578#4728
+0.9959252164849727#4729
+0.9819464674064724#4730
+0.9581564338139892#4731
+0.9247928178592397#4732
+0.882188977764299#4733
+0.8307705970164385#4734
+0.7710514310794344#4735
+0.7036281741187975#4736
+0.6291744970309135#4737
+0.5484343163461312#4738
+0.4622143612606979#4739
+0.37137611306529994#4740
+0.2768271975087733#4741
+0.17951231610164317#4742
+0.080403806970907#4743
+-0.019508070421117876#4744
+-0.1192250296220056#4745
+-0.21775073173746473#4746
+-0.31410074052022424#4747
+-0.40731235853160475#4748
+-0.49645424609610067#4749
+-0.5806357269395575#4750
+-0.6590156875320847#4751
+-0.7308109812164121#4752
+-0.7953042531504141#4753
+-0.8518511078795672#4754
+-0.8998865479233226#4755
+-0.938930619043168#4756
+-0.968593205786728#4757
+-0.9885779293924083#4758
+-0.9986851091080121#4759
+-0.9988137573348106#4760
+-0.9889625886622468#4761
+-0.9692300327113339#4762
+-0.9398132506584176#4763
+-0.9010061652658754#4764
+-0.8531965241030328#4765
+-0.7968620253006231#4766
+-0.7325655445489706#4767
+-0.6609495110301554#4768
+-0.5827294884779846#4769
+-0.49868702550169774#4770
+-0.4096618466106099#4771
+-0.3165434619643894#4772
+-0.22026227968157627#4773
+-0.12178030950921329#4774
+-0.022081550739451946#4775
+0.07783783958610788#4776
+0.17697949994829187#4777
+0.27435283964863644#4778
+0.36898493646420194#4779
+0.4599302577648192#4780
+0.5462801079625782#4781
+0.6271717078977682#4782
+0.7017968154430443#4783
+0.7694098011915946#4784
+0.8293350985397009#4785
+0.8809739537249303#4786
+0.9238104083758077#4787
+0.957416454797311#4788
+0.981456312482278#4789
+0.9956897831192412#4790
+0.9999746505745556#4791
+0.9942681018689966#4792
+0.978627154950896#4793
+0.9532080889916499#4794
+0.918264882895897#4795
+0.8741466776282583#4796
+0.8212942877122281#4797
+0.7602357967571705#4798
+0.691581281021455#4799
+0.6160167137321476#4800
+0.5342971110672784#4801
+0.44723898828376585#4802
+0.3557122013668739#4803
+0.2606312557167434#4804
+0.16294616871272874#4805
+0.0636329774537779#4806
+-0.036316013481625595#4807
+-0.13590214681479854#4808
+-0.23413039082027445#4809
+-0.33001928135389064#4810
+-0.4226107283180879#4811
+-0.5109795885814625#4812
+-0.5942429097031241#4813
+-0.6715687521016191#4814
+-0.7421845015202269#4815
+-0.8053845887332195#4816
+-0.8605375393603357#4817
+-0.9070922833500508#4818
+-0.9445836610893715#4819
+-0.9726370711249284#4820
+-0.9909722130568702#4821
+-0.9994058882078054#4822
+-0.9978538300834279#4823
+-0.9863315463354743#4824
+-0.9649541638143936#4825
+-0.9339352782599134#4826
+-0.893584820123014#4827
+-0.8443059578433111#4828
+-0.7865910695232777#4829
+-0.7210168232490024#4830
+-0.6482384152132938#4831
+-0.5689830232119021#4832
+-0.484042540923356#4833
+-0.3942656655690927#4834
+-0.30054941801136287#4835
+-0.203830180017291#4836
+-0.10507433824178496#4837
+-0.005268628411524885#4838
+0.09458972381224616#4839
+0.19350296678289045#4840
+0.29048279207301586#4841
+0.38456020932559115#4842
+0.4747952280852878#4843
+0.56028624987239#4844
+0.6401790766567751#4845
+0.7136754457222707#4846
+0.7800410056438436#4847
+0.8386126536842945#4848
+0.8888051612976158#4849
+0.9301170215391718#4850
+0.9621354599573143#4851
+0.9845405588992577#4852
+0.997108454022515#4853
+0.9997135710734083#4854
+0.9923298805835022#4855
+0.9750311579474484#4856
+0.947990246283629#4857
+0.9114773294428521#4858
+0.865857232420625#4859
+0.811585776146395#4860
+0.7492052230714963#4861
+0.6793388590619841#4862
+0.6026847657322923#4863
+0.5200088454444972#4864
+0.4321371686650891#4865
+0.33994772014193364#4866
+0.24436162637089454#4867
+0.1463339520043707#4868
+0.04684415716099188#4869
+-0.053113689016120146#4870
+-0.15254084076963417#4871
+-0.2504438548654753#4872
+-0.34584451674923133#4873
+-0.4377896145426254#4874
+-0.5253604632215139#4875
+-0.607682083812971#4876
+-0.6839319458959563#4877
+-0.7533481860533897#4878
+-0.815237220159576#4879
+-0.8689806734435207#4880
+-0.9140415590852341#4881
+-0.9499696436105324#4882
+-0.9764059454750843#4883
+-0.9930863218893389#4884
+-0.999844108045964#4885
+-0.9966117823795099#4886
+-0.9834216412195708#4887
+-0.960405476096536#4888
+-0.9277932569241824#4889
+-0.8859108342163137#4890
+-0.8351766832961389#4891
+-0.7760977230291721#4892
+-0.7092642508574933#4893
+-0.6353440447428335#4894
+-0.555075690949919#4895
+-0.4692612043366593#4896
+-0.37875801488679633#4897
+-0.28447040055293665#4898
+-0.18734045201016314#4899
+-0.08833865959742333#4900
+0.011545783501135819#4901
+0.11131486494748018#4902
+0.20997172505907102#4903
+0.3065306171012951#4904
+0.400026756542992#4905
+0.4895259608645748#4906
+0.5741339836009652#4907
+0.6530054493566748#4908
+0.7253523005173126#4909
+0.7904516712607705#4910
+0.8476531101935705#4911
+0.8963850794461777#4912
+0.9361606652904673#4913
+0.9665824432207433#4914
+0.9873464488880291#4915
+0.9982452152113649#4916
+0.9991698453203011#4917
+0.990111100616431#4918
+0.9711594930824132#4919
+0.942504380916159#4920
+0.9044320765263129#4921
+0.8573229857933078#4922
+0.8016478071795532#4923
+0.7379628286659907#4924
+0.6669043695064731#4925
+0.589182422336119#4926
+0.5055735591595948#4927
+0.4169131721003451#4928
+0.3240871264386389#4929
+0.2280229093385172#4930
+0.12968036270263658#4931
+0.030042092749259296#4932
+-0.06989634786427318#4933
+-0.16913640727460627#4934
+-0.2666865116125137#4935
+-0.36157197248122797#4936
+-0.4528447257207117#4937
+-0.5395928041513566#4938
+-0.6209494496485853#4939
+-0.696101773503521#4940
+-0.76429887853826#4941
+-0.8248593618222606#4942
+-0.8771781230251833#4943
+-0.9207324103793711#4944
+-0.9550870438427141#4945
+-0.9798987632737787#4946
+-0.9949196581736731#4947
+-0.9999996447258055#4948
+-0.9950879653837672#4949
+-0.9802336960239586#4950
+-0.9555852555956543#4951
+-0.9213889231679229#4952
+-0.8779863771905777#4953
+-0.8258112815560504#4954
+-0.7653849525731279#4955
+-0.6973111501467191#4956
+-0.6222700452084615#4957
+-0.5410114236736072#4958
+-0.45434719482800395#4959
+-0.3631432789988919#4960
+-0.26831095556522977#4961
+-0.17079775775536865#4962
+-0.07157800520824754#4963
+0.028356931106371913#4964
+0.12800853433893156#4965
+0.2263811186103717#4966
+0.32249177757630465#4967
+0.4153802053023024#4968
+0.5041182913233582#4969
+0.5878193940168606#4970
+0.6656471996326018#4971
+0.7368240784633209#4972
+0.8006388546636893#4973
+0.856453912084273#4974
+0.9037115651213302#4975
+0.9419396309270177#4976
+0.9707561473043234#4977
+0.9898731891470789#4978
+0.9990997452924452#4979
+0.9983436270413116#4980
+0.9876123892773043#4981
+0.9670132549808855#4982
+0.9367520438927767#4983
+0.8971311160311438#4984
+0.8485463506102431#4985
+0.7914831905461722#4986
+0.7265117920717187#4987
+0.6542813279237506#4988
+0.5755135010238178#4989
+0.49099533346112295#4990
+0.40157130282796105#4991
+0.3081349044787646#4992
+0.2116197240198723#4993
+0.1129901092307529#4994
+0.013231534619763643#4995
+-0.08665924511138251#4996
+-0.1856841543111132#4997
+-0.2828537688199873#4998
+-0.3771972019698358#4999
+-0.46777180536241775#5000
+-0.5536725875006172#5001
+-0.6340412561643325#5002
+-0.7080747941826249#5003
+-0.7750334829158495#5004
+-0.8342482932797833#5005
+-0.8851275704630837#5006
+-0.9271629455465875#5007
+-0.9599344149575082#5008
+-0.9831145370062989#5009
+-0.9964717035757779#5010
+-0.9998724542728749#5011
+-0.9932828099207633#5012
+-0.9767686120675627#5013
+-0.9504948651193542#5014
+-0.9147240876706985#5015
+-0.8698136895056156#5016
+-0.8162124004771674#5017
+-0.754455786947096#5018
+-0.6851609005837718#5019
+-0.6090201129858933#5020
+-0.5267941977343409#5021
+-0.4393047289940346#5022
+-0.34742587261645447#5023
+-0.25207565176341384#5024
+-0.1542067743230842#5025
+-0.05479711376769998#5026
+0.04516006143493376#5027
+0.14466601223164102#5028
+0.24272650805435486#5029
+0.3383617608433046#5030
+0.43061621476543416#5031
+0.5185680938124212#5032
+0.6013386118818538#5033
+0.6781007533174772#5034
+0.748087536176257#5035
+0.8105996756584224#5036
+0.8650125711300333#5037
+0.910782546926049#5038
+0.9474522845778579#5039
+0.9746553921882468#5040
+0.9921200652981245#5041
+0.9996718026668301#5042
+0.9972351498308482#5043
+0.9848344530198655#5044
+0.9625936158972921#5045
+0.9307348615558133#5046
+0.8895765121377056#5047
+0.8395298082652133#5048
+0.7810948000601897#5049
+0.7148553508085741#5050
+0.6414733031914381#5051
+0.5616818663716927#5052
+0.4762782900104988#5053
+0.38611589841218874#5054
+0.2920955643898892#5055
+0.19515670804216095#5056
+0.0962679103779054#5057
+-0.003582764424906281#5058
+-0.10339764142988875#5059
+-0.20217940338041937#5060
+-0.2989410555639972#5061
+-0.3927157875371532#5062
+-0.48256663317581633#5063
+-0.5675958325311052#5064
+-0.6469538019499782#5065
+-0.7198476228342582#5066
+-0.785548964221163#5067
+-0.8434013600255303#5068
+-0.8928267682319421#5069
+-0.9333313464994675#5070
+-0.9645103864710906#5071
+-0.9860523574858352#5072
+-0.9977420192901507#5073
+-0.9994625726473769#5074
+-0.9911968263571076#5075
+-0.9730273690239829#5076
+-0.9451357438596512#5077
+-0.9078006347630092#5078
+-0.8613950818028046#5079
+-0.8063827539245794#5080
+-0.7433133161238353#5081
+-0.6728169373750934#5082
+-0.5955979941918066#5083
+-0.5124280327290739#5084
+-0.4241380597494972#5085
+-0.33161023947830387#5086
+-0.23576907931001329#5087
+-0.13757219243615187#5088
+-0.03800072969078855#5089
+0.06195042378427414#5090
+0.16128258910297158#5091
+0.2590032721042872#5092
+0.3541360800258346#5093
+0.4457304772975865#5094
+0.5328712829790856#5095
+0.6146878149448826#5096
+0.6903625894525244#5097
+0.7591394891698853#5098
+0.8203313180496092#5099
+0.8733266675648592#5100
+0.9175960257012121#5101
+0.9526970676656734#5102
+0.9782790754497961#5103
+0.9940864420880884#5104
+0.9999612255983212#5105
+0.9958447270856055#5106
+0.9817780772423467#5107
+0.9579018253839627#5108
+0.9244545351265829#5109
+0.8817704007382551#5110
+0.8302759079802887#5111
+0.7704855728025053#5112
+0.7029968004699444#5113
+0.6284839164869312#5114
+0.5476914289595397#5115
+0.46142658971669825#5116
+0.37055132851675693#5117
+0.2759736409302586#5118
+0.17863851594834093#5119
+0.07951849396516575#5120
+-0.02039605052444625#5121
+-0.12010680441925582#5122
+-0.21861749082633866#5123
+-0.31494382353041833#5124
+-0.4081233416563674#5125
+-0.4972250262601245#5126
+-0.5813586027622296#5127
+-0.6596834362771361#5128
+-0.7314169309591104#5129
+-0.7958423494412308#5130
+-0.8523159742382354#5131
+-0.9002735395588507#5132
+-0.9392358692630565#5133
+-0.968813664631682#5134
+-0.9887113941105229#5135
+-0.9987302461639416#5136
+-0.9987701157340123#5137
+-0.9888306044571701#5138
+-0.9690110246445276#5139
+-0.9395094069860908#5140
+-0.9006205218935647#5141
+-0.8527329342518376#5142
+-0.796325121007094#5143
+-0.7319606903833317#5144
+-0.6602827504952915#5145
+-0.5820074836247582#5146
+-0.49791699036393944#5147
+-0.4088514751248763#5148
+-0.3157008510946928#5149
+-0.2193958485171965#5150
+-0.12089871514394081#5151
+-0.02119360177276821#5152
+0.07872327106164467#5153
+0.17785356699406288#5154
+0.27520680887564847#5155
+0.36981027529422345#5156
+0.4607187196850812#5157
+0.5470238149222044#5158
+0.6278632290226549#5159
+0.702429241282698#5160
+0.7699768127560778#5161
+0.8298310304368901#5162
+0.8813938507672423#5163
+0.9241500750907953#5164
+0.9576724973474368#5165
+0.9816261725750176#5166
+0.9957717635686961#5167
+0.9999679322591741#5168
+0.9941727519159652#5169
+0.978444126065427#5170
+0.9529392099378654#5171
+0.917912840224423#5172
+0.8737149888330982#5173
+0.8207872660851259#5174
+0.7596585082906251#5175
+0.6909394937909978#5176
+0.6153168402636389#5177
+0.533546144265068#5178
+0.44644443155990476#5179
+0.3548819936695015#5180
+0.2597736922067416#5181
+0.16206981788121674#5182
+0.06274659550858111#5183
+-0.03720357010510971#5184
+-0.13678200994417533#5185
+-0.23499376915399928#5186
+-0.33085754830104785#5187
+-0.4234155081924356#5188
+-0.5117428402885212#5189
+-0.5949570070841342#5190
+-0.6722265601315991#5191
+-0.7427794475987832#5192
+-0.8059107283557985#5193
+-0.8609896155137471#5194
+-0.9074657790388062#5195
+-0.9448748444680102#5196
+-0.9728430327853834#5197
+-0.9910908950983123#5198
+-0.9994361047985073#5199
+-0.9977952793092036#5200
+-0.9861848132163057#5201
+-0.9647207144591039#5202
+-0.9336174452172925#5203
+-0.893185779075762#5204
+-0.8438296958776669#5205
+-0.7860423452913707#5206
+-0.7204011194219737#5207
+-0.6475618837002585#5208
+-0.5682524236921068#5209
+-0.4832651733056984#5210
+-0.39344929705384485#5211
+-0.2997022054828736#5212
+-0.20296058854309376#5213
+-0.1041910564924412#5214
+-0.004380481846299932#5215
+0.0954738611264548#5216
+0.19437426083829612#5217
+0.2913325371874285#5218
+0.38537991512671593#5219
+0.47557670434371857#5220
+0.5610216883356741#5221
+0.6408611290668913#5222
+0.7142972972369935#5223
+0.7805964429283947#5224
+0.8390961269929299#5225
+0.8892118399248504#5226
+0.9304428420865926#5227
+0.9623771669337133#5228
+0.9846957372484245#5229
+0.9971755532536798#5230
+0.9996919207532333#5231
+0.9922196970348302#5232
+0.9748335420878756#5233
+0.9477071726255013#5234
+0.9111116263645896#5235
+0.8654125539065005#5236
+0.8110665652771305#5237
+0.7486166676304692#5238
+0.6786868397006105#5239
+0.6019757972125022#5240
+0.5192500115453864#5241
+0.4313360514041404#5242
+0.3391123240180043#5243
+0.2435002983859096#5244
+0.14545529826283898#5245
+0.04595695688065448#5246
+-0.054000571223331524#5247
+-0.15341854346986936#5248
+-0.25130360834348353#5249
+-0.346677730632457#5250
+-0.4385879636333711#5251
+-0.5261159706795642#5252
+-0.6083872008575425#5253
+-0.6845796272306204#5254
+-0.7539319602603454#5255
+-0.8157512543599176#5256
+-0.8694198315774354#5257
+-0.9144014532298141#5258
+-0.9502466778224503#5259
+-0.9765973517200701#5260
+-0.993190187699463#5261
+-0.9998593956283852#5262
+-0.996538338985758#5263
+-0.9832602006717591#5264
+-0.9601576514552531#5265
+-0.927461524371324#5266
+-0.8854985083138918#5267
+-0.8346878838682738#5268
+-0.7755373339981713#5269
+-0.7086378714453144#5270
+-0.6346579335255096#5271
+-0.5543367033239355#5272
+-0.46847672402209806#5273
+-0.3779358801516458#5274
+-0.28361882589570886#5275
+-0.18646794608333994#5276
+-0.08745394019181343#5277
+0.012433876561680912#5278
+0.11219745813066402#5279
+0.2108399997855538#5280
+0.3073758978570232#5281
+0.4008405975620669#5282
+0.4903002305165539#5283
+0.5748609456394255#5284
+0.6536778402172297#5285
+0.7259634018927463#5286
+0.7909953772281428#5287
+0.848123988222581#5288
+0.896778424679212#5289
+0.9364725475519793#5290
+0.9668097462862708#5291
+0.9874869016204777#5292
+0.9982974142534595#5293
+0.9991332691164677#5294
+0.989986114624008#5295
+0.9709473461201218#5296
+0.94220719268632#5297
+0.9040528164354815#5298
+0.856865443282945#5299
+0.8011165538631789#5300
+0.7373631726511333#5301
+0.6662423023578131#5302
+0.5884645592097554#5303
+0.5048070727065923#5304
+0.41610572079997543#5305
+0.32324677807738733#5306
+0.2271580603994272#5307
+0.12879965447042646#5308
+0.029154324969461867#5309
+-0.07078230490945918#5310
+-0.17001170139524382#5311
+-0.2675423971590831#5312
+-0.36239989772826614#5313
+-0.45363641831282586#5314
+-0.540340353757865#5315
+-0.6216453870009271#5316
+-0.6967391450257175#5317
+-0.7648713158247487#5318
+-0.8253611452688975#5319
+-0.877604238977637#5320
+-0.9210786012279#5321
+-0.9553498505627952#5322
+-0.9800755599875371#5323
+-0.9950086783867864#5324
+-0.9999999989777303#5325
+-0.9949996501349354#5326
+-0.9800575936911434#5327
+-0.9553231257351534#5328
+-0.9210433848946539#5329
+-0.8775608830087473#5330
+-0.825310082862874#5331
+-0.7648130571802731#5332
+-0.696674272243908#5333
+-0.6215745482691752#5334
+-0.5402642568733623#5335
+-0.45355582361048796#5336
+-0.36231561048371774#5337
+-0.2674552595426102#5338
+-0.16992258405710617#5339
+-0.07069209828064123#5340
+0.0292447195741433#5341
+0.1288893338579619#5342
+0.22724612852302042#5343
+0.3233323549894589#5344
+0.4161879514443078#5345
+0.5048851354617692#5346
+0.5885376740985312#5347
+0.6663097388403877#5348
+0.7374242569244644#5349
+0.8011706755933992#5350
+0.8569120617036162#5351
+0.9040914657507545#5352
+0.9422374867250122#5353
+0.9709689821942126#5354
+0.9899988765529969#5355
+0.9991370293873787#5356
+0.9982921352949088#5357
+0.9874726361780741#5358
+0.9667866368955992#5359
+0.9364408251144325#5360
+0.8967384061548997#5361
+0.84807607346337#5362
+0.7909400449824686#5363
+0.7259012050221171#5364
+0.6536094001722174#5365
+0.5747869462503366#5366
+0.4902214111608231#5367
+0.4007577457766425#5368
+0.307289841469558#5369
+0.21075159864302492#5370
+0.11210759550806611#5371
+0.012343450336634304#5372
+-0.087544026510359#5373
+-0.18655679238266815#5374
+-0.28370554445296553#5375
+-0.3780196045036721#5376
+-0.4685566176228442#5377
+-0.5544119679029521#5378
+-0.6347278170640023#5379
+-0.708701675690067#5380
+-0.775594421438261#5381
+-0.8347376841048699#5382
+-0.8855405237594921#5383
+-0.9274953352214845#5384
+-0.9601829198831353#5385
+-0.9832766742035843#5386
+-0.9965458530234417#5387
+-0.9998578750941465#5388
+-0.9931796477859774#5389
+-0.9765778977386692#5390
+-0.9502185041508856#5391
+-0.9143648413700989#5392
+-0.8693751473431697#5393
+-0.8156989442211995#5394
+-0.7538725468827897#5395
+-0.684513704253056#5396
+-0.6083154269605701#5397
+-0.5260390630042369#5398
+-0.43850669061575864#5399
+-0.34659290432568596#5400
+-0.2512160763039714#5401
+-0.15332918028882067#5402
+-0.05391026978811178#5403
+0.046047294307954255#5404
+0.14554476906050678#5405
+0.24358800859131027#5406
+0.33919739725975856#5407
+0.4314176376585382#5408
+0.5193272956295426#5409
+0.6020480069293945#5410
+0.6787532535546172#5411
+0.7486766220363146#5412
+0.8111194611902097#5413
+0.865457862808335#5414
+0.9111488955436093#5415
+0.9477360297003892#5416
+0.9748536987282782#5417
+0.9922309518422593#5418
+0.9996941612733737#5419
+0.9971687570999949#5420
+0.9846799723258353#5421
+0.9623525907601151#5422
+0.9304097002189882#5423
+0.8891704635058256#5424
+0.8390469294419863#5425
+0.7805399158111991#5426
+0.7142340053538154#5427
+0.6407917048093058#5428
+0.5609468253679145#5429
+0.47549715067181214#5430
+0.3852964656246555#5431
+0.291246025655054#5432
+0.19428555167024208#5433
+0.09538384067540505#5434
+-0.004470914125755297#5435
+-0.1042809970308588#5436
+-0.20304913868434413#5437
+-0.2997884804632161#5438
+-0.3935324348421947#5439
+-0.483344343216756#5440
+-0.568326834686291#5441
+-0.6476307922875124#5442
+-0.7204638370904717#5443
+-0.7860982453869009#5444
+-0.8438782198649527#5445
+-0.8932264421191625#5446
+-0.9336498410251193#5447
+-0.9647445193431539#5448
+-0.9861997893260463#5449
+-0.9978012770082968#5450
+-0.9994330641599263#5451
+-0.9910788465031126#5452
+-0.9728220966191456#5453
+-0.9448452299179868#5454
+-0.9074277820037917#5455
+-0.8609436156475553#5456
+-0.8058571852738867#5457
+-0.742718896285927#5458
+-0.6721596055965009#5459
+-0.5948843183143766#5460
+-0.5116651435662637#5461
+-0.42333357983764397#5462
+-0.3307722069147612#5463
+-0.23490586743913935#5464
+-0.13669242618562055#5465
+-0.0371131993941631#5466
+0.06283685021764836#5467
+0.16215905479318588#5468
+0.25986101969588604#5469
+0.3549665391884163#5470
+0.44652535035771196#5471
+0.533622627827888#5472
+0.6153881243929944#5473
+0.6910048662394316#5474
+0.7597173158782414#5475
+0.8208389212259487#5476
+0.8737589754060353#5477
+0.9179487187301777#5478
+0.952966621890268#5479
+0.9784627975733101#5480
+0.9941824964197943#5481
+0.9999686523950879#5482
+0.9957634521413347#5483
+0.9816089126294156#5484
+0.9576464613392653#5485
+0.9241155231632417#5486
+0.8813511281517454#5487
+0.8297805640037017#5488
+0.7699191067491161#5489
+0.7023648722813098#5490
+0.6277928401806244#5491
+0.5469481095415738#5492
+0.4606384541889888#5493
+0.3697262516689739#5494
+0.27511986665753085#5495
+0.1777645748809813#5496
+0.07863311823337614#5497
+-0.02128401453896417#5498
+-0.12098848447359085#5499
+-0.2194840774648326#5500
+-0.3157866581058347#5501
+-0.40893400284423276#5502
+-0.4979954142018187#5503
+-0.5820810199960956#5504
+-0.6603506646489725#5505
+-0.7320223037435822#5506
+-0.796379817953585#5507
+-0.8527801682707603#5508
+-0.9006598210382154#5509
+-0.9395403785924068#5510
+-0.9690333592544564#5511
+-0.988844078910672#5512
+-0.9987745953988022#5513
+-0.9987256862806896#5514
+-0.9886978402400751#5515
+-0.9687912521998316#5516
+-0.9392048222074141#5517
+-0.9002341680913335#5518
+-0.8522686717455321#5519
+-0.7957875885542126#5520
+-0.7313552588304589#5521
+-0.6596154691143745#5522
+-0.5812850196707813#5523
+-0.497146562457916#5524
+-0.4080407811277736#5525
+-0.3148579911929501#5526
+-0.2185292442883396#5527
+-0.12001702541096315#5528
+-0.02030563608803385#5529
+0.0796086404385363#5530
+0.17872749374496208#5531
+0.27606056101334203#5532
+0.3706353224095644#5533
+0.4615068181800175#5534
+0.5477670903770854#5535
+0.6285542548748294#5536
+0.703061113030274#5537
+0.7705432169454224#5538
+0.830326307744572#5539
+0.8818130525461197#5540
+0.9244890128152635#5541
+0.9579277844637908#5542
+0.9817952583387776#5543
+0.9958529585308029#5544
+0.9999604251464057#5545
+0.994076617736911#5546
+0.9782603253610263#5547
+0.9526695791840002#5548
+0.9175600734824577#5549
+0.8732826108317093#5550
+0.8202795970023783#5551
+0.7590806205881805#5552
+0.6902971615317548#5553
+0.6146164814192049#5554
+0.5327947565895087#5555
+0.44564952267049884#5556
+0.35405150603310986#5557
+0.2589159237813043#5558
+0.16119333920530024#5559
+0.06186016406738981#5560
+-0.03809109738163067#5561
+-0.13766176517685647#5562
+-0.23585696211936405#5563
+-0.33169555426032#5564
+-0.424219954067078#5565
+-0.5125056883212689#5566
+-0.595670635149608#5567
+-0.6728838378940628#5568
+-0.7433738077561016#5569
+-0.8064362322577487#5570
+-0.8614410124990496#5571
+-0.9078385588979957#5572
+-0.9451652825079584#5573
+-0.973048227045201#5574
+-0.9912087953447836#5575
+-0.9994655330113421#5576
+-0.9977359414514271#5577
+-0.9860373021721781#5578
+-0.9644865041102175#5579
+-0.9332988757160339#5580
+-0.8927860334632826#5581
+-0.8433527682799882#5582
+-0.7854930010113974#5583
+-0.7197848473261622#5584
+-0.6468848413756778#5585
+-0.5675213759218636#5586
+-0.48248742447746074#5587
+-0.3926326181768149#5588
+-0.2988547565424325#5589
+-0.20209083696892502#5590
+-0.10330769255477226#5591
+-0.0034923318255946968#5592
+0.09635792312877281#5593
+0.19524540156693176#5594
+0.2921820524921821#5595
+0.3861993169314748#5596
+0.4763578054565078#5597
+0.5617566842523725#5598
+0.6415426759512564#5599
+0.7149185852978462#5600
+0.7811512644608015#5601
+0.8395789384035385#5602
+0.8896178171216423#5603
+0.9307679286796158#5604
+0.9626181147651897#5605
+0.9848501388472685#5606
+0.9972418658901542#5607
+0.9996694818533945#5608
+0.9921087308007481#5609
+0.9746351572574807#5610
+0.9474233513944414#5611
+0.9107452045807868#5612
+0.8649671927352955#5613
+0.8105467146201293#5614
+0.7480275216635965#5615
+0.6780342849756218#5616
+0.6012663538405035#5617
+0.5184907680500401#5618
+0.4305345938954794#5619
+0.3382766603945284#5620
+0.24263877832231104#5621
+0.14457652978281252#5622
+0.045069720348370305#5623
+-0.05488741083372423#5624
+-0.15429612515013374#5625
+-0.2521631635875603#5626
+-0.34751067104847855#5627
+-0.4393859667560341#5628
+-0.5268710631254516#5629
+-0.6090918379925355#5630
+-0.6852267685533883#5631
+-0.7545151397487074#5632
+-0.8162646450771994#5633
+-0.8698583038932945#5634
+-0.9147606260738101#5635
+-0.9505229624582529#5636
+-0.9767879876029256#5637
+-0.993293270058646#5638
+-0.9998738944990372#5639
+-0.996464109499956#5640
+-0.9830979845059883#5641
+-0.9599090694198203#5642
+-0.927129060215757#5643
+-0.885085483910135#5644
+-0.8341984260196418#5645
+-0.7749763332056944#5646
+-0.7080109330434688#5647
+-0.6339713216755684#5648
+-0.5535972784245394#5649
+-0.4676918741624206#5650
+-0.37711344729204793#5651
+-0.28276702751346355#5652
+-0.1855952930663155#5653
+-0.08656915180049524#5654
+0.013321959814158985#5655
+0.1130799628100045#5656
+0.21170810819671795#5657
+0.30822093614772517#5658
+0.4016541223890385#5659
+0.4910741134086396#5660
+0.5755874542145792#5661
+0.6543497154419204#5662
+0.7265739306118212#5663
+0.791538459240455#5664
+0.8485941972321822#5665
+0.897171062513109#5666
+0.9367836911027245#5667
+0.9670362867103555#5668
+0.9876265754008688#5669
+0.9983488258159133#5670
+0.9990959047736466#5671
+0.9898603477080745#5672
+0.970734433252527#5673
+0.941909261222057#5674
+0.9036728432072584#5675
+0.8564072248576555#5676
+0.8005846686078619#5677
+0.7367629349874418#5678
+0.6655797096620707#5679
+0.5877462318891539#5680
+0.5040401880502716#5681
+0.41529794126592323#5682
+0.3224061747316915#5683
+0.22629303227285133#5684
+0.12791884463807107#5685
+0.028266534192014796#5686
+-0.07166820612001427#5687
+-0.17088686140685108#5688
+-0.26839807166219604#5689
+-0.3632275371060979#5690
+-0.45442775306629446#5691
+-0.5410874771316942#5692
+-0.6223408339853317#5693
+-0.6973759669443137#5694
+-0.7654431497634311#5695
+-0.825862277651974#5696
+-0.8780296626559881#5697
+-0.9214240655087582#5698
+-0.9556119036812614#5699
+-0.9802515835954748#5700
+-0.9950969137144907#5701
+-0.9999995644069737#5702
+-0.9949105500078052#5703
+-0.9798807182666571#5704
+-0.9550602422940854#5705
+-0.9206971200814494#5706
+-0.8771346965869603#5707
+-0.8248082331463521#5708
+-0.7642405584854947#5709
+-0.6960368447885882#5710
+-0.620878561017742#5711
+-0.5395166639003695#5712
+-0.4527640946178#5713
+-0.3614876561657189#5714
+-0.26659935254516054#5715
+-0.1690472763199991#5716
+-0.06980613558944763#5717
+0.030132484973073366#5718
+0.12977003170621854#5719
+0.22811095917882387#5720
+0.3241726773507713#5721
+0.4169953692878687#5722
+0.5056515813353825#5723
+0.5892554899283811#5724
+0.6669717524479807#5725
+0.738023853688666#5726
+0.8017018645415418#5727
+0.8573695353713178#5728
+0.904470653212348#5729
+0.942534599264724#5730
+0.9711810511617585#5731
+0.9901237830253536#5732
+0.9991735253403632#5733
+0.9982398560730228#5734
+0.9873321041380214#5735
+0.9665592561870703#5736
+0.936128867650305#5737
+0.8963449889110358#5738
+0.8476051273348236#5739
+0.7903962755072824#5740
+0.7252900453651407#5741
+0.6529369568387209#5742
+0.574059938071828#5743
+0.48944710216270515#5744
+0.3999438725984719#5745
+0.3064445360631003#5746
+0.20988330702048066#5747
+0.11122499335230866#5748
+0.011455356316654522#5749
+-0.08842873885267832#5750
+-0.18742928329404956#5751
+-0.28455709629262965#5752
+-0.37884170884712265#5753
+-0.4693410602752329#5754
+-0.5551509109725986#5755
+-0.6354138772760167#5756
+-0.7093279981575924#5757
+-0.7761547481542365#5758
+-0.8352264164699689#5759
+-0.8859527785214759#5760
+-0.9278269932670445#5761
+-0.9604306673947122#5762
+-0.9834380357699366#5763
+-0.9966192163731373#5764
+-0.9998425072048462#5765
+-0.9930757022085512#5766
+-0.9763864130629667#5767
+-0.9499413936284902#5768
+-0.9140048737977496#5769
+-0.8689359193978601#5770
+-0.8151848445233696#5771
+-0.7532887121466815#5772
+-0.6838659679623627#5773
+-0.6076102610821948#5774
+-0.5252835133225399#5775
+-0.43770830633340774#5776
+-0.3457596626345197#5777
+-0.2503563026795348#5778
+-0.15245146530496573#5779
+-0.053023383282823196#5780
+0.04693449085788134#5781
+0.14642341108041368#5782
+0.24444931698057448#5783
+0.3400327661096653#5784
+0.43221872023967534#5785
+0.5200860877895621#5786
+0.602756927067857#5787
+0.6794052183758368#5788
+0.7492651173233087#5789
+0.8116386068926013#5790
+0.8659024717938725#5791
+0.9115145254262775#5792
+0.9480190272272615#5793
+0.9750512362816127#5794
+0.9923410556921204#5795
+0.9997157312984891#5796
+0.9971015777798035#5797
+0.984524714893898#5798
+0.9621108064973708#5799
+0.9300838049538668#5800
+0.8887637134760895#5801
+0.8385633887594791#5802
+0.779984415854583#5803
+0.713612096495033#5804
+0.6401096009560984#5805
+0.5602113418765098#5806
+0.4747156362501377#5807
+0.3844767289064784#5808
+0.2903962571786933#5809
+0.19341424204141744#5810
+0.09449969573191108#5811
+-0.005359060299902684#5812
+-0.10516427037266961#5813
+-0.2039187138185583#5814
+-0.30063566888253596#5815
+-0.39434877171997756#5816
+-0.48412167198476425#5817
+-0.5690573885324254#5818
+-0.6483072717592313#5819
+-0.7210794830285081#5820
+-0.7866469064605475#5821
+-0.8443544140341247#5822
+-0.8936254114091304#5823
+-0.9339675990666196#5824
+-0.9649778912028727#5825
+-0.9863464432295038#5826
+-0.997859747638167#5827
+-0.9994027672970033#5828
+-0.990960084863636#5829
+-0.9726160568301596#5830
+-0.9445539706609553#5831
+-0.9070542134449333#5832
+-0.8604914703604248#5833
+-0.8053309809447339#5834
+-0.7421238905744688#5835
+-0.6715017436031232#5836
+-0.5941701731786572#5837
+-0.5109018507903337#5838
+-0.4225287659906093#5839
+-0.32993391343054546#5840
+-0.23404247026913375#5841
+-0.13581255210894666#5842
+-0.036225639821747355#5843
+0.06372322708394657#5844
+0.16303539256871574#5845
+0.26071856230327317#5846
+0.35579671834539367#5847
+0.4473198711885637#5848
+0.534373551743106#5849
+0.61608794840904#5850
+0.6916465979460678#5851
+0.7602945433043837#5852
+0.8213458769059611#5853
+0.8741905940063404#5854
+0.9183006876603954#5855
+0.953235424393193#5856
+0.9786457478631875#5857
+0.9942777665178029#5858
+0.9999752903939005#5859
+0.9956813917162614#5860
+0.9814389737010982#5861
+0.9573903418813012#5862
+0.9237757822365931#5863
+0.8809311603354478#5864
+0.8292845654773529#5865
+0.7693520333660359#5866
+0.7017323900512924#5867
+0.6271012686570413#5868
+0.5462043586784855#5869
+0.4598499552991679#5870
+0.3689008831726845#5871
+0.27426587536395725#5872
+0.17689049358883693#5873
+0.07774768047399928#5874
+-0.022171961764168652#5875
+-0.12187006908946504#5876
+-0.22035049096930778#5877
+-0.31662924358157246#5878
+-0.40974434145568117#5879
+-0.4987654093134345#5880
+-0.5828029780712501#5881
+-0.6610173721212264#5882
+-0.7326270990922569#5883
+-0.7969166582634752#5884
+-0.8532436896109454#5885
+-0.9010453920566842#5886
+-0.9398441467909955#5887
+-0.9692522894817371#5888
+-0.9889759836881826#5889
+-0.9988181567776074#5890
+-0.998680469009892#5891
+-0.9885642961156978#5892
+-0.9685707155506215#5893
+-0.9388994965626704#5894
+-0.8998471041639711#5895
+-0.851803736950367#5896
+-0.7952494283660311#5897
+-0.7307492503679691#5898
+-0.6589476674138139#5899
+-0.580562097185996#5900
+-0.4963757423914076#5901
+-0.4072297652588474#5902
+-0.31401488292408225#5903
+-0.21766246767865804#5904
+-0.11913524100583359#5905
+-0.01941765438575316#5906
+0.08049394701832663#5907
+0.17960127951156024#5908
+0.27691409538820333#5909
+0.3714600771593562#5910
+0.46229455262790753#5911
+0.5485099337408607#5912
+0.6292447849091506#5913
+0.7036924301872969#5914
+0.7711090133127998#5915
+0.8308209300720284#5916
+0.8822315587308598#5917
+0.9248272212818289#5918
+0.9581823159449805#5919
+0.9819635696401684#5920
+0.9959333679415077#5921
+0.9999521292421726#5922
+0.9939796994076727#5923
+0.9780757529826917#5924
+0.9523991969427621#5925
+0.917206582948294#5926
+0.8728495439651891#5927
+0.8197712808644788#5928
+0.7585021341057248#5929
+0.6896542847504532#5930
+0.6139156377513494#5931
+0.5320429486333605#5932
+0.4448542622426411#5933
+0.3532207391128595#5934
+0.2580579511171135#5935
+0.1603167333764215#5936
+0.060973683829497964#5937
+-0.038978594611030024#5938
+-0.13854141181881474#5939
+-0.23671996903540732#5940
+-0.3325332985706153#5941
+-0.42502406530739834#5942
+-0.5132681320779048#5943
+-0.5963837933365737#5944
+-0.6735405848704926#5945
+-0.7439675815232989#5946
+-0.806961100024507#5947
+-0.8618917299601419#5948
+-0.908210622633538#5949
+-0.9454549749800931#5950
+-0.9732526537425062#5951
+-0.9913259137032742#5952
+-0.9994941728230944#5953
+-0.997675816556909#5954
+-0.985889013319461#5955
+-0.9642515329525#5956
+-0.9329795700074526#5957
+-0.8923855836009295#5958
+-0.8428751754265166#5959
+-0.7849430371167282#5960
+-0.7191680074477368#5961
+-0.6462072887736614#5962
+-0.5667898804778864#5963
+-0.4817092950521987#5964
+-0.3918156295822699#5965
+-0.29800707185858066#5966
+-0.20122092598092017#5967
+-0.10242424712565217#5968
+-0.0026041790500589026#5969
+0.09724190912177542#5970
+0.19611638828156605#5971
+0.29303133731710534#5972
+0.3870184140934526#5973
+0.47713853080745516#5974
+0.5624912370426562#5975
+0.6422237167722069#5976
+0.7155393094147028#5977
+0.7817054698033725#5978
+0.8400610875352369#5979
+0.8900230925677216#5980
+0.9310922810617849#5981
+0.9628583032616626#5982
+0.9850037635739842#5983
+0.997307391879625#5984
+0.9996462543915937#5985
+0.9919969819687958#5986
+0.9744360036127667#5987
+0.9471387828143523#5988
+0.9103780643805088#5989
+0.8645211492583496#5990
+0.8100262245854944#5991
+0.7474377856356479#5992
+0.6773811954018097#5993
+0.6005564361759669#5994
+0.5177311155574154#5995
+0.42973279677136517#5996
+0.33744072993074997#5997
+0.2417770668597405#5998
+0.14369764725754003#5999
+0.04418244826406843#6000
+-0.055774207147682296#6001
+-0.15517358511811483#6002
+-0.25302251991961405#6003
+-0.34834333734020045#6004
+-0.4401836232810802#6005
+-0.5276257399634938#6006
+-0.6097959946620711#6007
+-0.6858733693537384#6008
+-0.7550977240584129#6009
+-0.8167773919064145#6010
+-0.8702960900451931#6011
+-0.9151190773338755#6012
+-0.9507984972999824#6013
+-0.9769778529732608#6014
+-0.9933955688855672#6015
+-0.9998876046464816#6016
+-0.9963890939806623#6017
+-0.9829349928502283#6018
+-0.9596597301863407#6019
+-0.926795864719758#6020
+-0.8846717613308728#6021
+-0.8337083101363698#6022
+-0.7744147210943076#6023
+-0.70738343614654#6024
+-0.6332842097346686#6025
+-0.5528574168350533#6026
+-0.46690665537678444#6027
+-0.37629071695680905#6028
+-0.28191500607817316#6029
+-0.18472249364751417#6030
+-0.0856842951214665#6031
+0.014210032557972981#6032
+0.11396237828930539#6033
+0.21257604960772433#6034
+0.3090657313067615#6035
+0.40246733038212795#6036
+0.491847608930326#6037
+0.5763135087532935#6038
+0.6550210745007133#6039
+0.7271838861928992#6040
+0.7920809168692764#6041
+0.8490637368514327#6042
+0.8975629926381219#6043
+0.9370940956972457#6044
+0.9672620643142826#6045
+0.9877654701190156#6046
+0.9983994498581685#6047
+0.9990577523213141#6048
+0.9897337999678465#6049
+0.9705207546475926#6050
+0.9416105867584041#6051
+0.903292157141399#6052
+0.8559483308789219#6053
+0.8000521518331991#6054
+0.7361621161484359#6055
+0.6649165919419564#6056
+0.5870274409409932#6057
+0.5032729057956179#6058
+0.4144898341354351#6059
+0.3215653170646921#6060
+0.22542782564119876#6061
+0.1270379339004295#6062
+0.027378721117284403#6063
+-0.07255405079706279#6064
+-0.17176188661902594#6065
+-0.26925353444682204#6066
+-0.3640548899618095#6067
+-0.4552187293568439#6068
+-0.5418341736834483#6069
+-0.6230357900531704#6070
+-0.6980122387569291#6071
+-0.7660143799031949#6072
+-0.8263627585761534#6073
+-0.8784543937246257#6074
+-0.9217688029494135#6075
+-0.9558732029913825#6076
+-0.980426833958729#6077
+-0.9951843640871785#6078
+-0.9999983410138783#6079
+-0.994820665072666#6080
+-0.9797030698900342#6081
+-0.9547966054798351#6082
+-0.9203501290014732#6083
+-0.876707818261429#6084
+-0.8243057328023874#6085
+-0.7636674569404289#6086
+-0.6953988682836173#6087
+-0.620182084003217#6088
+-0.5387686453443945#6089
+-0.45197200847452446#6090
+-0.36065941669805746#6091
+-0.26574323524809457#6092
+-0.1681718352345661#6093
+-0.06892011783359091#6094
+0.031020226602815813#6095
+0.1306506271889307#6096
+0.22897560989552862#6097
+0.3250127439973229#6098
+0.4178024581960238#6099
+0.5064176283395591#6100
+0.5899728409401348#6101
+0.6676332399331268#6102
+0.7386228682829117#6103
+0.8022324210890692#6104
+0.8578263327264827#6105
+0.9048491272069747#6106
+0.9428309683117653#6107
+0.9713923540396625#6108
+0.9902479084656121#6109
+0.9992092331226073#6110
+0.9981867894168958#6111
+0.98719079326801#6112
+0.9663311130346763#6113
+0.935816171746493#6114
+0.8959508646099132#6115
+0.8471335125961273#6116
+0.789851882549586#6117
+0.7246783135829253#6118
+0.6522639984537427#6119
+0.5733324770618192#6120
+0.4886724070776113#6121
+0.39912968393550297#6122
+0.3055989889262417#6123
+0.20901484983722315#6124
+0.1103423034597536#6125
+0.010567253260429845#6126
+-0.08931338144040267#6127
+-0.188301626356961#6128
+-0.2854084236672018#6129
+-0.37966351435164025#6130
+-0.47012513270074757#6131
+-0.5558894161266145#6132
+-0.6360994362591523#6133
+-0.7099537610911038#6134
+-0.7767144626217417#6135
+-0.8357144899895256#6136
+-0.8863643344238125#6137
+-0.9281579194216271#6138
+-0.9606776572967937#6139
+-0.9835986215780596#6140
+-0.9966917935669896#6141
+-0.9998263506170976#6142
+-0.9929709732704858#6143
+-0.9761941581915149#6144
+-0.9496635337707765#6145
+-0.9136441852376241#6146
+-0.8684960060161877#6147
+-0.8146701017892441#6148
+-0.7527042831993508#6149
+-0.683217692222682#6150
+-0.6069046159070638#6151
+-0.5245275492852929#6152
+-0.4369095767768165#6153
+-0.34492614820028883#6154
+-0.24949633156836795#6155
+-0.151573630063937#6156
+-0.052136454951487186#6157
+0.04782165038481744#6158
+0.14730193759821267#6159
+0.2453104325426728#6160
+0.34086786673401337#6161
+0.4330194618768823#6162
+0.520844469693879#6163
+0.6034653717379834#6164
+0.6800566472668097#6165
+0.7498530215729831#6166
+0.8121571123560498#6167
+0.8663463977358996#6168
+0.9118794362856127#6169
+0.9483012769352218#6170
+0.9752480046924157#6171
+0.9924503767608481#6172
+0.9997365127251596#6173
+0.997033611923271#6174
+0.9843686808465345#6175
+0.9618682632997994#6176
+0.9297571760175435#6177
+0.888356262369377#6178
+0.8380791865991503#6179
+0.7794283006285677#6180
+0.7129896247228424#6181
+0.6394269921699185#6182
+0.5594754164776916#6183
+0.47393374736200167#6184
+0.38365668890433663#6185
+0.28954625963117797#6186
+0.1925427798430516#6187
+0.09361547624491363#6188
+-0.00624720224670175#6189
+-0.10604746075851858#6190
+-0.2047881280970657#6191
+-0.30148262015362104#6192
+-0.3951647975265046#6193
+-0.4848986188666166#6194
+-0.5697874934931841#6195
+-0.6489832398314691#6196
+-0.7216945601626925#6197
+-0.7871949470092712#6198
+-0.844829942157383#6199
+-0.8940236757871044#6200
+-0.9342846203732933#6201
+-0.9652105018661431#6202
+-0.9864923190805144#6203
+-0.9979174311336345#6204
+-0.9993716820825086#6205
+-0.9908405415323671#6206
+-0.9724092498195667#6207
+-0.9442619663183269#6208
+-0.9066799293811373#6209
+-0.8600386462981047#6210
+-0.8048041413522367#6211
+-0.7415282994588526#6212
+-0.6708433519139391#6213
+-0.593455559348028#6214
+-0.5101381550034353#6215
+-0.4217236188433001#6216
+-0.32909535968697506#6217
+-0.23317888848111895#6218
+-0.13493257090025113#6219
+-0.03533805167372523#6220
+0.06460955368391785#6221
+0.16391160173822988#6222
+0.2615758992499447#6223
+0.35662661684184926#6224
+0.4481140391633548#6225
+0.5351240541323454#6226
+0.6167872864409377#6227
+0.6922877840661794#6228
+0.7608711709929451#6229
+0.8218521846897158#6230
+0.8746215230252763#6231
+0.9186519322142014#6232
+0.9535034749623935#6233
+0.978827926175101#6234
+0.9943722523069567#6235
+0.9999811395895223#6236
+0.9955985458751219#6237
+0.9812682605914571#6238
+0.9571334672121197#6239
+0.9234353126146541#6240
+0.8805104976206695#6241
+0.8287879127925286#6242
+0.768784353100621#6243
+0.7010993542788487#6244
+0.6264092024617534#6245
+0.5454601769570099#6246
+0.45906109366927184#6247
+0.36807522367901085#6248
+0.27341166772324016#6249
+0.17601627276145895#6250
+0.07686218138548857#6251
+-0.02305989149962678#6252
+-0.12275155757146444#6253
+-0.22121673065631767#6254
+-0.317471579292981#6255
+-0.4105543568514991#6256
+-0.4995350109875823#6257
+-0.5835244764181962#6258
+-0.6616835581679836#6259
+-0.7332313165280581#6260
+-0.7974528699474296#6261
+-0.8537065378931546#6262
+-0.9014302523101099#6263
+-0.9401471736192033#6264
+-0.969470455140827#6265
+-0.9891071083390048#6266
+-0.9988609302659951#6267
+-0.9986344639572882#6268
+-0.9884299721893809#6269
+-0.9683494148708616#6270
+-0.9385934302927073#6271
+-0.8994593304168023#6272
+-0.8513381302330933#6273
+-0.7947106408670623#6274
+-0.7301426654738955#6275
+-0.6582793459203868#6276
+-0.57983871674066#6277
+-0.49560453077245464#6278
+-0.40641842815784546#6279
+-0.31317152695315215#6280
+-0.21679551937188488#6281
+-0.11825336262412364#6282
+-0.018529657366386256#6283
+0.08137919010266577#6284
+0.18047492360459536#6285
+0.27776741132694516#6286
+0.37228453889301355#6287
+0.46308192240736856#6288
+0.5492523444275588#6289
+0.6299348185809126#6290
+0.7043231922557696#6291
+0.7716742014118969#6292
+0.8313148970290903#6293
+0.8826493689913352#6294
+0.9251647002237049#6295
+0.9584360915902255#6296
+0.9821311063464223#6297
+0.9960129917373818#6298
+0.9999430445530186#6299
+0.9938819970047018#6300
+0.9778904090760181#6301
+0.9521280634274347#6302
+0.9168523689007734#6303
+0.8724157885751502#6304
+0.8192623180723986#6305
+0.7579230492995809#6306
+0.6890108639542089#6307
+0.6132143098129139#6308
+0.5312907209896665#6309
+0.4440586509036509#6310
+0.3523896935640783#6311
+0.25719977489095747#6312
+0.15944000108606712#6313
+0.06008715549418129#6314
+-0.03986606109322982#6315
+-0.13942094917616493#6316
+-0.23758278922136963#6317
+-0.3333707805711021#6318
+-0.42582784127909545#6319
+-0.514030170956996#6320
+-0.5970964810824756#6321
+-0.6741968005428316#6322
+-0.7445607684319929#6323
+-0.807485331242046#6324
+-0.8623417675414878#6325
+-0.9085819699519408#6326
+-0.9457439216558984#6327
+-0.9734563127160425#6328
+-0.9914422500813985#6329
+-0.9995220242111722#6330
+-0.9976149046730771#6331
+-0.9857399467751279#6332
+-0.9640158011713017#6333
+-0.9326595283434245#6334
+-0.8919844298045866#6335
+-0.8423969176939883#6336
+-0.7843924540411868#6337
+-0.7185506002732748#6338
+-0.645529226428678#6339
+-0.5660579379371954#6340
+-0.4809307856437185#6341
+-0.390998331914669#6342
+-0.2971591520999911#6343
+-0.20035085626528476#6344
+-0.10154072090196273#6345
+-0.0017160242202876055#6346
+0.09812581840815446#6347
+0.19698722029514487#6348
+0.29388039099226304#6349
+0.3878372059665269#6350
+0.47791887978070685#6351
+0.5632253461270936#6352
+0.6429042509925226#6353
+0.7161594690979219#6354
+0.7822590585189381#6355
+0.840542574007695#6356
+0.8904276659433977#6357
+0.9314158989772433#6358
+0.963097732233666#6359
+0.9851566113073892#6360
+0.9973721311704039#6361
+0.9996222383861532#6362
+0.9918844506271235#6363
+0.9742360813108307#6364
+0.946853467109708#6365
+0.9100102060533641#6366
+0.8640744238275117#6367
+0.8095050955838005#6368
+0.7468474600118203#6369
+0.6767275714943461#6370
+0.5998460447788914#6371
+0.5169710546667434#6372
+0.4289306606642735#6373
+0.33660453328606976#6374
+0.2409151646779356#6375
+0.142818651380304#6376
+0.04329514132764921#6377
+-0.05666095946568067#6378
+-0.15605092268165224#6379
+-0.25388167666176487#6380
+-0.3491757288507966#6381
+-0.4409809325792998#6382
+-0.5283800005983845#6383
+-0.6104996703106945#6384
+-0.6865194291216177#6385
+-0.7556797127299064#6386
+-0.8172894944430965#6387
+-0.8707331896877957#6388
+-0.9154768067272556#6389
+-0.9510732821302911#6390
+-0.9771669476813053#6391
+-0.9934970840995313#6392
+-0.9999005260599038#6393
+-0.9963132924870508#6394
+-0.9827712258330508#6395
+-0.9594096339514985#6396
+-0.9264619381461588#6397
+-0.8842573409024587#6398
+-0.8332175366050724#6399
+-0.7738524981070234#6400
+-0.7067553812495116#6401
+-0.6325965982448198#6402
+-0.5521171191390967#6403
+-0.466121068284588#6404
+-0.3754676897949175#6405
+-0.2810627622619315#6406
+-0.1838495485154199#6407
+-0.08479937085272225#6408
+0.015098094092590981#6409
+0.11484470387249736#6410
+0.21344382333392106#6411
+0.30991028266773873#6412
+0.4032802208998583#6413
+0.49262071647146216#6414
+0.5770391086828398#6415
+0.6556919168640254#6416
+0.7277932681548336#6417
+0.7926227496867044#6418
+0.8495326067099487#6419
+0.8979542147450874#6420
+0.9374037610906888#6421
+0.9674870789199537#6422
+0.9879035856653547#6423
+0.9984492863402916#6424
+0.9990188117895656#6425
+0.9896064715031475#6426
+0.9703063104738733#6427
+0.9413111695309624#6428
+0.9029107585381975#6429
+0.8554887617087299#6430
+0.799519003959252#6431
+0.7355607166080547#6432
+0.6642529497205526#6433
+0.5863081869322719#6434
+0.5025052265478807#6435
+0.41368140004596415#6436
+0.32072420573967675#6437
+0.2245624411869641#6438
+0.12615692295238418#6439
+0.026490886445597783#6440
+-0.07343983824183033#6441
+-0.17263677634152869#6442
+-0.2701087848381528#6443
+-0.3648819556427663#6444
+-0.4560093465605342#6445
+-0.5425804428241162#6446
+-0.623730254656246#6447
+-0.698647959961658#6448
+-0.7665850057934409#6449
+-0.8268625876466449#6450
+-0.8788784318485121#6451
+-0.9221128132779292#6452
+-0.9561337482870396#6453
+-0.9806013109390582#6454
+-0.9952710294358666#6455
+-0.9999963287994093#6456
+-0.9947299954004215#6457
+-0.9795246487014079#6458
+-0.9545322155003655#6459
+-0.9200024119284395#6460
+-0.876280248368885#6461
+-0.8238025822273635#6462
+-0.7630937529971512#6463
+-0.694760343232246#6464
+-0.6194851177749968#6465
+-0.5380202017954916#6466
+-0.45117956580547686#6467
+-0.35983089273406754#6468
+-0.264886908326737#6469
+-0.16729626149137494#6470
+-0.06803404571198197#6471
+0.031907943763099904#6472
+0.13153111961146466#6473
+0.2298400799910786#6474
+0.32585255426645#6475
+0.4186092175321232#6476
+0.5071832758700237#6477
+0.5906897265679296#6478
+0.6682942007740298#6479
+0.7392213002346851#6480
+0.8027623448174664#6481
+0.8582824534087788#6482
+0.9052268874360858#6483
+0.943126593632353#6484
+0.9716028906612442#6485
+0.9903712527758591#6486
+0.999244152705944#6487
+0.9981329353683882#6488
+0.9870487036795089#6489
+0.9661022076183817#6490
+0.9355027376496583#6491
+0.8955560335624265#6492
+0.8466612296193012#6493
+0.7893068665388091#6494
+0.7240660101580189#6495
+0.6515905255481277#6496
+0.572604563794148#6497
+0.4878973265166385#6498
+0.39831518042998615#6499
+0.3047532007259689#6500
+0.20814622777831115#6501
+0.10945952652668677#6502
+0.009679141868516105#6503
+-0.0901979535757059#6504
+-0.18917382088327842#6505
+-0.28625952590513565#6506
+-0.3804850203689661#6507
+-0.47090883428089403#6508
+-0.5566274827824501#6509
+-0.6367844934726242#6510
+-0.7105789639969848#6511
+-0.7772735643992611#6512
+-0.8362019042785367#6513
+-0.8867751911418572#6514
+-0.9284881134241899#6515
+-0.9609238893945486#6516
+-0.9837584315012794#6517
+-0.9967635845477477#6518
+-0.9998094053436452#6519
+-0.9928654610543938#6520
+-0.9760011332759688#6521
+-0.9493849247969268#6522
+-0.9132827759742418#6523
+-0.8680554075451663#6524
+-0.8141547164248637#6525
+-0.7521192605018084#6526
+-0.6825688775453889#6527
+-0.6061984919918056#6528
+-0.5237711714888175#6529
+-0.43611050257604106#6530
+-0.3440923616804886#6531
+-0.24863616364883562#6532
+-0.15069567525819083#6533
+-0.051249485493732934#6534
+0.04870877218895102#6535
+0.14818034792090215#6536
+0.2461713545983377#6537
+0.3417026984740565#6538
+0.4338198619385158#6539
+0.5216024407442641#6540
+0.6041733403809366#6541
+0.6807075397136739#6542
+0.7504403343215857#6543
+0.8126749771715466#6544
+0.8667896402842373#6545
+0.912243627833765#6546
+0.9485827786016253#6547
+0.9754440038054716#6548
+0.9925589149622076#6549
+0.9997565055369927#6550
+0.9969648595840104#6551
+0.9842118703068278#6552
+0.9616249613587246#6553
+0.9294298136676707#6554
+0.8879481105070949#6555
+0.8375943233429495#6556
+0.7788715705718298#6557
+0.7123665905282638#6558
+0.6387438789892236#6559
+0.5587390497519747#6560
+0.47315148462417583#6561
+0.3828363462650965#6562
+0.28869603368300556#6563
+0.1916711657625737#6564
+0.09273118291190512#6565
+-0.0071353392655659825#6566
+-0.10693056749172508#6567
+-0.20565738083405258#6568
+-0.30232933360837705#6569
+-0.395980511618076#6570
+-0.48567518324943976#6571
+-0.5705171489926438#6572
+-0.6496586959710069#6573
+-0.7223090680078381#6574
+-0.7877423666007652#6575
+-0.8453048038596203#6576
+-0.8944212349389244#6577
+-0.9346009046950666#6578
+-0.9654423511494763#6579
+-0.9866374167640076#6580
+-0.9979743274491972#6581
+-0.9993398085409632#6582
+-0.9907202166036044#6583
+-0.9722016757505011#6584
+-0.9439692171204415#6585
+-0.9063049301076473#6586
+-0.8595851438177926#6587
+-0.8042766669119777#6588
+-0.7409321234088941#6589
+-0.6701844310483026#6590
+-0.5927404773861927#6591
+-0.5093740568079891#6592
+-0.4209181390308347#6593
+-0.3282565463455203#6594
+-0.2323151227563079#6595
+-0.13405248325368307#6596
+-0.0344504356502464#6597
+0.06549582931840771#6598
+0.1647876816105547#6599
+0.2624330298596137#6600
+0.35745623402314036#6601
+0.44890785365562746#6602
+0.5358741344035932#6603
+0.6174861379370337#6604
+0.6929284240939841#6605
+0.7614471984890684#6606
+0.8223578441778256#6607
+0.8750517621229162#6608
+0.9190024521145261#6609
+0.9537707733864255#6610
+0.9790093323653442#6611
+0.9944659537127232#6612
+0.9999861999773392#6613
+0.995514914683267#6614
+0.9810967734351546#6615
+0.9568758375343491#6616
+0.9230941145659948#6617
+0.8800891403392386#6618
+0.8282906063409999#6619
+0.7682160664006705#6620
+0.7004657654633318#6621
+0.625716642140678#6622
+0.5447155649641743#6623
+0.4582718699215725#6624
+0.36724927383925204#6625
+0.272557244409198#6626
+0.17514191308845256#6627
+0.07597662166634576#6628
+-0.023947803044919447#6629
+-0.12363294922425093#6630
+-0.22208279584255267#6631
+-0.3183136645756067#6632
+-0.411364048392728#6633
+-0.5003042186171828#6634
+-0.5842455144677996#6635
+-0.6623492222637417#6636
+-0.7338349555743653#6637
+-0.7979884525824719#6638
+-0.8541687127522828#6639
+-0.9018144014949061#6640
+-0.9404494588379959#6641
+-0.969687856059632#6642
+-0.9892374527597048#6643
+-0.9989029158302245#6644
+-0.9985876711591678#6645
+-0.9882948685670818#6646
+-0.9681273503351187#6647
+-0.9382866236389569#6648
+-0.8990708471557118#6649
+-0.8508718519609921#6650
+-0.7941712264823142#6651
+-0.7295355046267261#6652
+-0.6576105051612804#6653
+-0.5791148789053921#6654
+-0.4948329282094064#6655
+-0.4056067704647689#6656
+-0.3123279239454181#6657
+-0.2159284000518886#6658
+-0.117371390961479#6659
+-0.017641645730405324#6660
+0.08226436899325389#6661
+0.18134842533491713#6662
+0.2786205081564525#6663
+0.3731087069601824#6664
+0.46386892689730536#6665
+0.5499943218515493#6666
+0.6306243553458014#6667
+0.7049533987381323#6668
+0.7722387807968807#6669
+0.8318082082261052#6670
+0.8830664829979679#6671
+0.9255014493746805#6672
+0.958689111199342#6673
+0.9822978683253825#6674
+0.9960918298556162#6675
+0.9999331710861101#6676
+0.9937835106050681#6677
+0.977704293787209#6678
+0.9518561788518946#6679
+0.9164974316193079#6680
+0.871981345003749#6681
+0.8187527090276192#6682
+0.7573433666265443#6683
+0.6883668996505666#6684
+0.6125124981571216#6685
+0.5305380742518008#6686
+0.4432626892811246#6687
+0.3515583700423137#6688
+0.25634139577978515#6689
+0.15856314302582344#6690
+0.05920057976075344#6691
+-0.04075349612817637#6692
+-0.14030037655510802#6693
+-0.2384454219966389#6694
+-0.3342079996011555#6695
+-0.42663128134813255#6696
+-0.514791804357429#6697
+-0.5978086978251298#6698
+-0.674852484393442#6699
+-0.7451533680142645#6700
+-0.8080089254968401#6701
+-0.8627911248880876#6702
+-0.908952600560277#6703
+-0.9460321223074467#6704
+-0.973659203805159#6705
+-0.9915578043873877#6706
+-0.9995490871536059#6707
+-0.9975532058479801#6708
+-0.9855901026567658#6709
+-0.9637793089525735#6710
+-0.9323387509764054#6711
+-0.8915825723906932#6712
+-0.8419179954596638#6713
+-0.783841252219086#6714
+-0.7179326262898007#6715
+-0.6448506548755989#6716
+-0.5653255488771634#6717
+-0.4801518968661259#6718
+-0.39018072581871516#6719
+-0.2963109979355221#6720
+-0.1994806285083495#6721
+-0.10065711458064946#6722
+-8.278680368774796E-4#6723
+0.0990096502906622#6724
+0.1978578969207362#6725
+0.2947292128479025#6726
+0.388655691904816#6727
+0.4786988517607058#6728
+0.5639590109266028#6729
+0.6435842780753824#6730
+0.7167790638583078#6731
+0.7828120301708148#6732
+0.8410233974411052#6733
+0.8908315369295339#6734
+0.9317387821707139#6735
+0.963336401492333#6736
+0.9853086819269133#6737
+0.997436083711423#6738
+0.9995974338560171#6739
+0.9917711368644981#6740
+0.9740353905093757#6741
+0.9465674045055719#6742
+0.9096416298895278#6743
+0.863627016795169#6744
+0.8089833280261255#6745
+0.746256545257776#6746
+0.6760734137688245#6747
+0.59913518020965#6748
+0.5162105859775773#6749
+0.42812818620694754#6750
+0.33576807112009877#6751
+0.24005307245678428#6752
+0.14193954284447627#6753
+0.04240780023904047#6754
+-0.05754766708822902#6755
+-0.15692813714868228#6756
+-0.2547406331362906#6757
+-0.3500078449236578#6758
+-0.4417778940217574#6759
+-0.5291338444351459#6760
+-0.6112028643833304#6761
+-0.6871649473473994#6762
+-0.7562611053041018#6763
+-0.8178009522832872#6764
+-0.8711696024763078#6765
+-0.9158338139717653#6766
+-0.9513473167324222#6767
+-0.977355271577897#6768
+-0.9935978156204607#6769
+-0.9999126587291108#6770
+-0.9962367050789155#6771
+-0.9826066835836388#6772
+-0.9591587809125754#6773
+-0.9261272807583686#6774
+-0.8838422229517972#6775
+-0.8327261058128828#6776
+-0.7732896646873357#6777
+-0.7061267688478077#6778
+-0.6319084877484257#6779
+-0.5513763859206331#6780
+-0.4653351135055202#6781
+-0.37464436645559573#6782
+-0.28021029673700776#6783
+-0.18297645835863166#6784
+-0.08391437969231084#6785
+0.0159861437174899#6786
+0.11572693886358196#6787
+0.21431142869078854#6788
+0.31075458956445545#6789
+0.40409279330100306#6790
+0.4933934354222034#6791
+0.5777642534308487#6792
+0.6563622420026807#6793
+0.72840207601693#6794
+0.793163957265329#6795
+0.8500008064378751#6796
+0.8983447285254006#6797
+0.9377126870387825#6798
+0.967711330349872#6799
+0.9880409219309375#6800
+0.9984983352229706#6801
+0.9989790832091183#6802
+0.9894783624144172#6803
+0.9700911009005274#6804
+0.9410110097759191#6805
+0.9025286476985094#6806
+0.8550285177095982#6807
+0.7989852254065796#6808
+0.7349587368406961#6809
+0.6635887835213552#6810
+0.585588470430354#6811
+0.5017371509126227#6812
+0.41287263963522164#6813
+0.3198828414201331#6814
+0.22369687959278223#6815
+0.1252758124888965#6816
+0.02560303087729906#6817
+-0.07432556775558767#6818
+-0.17351152988422644#6819
+-0.27096382216154746#6820
+-0.3657087334965602#6821
+-0.4567996040537086#6822
+-0.5433262839650238#6823
+-0.6244242272467491#6824
+-0.699283130057029#6825
+-0.7671550269840464#6826
+-0.8273617644691722#6827
+-0.8793017766931565#6828
+-0.9224560962229421#6829
+-0.9563935393627088#6830
+-0.980775014398831#6831
+-0.9953569096921918#6832
+-0.9999935277651537#6833
+-0.9946385410625938#6834
+-0.9793454548415207#6835
+-0.9542670725642333#6836
+-0.9196539691366354#6837
+-0.8758519872466048#6838
+-0.823298781818177#6839
+-0.7625194471082125#6840
+-0.6941212701381572#6841
+-0.6187876628828645#6842
+-0.5372713338440499#6843
+-0.45038676723575394#6844
+-0.3590020849273077#6845
+-0.26403037245657784#6846
+-0.16642055578109807#6847
+-0.06714791992357462#6848
+0.03279563575367421#6849
+0.13241150827926804#6850
+0.23070436878356018#6851
+0.32669210749569116#6852
+0.4194156466597768#6853
+0.5079485233228161#6854
+0.59140614624627#6855
+0.6689546344493088#6856
+0.7398191490719298#6857
+0.8032916353087174#6858
+0.858737897058408#6859
+0.9056039336016954#6860
+0.9434214749932913#6861
+0.9718126608604276#6862
+0.9904938158587981#6863
+0.9992782840628278#6864
+0.9980782939699812#6865
+0.986905835484602#6866
+0.9658725401187522#6867
+0.9351885656070448#6868
+0.8951604960800272#6869
+0.846188278776893#6870
+0.7887612279048725#6871
+0.72345313557342#6872
+0.6509165386531266#6873
+0.571876198843009#6874
+0.4871218610911878#6875
+0.3975003627244203#6876
+0.3039071721294589#6877
+0.20727744152893346#6878
+0.1085766632494626#6879
+0.008791022841475713#6880
+-0.09108245456081744#6881
+-0.19004586618499503#6882
+-0.2871104023350624#6883
+-0.3813062262510775#6884
+-0.4716921643974707#6885
+-0.5573651103579016#6886
+-0.637469048376044#6887
+-0.7112036063820617#6888
+-0.7778320530457624#6889
+-0.8366886589525186#6890
+-0.8871853483515171#6891
+-0.9288175750142688#6892
+-0.9611693634937438#6893
+-0.9839174654135346#6894
+-0.9968345892587814#6895
+-0.9997916713978559#6896
+-0.9927591656435055#6897
+-0.9758073384685907#6898
+-0.9491055669267142#6899
+-0.9129206462926903#6900
+-0.86761412433235#6901
+-0.813638688836776#6902
+-0.7515336445155336#6903
+-0.6819195244422828#6904
+-0.605491889893427#6905
+-0.5230143805297617#6906
+-0.43531108436140914#6907
+-0.3432583037328287#6908
+-0.24777579959945775#6909
+-0.1498176015802779#6910
+-0.050362475609222065#6911
+0.04959585557050026#6912
+0.14905864135557212#6913
+0.24703208246845434#6914
+0.34253726067126045#6915
+0.43461991979320214#6916
+0.5223600003428128#6917
+0.6048808324382549#6918
+0.6813578952029908#6919
+0.7510270551058309#6920
+0.813192200930588#6921
+0.867232199089246#6922
+0.9126070997834519#6923
+0.9488635320044169#6924
+0.975639233466172#6925
+0.9926666702105814#6926
+0.9997757097182173#6927
+0.9968953208162551#6928
+0.9840542833984735#6929
+0.9613809008660682#6930
+0.9291017181624794#6931
+0.8875392582112024#6932
+0.8371087993733477#6933
+0.7783142261235303#6934
+0.7117429944027603#6935
+0.6380602619528687#6936
+0.558002242280222#6937
+0.47236884865372675#6938
+0.38201570163586274#6939
+0.28784558000485344#6940
+0.19079940048753272#6941
+0.09184681643043616#6942
+-0.008023470655912756#6943
+-0.10781358987567453#6944
+-0.20652647134383265#6945
+-0.30317580857889714#6946
+-0.39679591335123815#6947
+-0.4864513645206622#6948
+-0.5712463544552357#6949
+-0.6503336396450295#6950
+-0.7229230060792073#6951
+-0.7882891648032128#6952
+-0.8457789987662547#6953
+-0.8948180885509868#6954
+-0.9349164517824474#6955
+-0.9656734388699845#6956
+-0.9867817361655272#6957
+-0.998030436539974#6958
+-0.9993071466975093#6959
+-0.9905991101722632#6960
+-0.9719933347867018#6961
+-0.9436757232982262#6962
+-0.9059292159202714#6963
+-0.8591309632772218#6964
+-0.8037485580400412#6965
+-0.7403353628948707#6966
+-0.6695249815259856#6967
+-0.592024927857224#6968
+-0.508609556806733#6969
+-0.42011232718859376#6970
+-0.3274174740678562#6971
+-0.23145117377605856#6972
+-0.1331722898634756#6973
+-0.03356279245148251#6974
+0.0663820532883018#6975
+0.16566363149461852#6976
+0.2632899534561562#6977
+0.3582855692348461#6978
+0.449701314039203#6979
+0.5366237919651687#6980
+0.618184502346058#6981
+0.6935685175241308#6982
+0.7620226253383701#6983
+0.8228628549714151#6984
+0.8754813109598781#6985
+0.9193522470848716#6986
+0.9540373194544375#6987
+0.9791899662908198#6988
+0.9945588706611886#6989
+0.9999904715533596#6990
+0.9954304982066668#6991
+0.9809245123674635#6992
+0.9566174530512137#6993
+0.92275218835976#6994
+0.8796670888235313#6995
+0.8277926465150534#6996
+0.767647173714462#6997
+0.699831624104531#6998
+0.6250235882401227#6999
+0.5439705232873457#7000
+0.45748228467862745#7001
+0.3664230343049359#7002
+0.2717026060958192#7003
+0.17426741525953252#7004
+0.07509100201512046#7005
+-0.024835695699641874#7006
+-0.12451424335256278#7007
+-0.22294868584484095#7008
+-0.3191554987651938#7009
+-0.4121734154406648#7010
+-0.5010730315954676#7011
+-0.5849660916512891#7012
+-0.6630143638834097#7013
+-0.7344380157550146#7014
+-0.7985234057461226#7015
+-0.8546302138237558#7016
+-0.9021978393080471#7017
+-0.9407510022089238#7018
+-0.9699044920666614#7019
+-0.9893670168474638#7020
+-0.9989441134371765#7021
+-0.9985400906524421#7022
+-0.9881589853553737#7023
+-0.9679045221185625#7024
+-0.9379790768434352#7025
+-0.8986816546871441#7026
+-0.8504049025018744#7027
+-0.7936311856372888#7028
+-0.7289277683054031#7029
+-0.6569411456640912#7030
+-0.5783905842511721#7031
+-0.4940609353109204#7032
+-0.40479479281987163#7033
+-0.3114840745663333#7034
+-0.21506111040267262#7035
+-0.11648932671361892#7036
+-0.016753620178294085#7037
+0.0831494829918418#7038
+0.1822217840134876#7039
+0.27947338520378323#7040
+0.37393258071074015#7041
+0.46465556547691106#7042
+0.5507358654275436#7043
+0.6313133946598948#7044
+0.7055830491372643#7045
+0.7728027510223979#7046
+0.8323008632739383#7047
+0.8834829004217286#7048
+0.9258374684691203#7049
+0.9589413745727422#7050
+0.9824638554455033#7051
+0.9961698822340214#7052
+0.9999225088492355#7053
+0.9936842402864599#7054
+0.9775174072630763#7055
+0.9515835434306101#7056
+0.9161417713838799#7057
+0.8715462135936842#7058
+0.8182424541321317#7059
+0.756763086543882#7060
+0.6877223923475002#7061
+0.6118102033375776#7062
+0.5297850090134684#7063
+0.44246637800293476#7064
+0.35072676920333273#7065
+0.2554828144607054#7066
+0.15768615988737594#7067
+0.05831395732856547#7068
+-0.041640899015840796#7069
+-0.14117969326193175#7070
+-0.2393078666807508#7071
+-0.33504495500035825#7072
+-0.427434384880738#7073
+-0.5155530316784099#7074
+-0.5985204430027234#7075
+-0.6755076359051054#7076
+-0.7457453798026574#7077
+-0.8085318823758662#7078
+-0.863239801645478#7079
+-0.9093225141661847#7080
+-0.9463195767073986#7081
+-0.9738613268498107#7082
+-0.99167257653009#7083
+-0.9995753616290475#7084
+-0.9974907201302877#7085
+-0.9854394810825754#7086
+-0.9635420564828655#7087
+-0.932017238159432#7088
+-0.8911800116762435#7089
+-0.8414384091013278#7090
+-0.783289432085226#7091
+-0.7173140859847869#7092
+-0.6441715746496963#7093
+-0.5645927138755155#7094
+-0.47937262933382613#7095
+-0.38936281193935457#7096
+-0.2954626100342169#7097
+-0.1986102433965698#7098
+-0.09977342885872108#7099
+6.0288799573731514E-5#7100
+0.09989340407211203#7101
+0.19872841747153056#7102
+0.2955778022144536#7103
+0.3894738712626798#7104
+0.47947844613219254#7105
+0.5646922308624522#7106
+0.6442637974843658#7107
+0.7173980932071098#7108
+0.7833643843228061#7109
+0.8415035574561832#7110
+0.8912347052075476#7111
+0.9320609303874993#7112
+0.9635743108493957#7113
+0.9854599753126002#7114
+0.9974992494522351#7115
+0.9995718408207521#7116
+0.9916570407703045#7117
+0.9738339313667114#7118
+0.9462805952275968#7119
+0.909272336179741#7120
+0.8631789285142464#7121
+0.8084609223240518#7122
+0.745665041839642#7123
+0.675418722741259#7124
+0.5984238430289884#7125
+0.5154497100897922#7126
+0.4273253740323974#7127
+0.3349313440926573#7128
+0.23919079087632442#7129
+0.14106032234351765#7130
+0.041520425698197#7131
+-0.05843432931587226#7132
+-0.15780522782723821#7133
+-0.2555993886656267#7134
+-0.3508396849023918#7135
+-0.4425745069797916#7136
+-0.5298872708791288#7137
+-0.6119055763252834#7138
+-0.6878099235218842#7139
+-0.7568419013223837#7140
+-0.8183117650235371#7141
+-0.8716053280664775#7142
+-0.9161900987857895#7143
+-0.9516206008902112#7144
+-0.9775428245144819#7145
+-0.9936977633688959#7146
+-0.9999240026445323#7147
+-0.9961593318166703#7148
+-0.9824413662317869#7149
+-0.95890717126745#7150
+-0.9257918928203727#7151
+-0.8834264078063425#7152
+-0.8322340181474527#7153
+-0.7727262212792206#7154
+-0.7054975994372918#7155
+-0.6312198787882831#7156
+-0.55063521776397#7157
+-0.46454879165956#7158
+-0.3738207475882999#7159
+-0.27935761017584615#7160
+-0.1821032238658627#7161
+-0.08302932233833335#7162
+0.01687418073215605#7163
+0.11660908256663223#7164
+0.21517886499393998#7165
+0.3115986513309033#7166
+0.4049050469445867#7167
+0.4941657651730115#7168
+0.5784889424253095#7169
+0.6570320493879117#7170
+0.7290103092989471#7171
+0.7937045391782332#7172
+0.8504683356658855#7173
+0.8987345336710154#7174
+0.9380208732978393#7175
+0.967934818427143#7176
+0.98817747880743#7177
+0.9985465964675143#7178
+0.998938566611311#7179
+0.989349472802711#7180
+0.9698751260973173#7181
+0.9407101077300469#7182
+0.9021458249237525#7183
+0.8545675992445777#7184
+0.7984508165962385#7185
+0.7343561773212153#7186
+0.6629240938682737#7187
+0.5848682920029681#7188
+0.5009686794957195#7189
+0.4120635535411761#7190
+0.31904122476974855#7191
+0.22283114154142777#7192
+0.12439460320500637#7193
+0.02471515511274884#7194
+-0.0752112386396513#7195
+-0.17438614655709378#7196
+-0.271818645742533#7197
+-0.3665352228710099#7198
+-0.4575895012129941#7199
+-0.5440716965178346#7200
+-0.6251177072772582#7201
+-0.6999177485420057#7202
+-0.7677244430253657#7203
+-0.8278602886499732#7204
+-0.8797244279246147#7205
+-0.9227986515136628#7206
+-0.9566525760134608#7207
+-0.9809479442010262#7208
+-0.9954420047884096#7209
+-0.9999899379133214#7210
+-0.9945463021313241#7211
+-0.9791654884517249#7212
+-0.9540011768805893#7213
+-0.9193048009009206#7214
+-0.8754230352324109#7215
+-0.822794331972237#7216
+-0.7619445397266382#7217
+-0.6934816495054661#7218
+-0.618089719876988#7219
+-0.5365220420807936#7220
+-0.44959361339073317#7221
+-0.3581729939315602#7222
+-0.26317362831327207#7223
+-0.16554471879451196#7224
+-0.06626174116736495#7225
+0.03368330187430715#7226
+0.1332917924978703#7227
+0.23156847559120272#7228
+0.32753140302278777#7229
+0.42022174494285497#7230
+0.5087133700942921#7231
+0.5921220994100276#7232
+0.6696145404379987#7233
+0.7404164143230488#7234
+0.803820292145306#7235
+0.8591926633161057#7236
+0.9059802654063811#7237
+0.9437156121619712#7238
+0.9720216644717411#7239
+0.9906155976177484#7240
+0.9993116271663351#7241
+0.9980228652647771#7242
+0.9867621887959865#7243
+0.9656421107169549#7244
+0.9348736558664785#7245
+0.8947642524747242#7246
+0.8457146604419769#7247
+0.7882149670781883#7248
+0.7228396903125782#7249
+0.6502420383003954#7250
+0.5711473827829529#7251
+0.48634601141296413#7252
+0.39668523146155205#7253
+0.3030609038040782#7254
+0.20640849177440834#7255
+0.1076937143245037#7256
+0.007902896879877103#7257
+-0.09196688369802286#7258
+-0.19091776157422172#7259
+-0.2879610522857915#7260
+-0.38212713135018883#7261
+-0.472475122432569#7262
+-0.5581022982711118#7263
+-0.6381531004294191#7264
+-0.711827687753602#7265
+-0.7783899281206974#7266
+-0.8371747536275085#7267
+-0.8875948057292506#7268
+-0.9291463039319765#7269
+-0.9614140794007434#7270
+-0.9840757231893756#7271
+-0.9969048076440806#7272
+-0.9997731487937185#7273
+-0.9926520871216694#7274
+-0.9756127739222505#7275
+-0.9488254603805024#7276
+-0.9125577964786259#7277
+-0.8671721567258328#7278
+-0.8131220194320353#7279
+-0.7509474357024735#7280
+-0.6812696334255883#7281
+-0.6047848101693116#7282
+-0.5222571770050993#7283
+-0.43451132276352#7284
+-0.3424239750152328#7285
+-0.24691524009890903#7286
+-0.14893940972284261#7287
+-0.0494754259976481#7288
+0.050482899829713684#7289
+0.14993681720940477#7290
+0.24789261547406108#7291
+0.3433715526673036#7292
+0.4354196348098376#7293
+0.5231171478919449#7294
+0.6055878473518524#7295
+0.6820077132217451#7296
+0.7516131834628998#7297
+0.8137087832251761#7298
+0.8676740738018253#7299
+0.9129698518479584#7300
+0.949143536922132#7301
+0.9758336935205153#7302
+0.9927736424209699#7303
+0.9997941252536848#7304
+0.9968249956748588#7305
+0.9838959202457798#7306
+0.961136082014351#7307
+0.9287728897607787#7308
+0.8871297058042116#7309
+0.8366226150733376#7310
+0.7777562677233152#7311
+0.7111188368382388#7312
+0.6373761416001066#7313
+0.5572649946436438#7314
+0.4715858400680154#7315
+0.3811947556639786#7316
+0.2869948992675788#7317
+0.18992748470559684#7318
+0.0909623774981151#7319
+-0.008911595717163887#7320
+-0.10869652721381882#7321
+-0.20739539894084763#7322
+-0.3040220443974627#7323
+-0.3976110020827836#7324
+-0.48722716206801436#7325
+-0.5719751093057461#7326
+-0.6510080703211262#7327
+-0.7235363738925117#7328
+-0.7888353411852869#7329
+-0.8462525265032307#7330
+-0.8952142363102442#7331
+-0.935231261386525#7332
+-0.9659037648453803#7333
+-0.9869252771712309#7334
+-0.9980857583617049#7335
+-0.9992736965779115#7336
+-0.9904772223338747#7337
+-0.971784227092513#7338
+-0.9433814850831956#7339
+-0.9055527871153815#7340
+-0.85867610503466#7341
+-0.8032198151530112#7342
+-0.7397380183875204#7343
+-0.6688650038671767#7344
+-0.5913089113255638#7345
+-0.5078446556027223#7346
+-0.4193061839522201#7347
+-0.32657814351586195#7348
+-0.23058704222187348#7349
+-0.13229199142394524#7350
+-0.03267512277762666#7351
+0.06726822489452655#7352
+0.16653945069945214#7353
+0.2641466693636113#7354
+0.35911462182276815#7355
+0.45049441968818166#7356
+0.5373730262257255#7357
+0.6188823791171251#7358
+0.6942080638516992#7359
+0.7625974510869405#7360
+0.82336721667212#7361
+0.875910169197324#7362
+0.9197013168493114#7363
+0.9543031129561722#7364
+0.9793698278090396#7365
+0.994651003079058#7366
+0.999993954314214#7367
+0.995345296511911#7368
+0.9807514775242675#7369
+0.9563583139665331#7370
+0.9224095342656689#7371
+0.8792443434064714#7372
+0.827294033707491#7373
+0.7670776754907508#7374
+0.6991969307026712#7375
+0.624330041306784#7376
+0.5432250525142298#7377
+0.4566923385632795#7378
+0.36559650572781904#7379
+0.27084775345726186#7380
+0.1733927799645225#7381
+0.07420532313040953#7382
+-0.025723568763404207#7383
+-0.1253954392612152#7384
+-0.22381439998014888#7385
+-0.3199970811976842#7386
+-0.4129824573568625#7387
+-0.5018414493159796#7388
+-0.5856862074002571#7389
+-0.6636789825023087#7390
+-0.7350404965942983#7391
+-0.7990577290163985#7392
+-0.855091040743531#7393
+-0.9025805654470686#7394
+-0.9410518034941227#7395
+-0.9701203629910278#7396
+-0.9894958005000788#7397
+-0.9989845230543534#7398
+-0.9984917224746438#7399
+-0.9880223226614443#7400
+-0.9676809303969649#7401
+-0.9376707901487422#7402
+-0.8982917533181031#7403
+-0.8499372822240805#7404
+-0.793090518757983#7405
+-0.7283194569893225#7406
+-0.6562712679568256#7407
+-0.57766583334934#7408
+-0.4932885526859621#7409
+-0.40398249586366014#7410
+-0.31063997948154537#7411
+-0.21419365110837466#7412
+-0.11560717057633567#7413
+-0.015865581410547242#7414
+0.0840345314002315#7415
+0.18309499895138165#7416
+0.28032604179616866#7417
+0.3747561594947966#7418
+0.4654418375256672#7419
+0.5514769745705953#7420
+0.6320019359796627#7421
+0.7062121429564829#7422
+0.7733661116435763#7423
+0.8327928617839718#7424
+0.8838986209341382#7425
+0.9261727572419648#7426
+0.9591928815114351#7427
+0.9826290675758504#7428
+0.996247148811028#7429
+0.9999110578508053#7430
+0.9935841861271838#7431
+0.9773297496510405#7432
+0.9513101573786427#7433
+0.9157853884750424#7434
+0.8711103946881975#7435
+0.8177315537884366#7436
+0.7561822095093318#7437
+0.6870773425534116#7438
+0.6111074259082679#7439
+0.529031525868704#7440
+0.44166971769722985#7441
+0.34989489170312094#7442
+0.2546240316109867#7443
+0.15680905236250883#7444
+0.05742728889700527#7445
+-0.04252826905621956#7446
+-0.14205889860301116#7447
+-0.2401701225933894#7448
+-0.33588164610850085#7449
+-0.42823715124340533#7450
+-0.5163138523194657#7451
+-0.5992317160538159#7452
+-0.6761622545610236#7453
+-0.7463368033301797#7454
+-0.809054201466604#7455
+-0.8636877974597326#7456
+-0.9096917104778677#7457
+-0.9466062846290039#7458
+-0.9740626816905584#7459
+-0.9917865664189706#7460
+-0.9996008476167711#7461
+-0.9974274475692897#7462
+-0.9852880821713702#7463
+-0.963304043949328#7464
+-0.9316949901461209#7465
+-0.8907767479787866#7466
+-0.840958158997289#7467
+-0.782736994074895#7468
+-0.7166949798461515#7469
+-0.6434919862866445#7470
+-0.5638594335103286#7471
+-0.47859298366152303#7472
+-0.38854459092177623#7473
+-0.2946139890653031#7474
+-0.19773970161652513#7475
+-0.09888966443324891#7476
+9.484455884677701E-4#7477
+0.10077707905537892#7478
+0.19959878126084157#7479
+0.29642615842253006#7480
+0.3902917433947197#7481
+0.4802576622802053#7482
+0.5654250053562614#7483
+0.6449428086834523#7484
+0.7180165566560236#7485
+0.7839161205392026#7486
+0.8419830536741678#7487
+0.8916371704594106#7488
+0.9323823433734814#7489
+0.963811460117186#7490
+0.985610491345106#7491
+0.9975616283430137#7492
+0.9995454593005464#7493
+0.9915421624345439#7494
+0.973631704041753#7495
+0.9459930395020244#7496
+0.908902325215311#7497
+0.8627301593382061#7498
+0.8079378788896648#7499
+0.7450729502240094#7500
+0.6747634989280851#7501
+0.597712033798026#7502
+0.5146884276035842#7503
+0.4265222247738995#7504
+0.33409435286377454#7505
+0.23832832061674333#7506
+0.1401809905709772#7507
+0.040633018405099953#7508
+-0.0593209454491911#7509
+-0.15868219402545106#7510
+-0.25645794257236754#7511
+-0.35167124813082457#7512
+-0.4433707708250161#7513
+-0.5306402793360133#7514
+-0.6126078055822383#7515
+-0.6884543571363001#7516
+-0.7574221003266068#7517
+-0.8188219322609055#7518
+-0.8720403661145942#7519
+-0.9165456608882823#7520
+-0.9518931343880851#7521
+-0.9777296063431139#7522
+-0.993796927265996#7523
+-0.99993455779722#7524
+-0.9960811727613489#7525
+-0.9822752739079014#7526
+-0.9586548052145977#7527
+-0.9254557745967325#7528
+-0.8830098957940993#7529
+-0.8317412739969522#7530
+-0.772162168327135#7531
+-0.7048678735142673#7532
+-0.6305307719075828#7533
+-0.5498936152537572#7534
+-0.4637621033669758#7535
+-0.37299683384271926#7536
+-0.2785047032510652#7537
+-0.18122984572594025#7538
+-0.0821441994889431#7539
+0.017762204436085696#7540
+0.1174911342857932#7541
+0.21604613155912197#7542
+0.31244246730126723#7543
+0.4057169811898851#7544
+0.4949377051146552#7545
+0.5792131750945708#7546
+0.6577013384913591#7547
+0.7296179675210964#7548
+0.794244494998994#7549
+0.8509351940251821#7550
+0.8991236298744447#7551
+0.9383283196247547#7552
+0.9681575429754743#7553
+0.9883132561871131#7554
+0.9985940700358535#7555
+0.998897262028104#7556
+0.9892198027697#7557
+0.9696583862346088#7558
+0.9404084636307043#7559
+0.9017622905159063#7560
+0.8541060066772513#7561
+0.7979157779497825#7562
+0.7337530385249249#7563
+0.6622588812856302#7564
+0.5841476522182073#7565
+0.5001998129033588#7566
+0.4112541424020529#7567
+0.3181993564524092#7568
+0.22196522771581453#7569
+0.12351329579583167#7570
+0.023827259852323673#7571
+-0.07609685019538392#7572
+-0.17526062567021322#7573
+-0.2726732549068054#7574
+-0.367361423114162#7575
+-0.4583790374153017#7576
+-0.5448166798945504#7577
+-0.6258106942007409#7578
+-0.7005518149159866#7579
+-0.7682932534682305#7580
+-0.8283581597958007#7581
+-0.8801463852094901#7582
+-0.923140478879876#7583
+-0.9569108580349618#7584
+-0.9811201002092328#7585
+-0.995526314657395#7586
+-0.9999855592467439#7587
+-0.9944532786793728#7588
+-0.9789847496739821#7589
+-0.953734528659178#7590
+-0.9189549074967269#7591
+-0.8749933926646701#7592
+-0.822289233087465#7593
+-0.7613690313059284#7594
+-0.6928414818387202#7595
+-0.6173912893079209#7596
+-0.5357723270967809#7597
+-0.44880010489607236#7598
+-0.3573436204008309#7599
+-0.2623166765726389#7600
+-0.16466875122249675#7601
+-0.06537551014239087#7602
+0.03457094142478756#7603
+0.13417197157288324#7604
+0.23243239973237922#7605
+0.3283704401856845#7606
+0.42102751174548914#7607
+0.5094778155811228#7608
+0.5928375854944425#7609
+0.6702739182195506#7610
+0.7410130955169058#7611
+0.8043483149102156#7612
+0.859646751823142#7613
+0.9063558825532837#7614
+0.9440090049063705#7615
+0.9722299013303181#7616
+0.9907365979566459#7617
+0.9993441819901644#7618
+0.9979666492964995#7619
+0.9866177637269746#7620
+0.9654109195947578#7621
+0.9345580086763673#7622
+0.8943673030590836#7623
+0.8452403749881539#7624
+0.7876680844896596#7625
+0.722225674859393#7626
+0.6495670250219955#7627
+0.5704181161888862#7628
+0.48556977809397517#7629
+0.39586978728437555#7630
+0.30221439641738246#7631
+0.2055393792001831#7632
+0.10681068044830018#7633
+0.007014764684294179#7634
+-0.0928512402896644#7635
+-0.19178950636318762#7636
+-0.28881147508631094#7637
+-0.38294773501875135#7638
+-0.4732577077685739#7639
+-0.55883904594057#7640
+-0.6388366490931539#7641
+-0.7124512076193162#7642
+-0.7789471891840013#7643
+-0.8376601879200635#7644
+-0.8880035629520688#7645
+-0.9294742999180047#7646
+-0.9616580369225101#7647
+-0.984233204703965#7648
+-0.9969742396482555#7649
+-0.9997538375458441#7650
+-0.9925442255733512#7651
+-0.9754174397904251#7652
+-0.948544605379246#7653
+-0.9121942268182728#7654
+-0.866729505074249#7655
+-0.8126047086182022#7656
+-0.7503606345250428#7657
+-0.6806192050079543#7658
+-0.6040772533772201#7659
+-0.5214995615121297#7660
+-0.4337112184132438#7661
+-0.3415893761858385#7662
+-0.2460544858260183#7663
+-0.14806110037862266#7664
+-0.048588337358735884#7665
+0.05136990426687065#7666
+0.15081487478967512#7667
+0.24875295293634997#7668
+0.3442055738040776#7669
+0.43621900635758876#7670
+0.5238738827944053#7671
+0.6062943845640199#7672
+0.6826569932573459#7673
+0.7521987189304415#7674
+0.8142247236478194#7675
+0.8681152640734142#7676
+0.9133318837411375#7677
+0.9494227931338964#7678
+0.976027383815107#7679
+0.9928798315089906#7680
+0.9998117521288687#7681
+0.9967538842152956#7682
+0.9837367809736671#7683
+0.9608905049966914#7684
+0.9284433287219556#7685
+0.8867194536091866#7686
+0.836135770826432#7687
+0.7771976958113149#7688
+0.7104941183270491#7689
+0.6366915184705867#7690
+0.5565273074237976#7691
+0.4708024594846968#7692
+0.3803735089970247#7693
+0.286143992142218#7694
+0.18905541910455304#7695
+0.09007786681260743#7696
+-0.009799713748746178#7697
+-0.10957937880967696#7698
+-0.2082641629396677#7699
+-0.30486804039654375#7700
+-0.3984257771697518#7701
+-0.48800257527952967#7702
+-0.5727034129693166#7703
+-0.6516819874672904#7704
+-0.7241491709639128#7705
+-0.7893808953161512#7706
+-0.8467253866970188#7707
+-0.8956096779042066#7708
+-0.9355453332589703#7709
+-0.9661333288939775#7710
+-0.9870680396678903#7711
+-0.9981402928707507#7712
+-0.9992394582085561#7713
+-0.9903545531845869#7714
+-0.9715743528328836#7715
+-0.9430865027074515#7716
+-0.9051756439899129#7717
+-0.8582205694489098#7718
+-0.8026904386679721#7719
+-0.7391400903580423#7720
+-0.6682044985924814#7721
+-0.5905924283560221#7722
+-0.507079353799328#7723
+-0.4184997099576176#7724
+-0.32573855535162055#7725
+-0.22972272877539926#7726
+-0.13141158862949134#7727
+-0.03178742732889281#7728
+0.0681543434380497#7729
+0.16741513853418957#7730
+0.26500317690618225#7731
+0.3599433911329309#7732
+0.45128716997694385#7733
+0.5381218365942502#7734
+0.6195797676997338#7735
+0.6948470625722005#7736
+0.763171675281344#7737
+0.8238709288820886#7738
+0.8763383364969607#7739
+0.9200496611324916#7740
+0.9545681536819657#7741
+0.979548916778125#7742
+0.994742350893655#7743
+0.999996648257155#7744
+0.9952593096662085#7745
+0.9805776690420603#7746
+0.956098420484722#7747
+0.9220661525540147#7748
+0.8788209044215302#7749
+0.8267947683116299#7750
+0.7665075721787701#7751
+0.6985616857584132#7752
+0.6236360018877475#7753
+0.542479153232871#7754
+0.4559020321986561#7755
+0.3647696887598858#7756
+0.2699926871678532#7757
+0.1725180078933547#7758
+0.07331958571085657#7759
+-0.026611421535832028#7760
+-0.1262765362551009#7761
+-0.22467993756558144#7762
+-0.3208384112092187#7763
+-0.4137911735031304#7764
+-0.5026094711725734#7765
+-0.58640586114666#7766
+-0.6643430775961726#7767
+-0.7356423976169658#7768
+-0.7995914219718132#7769
+-0.855551193148098#7770
+-0.9029625796100673#7771
+-0.9413518624563137#7772
+-0.9703354686624472#7773
+-0.9896238036159622#7774
+-0.9990241446498792#7775
+-0.9984425666639266#7776
+-0.987884880593096#7777
+-0.9674565753467003#7778
+-0.9373617637980615#7779
+-0.8979011433561516#7780
+-0.8494689914964797#7781
+-0.7925492262708868#7782
+-0.7277105711583345#7783
+-0.6556008725678979#7784
+-0.5769406267715956#7785
+-0.4925157809438046#7786
+-0.40316988023689265#7787
+-0.3097956393568956#7788
+-0.2133260228532663#7789
+-0.11472492324549403#7790
+-0.014977530127669912#7791
+0.08491951352027674#7792
+0.1839680694597875#7793
+0.28117847726101386#7794
+0.3755794426626941#7795
+0.46622774242334464#7796
+0.5522176486961006#7797
+0.6326899787619682#7798
+0.7068406796995446#7799
+0.773928862216024#7800
+0.8332842033681063#7801
+0.8843136442072667#7802
+0.9265073154287307#7803
+0.9594436318170264#7804
+0.9827935045861007#7805
+0.9963236295256865#7806
+0.9998988180998523#7807
+0.993483348206165#7808
+0.97714132109913#7809
+0.951036020911645#7810
+0.9154282831739184#7811
+0.8706738886310726#7812
+0.817220008399544#7813
+0.7556007359811027#7814
+0.6864317507771306#7815
+0.6104041664235594#7816
+0.5282776254118724#7817
+0.44087270899243347#7818
+0.3490627381978821#7819
+0.2537650479080564#7820
+0.15593182114310442#7821
+0.056540575165497#7822
+-0.04341560554933505#7823
+-0.1429379918848091#7824
+-0.2410321890543877#7825
+-0.3367180722655825#7826
+-0.4290395798028944#7827
+-0.5170742656804435#7828
+-0.5999425164173386#7829
+-0.6768163398448185#7830
+-0.7469276381303027#7831
+-0.8095758823570365#7832
+-0.8641351119774621#7833
+-0.9100601892040956#7834
+-0.9468922458461004#7835
+-0.9742632681685688#7836
+-0.9918997739641114#7837
+-0.9996255450966729#7838
+-0.9973633882148972#7839
+-0.9851359060425772#7840
+-0.9630652715397107#7841
+-0.9313720071906685#7842
+-0.8903727816164261#7843
+-0.8404772455263794#7844
+-0.782183938623869#7845
+-0.7160753083622596#7846
+-0.642811890322518#7847
+-0.5631257083600311#7848
+-0.47781296046421884#7849
+-0.3877260634114115#7850
+-0.2937651356981923#7851
+-0.19686900385491865#7852
+-0.0980058220013664#7853
+0.0018366016292064157#7854
+0.10166067454339997#7855
+0.2004689876021066#7856
+0.29727428080292906#7857
+0.3911093076557798#7858
+0.4810364995900806#7859
+0.5661573338300011#7860
+0.6456213111370226#7861
+0.7186344537171913#7862
+0.7844672383847822#7863
+0.8424618857168215#7864
+0.8920389323676491#7865
+0.9327030208751224#7866
+0.9640478491086351#7867
+0.9857602299057003#7868
+0.9976232203345528#7869
+0.9995182893162105#7870
+0.9914265019478351#7871
+0.9734287086940224#7872
+0.9457047375556851#7873
+0.908531597288111#7874
+0.8622807096210473#7875
+0.807414198135553#7876
+0.7444802708779339#7877
+0.6741077428461579#7878
+0.5969997530782538#7879
+0.5139267391194702#7880
+0.42571873906499613#7881
+0.3332570980936882#7882
+0.2374656623583771#7883
+0.13930154822049173#7884
+0.03974557905975634#7885
+-0.06020751478880264#7886
+-0.15955903505155#7887
+-0.25731629417926616#7888
+-0.3525025339530001#7889
+-0.4441666849293199#7890
+-0.5313928692118094#7891
+-0.6133095516002608#7892
+-0.6890982476823034#7893
+-0.7580017018590971#7894
+-0.819331453592961#7895
+-0.8724747162774904#7896
+-0.9169004999987684#7897
+-0.9521649170110635#7898
+-0.9779156169164552#7899
+-0.9938953072335382#7900
+-0.9999443241788476#7901
+-0.996002227974605#7902
+-0.9821084067429994#7903
+-0.9584016829530904#7904
+-0.9251189263525859#7905
+-0.8825926872436216#7906
+-0.8312478737500688#7907
+-0.7715975062760166#7908
+-0.7042375915754759#7909
+-0.6298411676499076#7910
+-0.5491515789749879#7911
+-0.46297504924832533#7912
+-0.37217262586877564#7913
+-0.27765157663545714#7914
+-0.18035632462780476#7915
+-0.08125901184234507#7916
+0.018650214128785595#7917
+0.1183730933252825#7918
+0.21691322770221497#7919
+0.313286036809926#7920
+0.40652859539642616#7921
+0.4957092546382107#7922
+0.5799369508673419#7923
+0.6583701087850726#7924
+0.7302250502040435#7925
+0.7947838243016816#7926
+0.8514013811474965#7927
+0.8995120168287606#7928
+0.9386350257770081#7929
+0.9683795038191755#7930
+0.9884482539628825#7931
+0.9986407558905398#7932
+0.9988551694920795#7933
+0.9890893524176707#7934
+0.9694408814833709#7935
+0.940106077715835#7936
+0.9013780447775112#7937
+0.8536437403717337#7938
+0.7973801098892623#7939
+0.7331493209275945#7940
+0.6615931462981596#7941
+0.5834265516445285#7942
+0.49943055174204004#7943
+0.410444406856334#7944
+0.31735723713220004#7945
+0.221099138798995#7946
+0.1226318909565677#7947
+0.022939345796415475#7948
+-0.07698240172419506#7949
+-0.17613496653377583#7950
+-0.2735276489802294#7951
+-0.3681873335742909#7952
+-0.45916821203782765#7953
+-0.5455612335075115#7954
+-0.626503187470553#7955
+-0.7011853286788058#7956
+-0.7688614578639504#7957
+-0.8288553775139227#7958
+-0.8805676482149329#7959
+-0.9234815780519405#7960
+-0.957168385223473#7961
+-0.9812914822876503#7962
+-0.9956098392326427#7963
+-0.9999803917688753#7964
+-0.9943594707801187#7965
+-0.9788032386508632#7966
+-0.9534671281103374#7967
+-0.9186042892000581#7968
+-0.8745630598822943#7969
+-0.8217834855622946#7970
+-0.7607929223000569#7971
+-0.6922007676428981#7972
+-0.6166923717266009#7973
+-0.535022189483404#7974
+-0.44800624237770903#7975
+-0.35651396498934845#7976
+-0.2614595179106613#7977
+-0.1637926537560355#7978
+-0.06448922754773154#7979
+0.03545855370492522#7980
+0.13505204481000171#7981
+0.23329614052560674#7982
+0.32920921832252986#7983
+0.42183294643207214#7984
+0.5102418591802964#7985
+0.5935526039351231#7986
+0.6709327672738326#7987
+0.7416091921828252#7988
+0.80487570318693#7989
+0.8601001622213218#7990
+0.9067307847461078#7991
+0.9443016529950545#7992
+0.9724373712718963#7993
+0.9908568167800427#7994
+0.9993759485086353#7995
+0.9979096461094927#7996
+0.9864725603914919#7997
+0.9651789669345293#7998
+0.9342416242857009#7999
\ No newline at end of file
diff --git a/MPChartExample/build.gradle b/MPChartExample/build.gradle
index 250cf844f9..96c367bb0b 100644
--- a/MPChartExample/build.gradle
+++ b/MPChartExample/build.gradle
@@ -1,13 +1,15 @@
apply plugin: 'com.android.application'
+apply plugin: 'realm-android'
android {
- compileSdkVersion 21
- buildToolsVersion '21.1.1'
+ compileSdkVersion 24
+ buildToolsVersion '23.0.3'
defaultConfig {
minSdkVersion 16
- targetSdkVersion 21
- versionCode 36
- versionName '2.0.7'
+ targetSdkVersion 24
+ versionCode 54
+ versionName '3.0.1'
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
sourceSets {
main {
@@ -25,7 +27,6 @@ android {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
-
}
lintOptions {
@@ -38,8 +39,8 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:1.1.0'
-
+ classpath 'com.android.tools.build:gradle:2.2.3'
+ //classpath 'io.realm:realm-gradle-plugin:0.88.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
@@ -47,11 +48,18 @@ buildscript {
repositories {
maven { url "https://jitpack.io" }
+ maven { // this is for realm-db
+ url 'http://oss.jfrog.org/artifactory/oss-snapshot-local'
+ }
}
dependencies {
//compile fileTree(dir: 'libs', include: ['*.jar'])
- compile project(':MPChartLib') // remove this if you only imported the example project
- compile 'com.android.support:appcompat-v7:21.0.3'
- //compile 'com.github.PhilJay:MPAndroidChart:v2.0.7'
+ //compile project(':MPChartLib-Realm') // clone "https://github.com/PhilJay/MPAndroidChart-Realm" to get this or uncomment the gradle dependency below:
+ compile 'com.github.PhilJay:MPAndroidChart-Realm:v2.0.2@aar'
+
+ compile project(':MPChartLib')
+ compile 'com.android.support:appcompat-v7:24.2.1'
+ //compile 'io.realm:realm-android:0.87.5' // dependency for realm-database API (http://realm.io)
+ //compile 'com.github.PhilJay:MPAndroidChart:v2.2.5'
}
diff --git a/MPChartExample/libs/android-support-v4.jar b/MPChartExample/libs/android-support-v4.jar
deleted file mode 100644
index c31cede47e..0000000000
Binary files a/MPChartExample/libs/android-support-v4.jar and /dev/null differ
diff --git a/MPChartExample/project.properties b/MPChartExample/project.properties
index a8d309b24e..b32d807be6 100644
--- a/MPChartExample/project.properties
+++ b/MPChartExample/project.properties
@@ -11,5 +11,5 @@
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
# Project target.
-target=android-19
+target=android-23
android.library.reference.1=../MPChartLib
diff --git a/MPChartExample/res/drawable-hdpi/star.png b/MPChartExample/res/drawable-hdpi/star.png
new file mode 100644
index 0000000000..c7811ef2b8
Binary files /dev/null and b/MPChartExample/res/drawable-hdpi/star.png differ
diff --git a/MPChartExample/res/drawable-nodpi/radar_marker.png b/MPChartExample/res/drawable-nodpi/radar_marker.png
new file mode 100644
index 0000000000..a84b93b539
Binary files /dev/null and b/MPChartExample/res/drawable-nodpi/radar_marker.png differ
diff --git a/MPChartExample/res/drawable/fade_red.xml b/MPChartExample/res/drawable/fade_red.xml
new file mode 100644
index 0000000000..54ac10ba03
--- /dev/null
+++ b/MPChartExample/res/drawable/fade_red.xml
@@ -0,0 +1,7 @@
+
+
+
+
\ No newline at end of file
diff --git a/MPChartExample/res/drawable/new_background.xml b/MPChartExample/res/drawable/new_background.xml
new file mode 100644
index 0000000000..c2d3b9cfc5
--- /dev/null
+++ b/MPChartExample/res/drawable/new_background.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MPChartExample/res/layout/activity_age_distribution.xml b/MPChartExample/res/layout/activity_age_distribution.xml
new file mode 100644
index 0000000000..b023d3ab2d
--- /dev/null
+++ b/MPChartExample/res/layout/activity_age_distribution.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
diff --git a/MPChartExample/res/layout/activity_barchart.xml b/MPChartExample/res/layout/activity_barchart.xml
index f140d6e78c..ccb26bb81c 100644
--- a/MPChartExample/res/layout/activity_barchart.xml
+++ b/MPChartExample/res/layout/activity_barchart.xml
@@ -30,12 +30,12 @@
android:layout_marginBottom="35dp"
android:layout_toLeftOf="@+id/tvXMax"
android:layout_marginRight="5dp"
- android:max="500"
+ android:max="1500"
android:paddingBottom="12dp" />
+ android:textAppearance="?android:attr/textAppearanceSmall" />
+ android:textAppearance="?android:attr/textAppearanceSmall" />
diff --git a/MPChartExample/res/layout/activity_barchart_noseekbar.xml b/MPChartExample/res/layout/activity_barchart_noseekbar.xml
new file mode 100644
index 0000000000..5180e07b78
--- /dev/null
+++ b/MPChartExample/res/layout/activity_barchart_noseekbar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MPChartExample/res/layout/activity_barchart_sinus.xml b/MPChartExample/res/layout/activity_barchart_sinus.xml
new file mode 100644
index 0000000000..78b849081f
--- /dev/null
+++ b/MPChartExample/res/layout/activity_barchart_sinus.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/MPChartExample/res/layout/activity_bubblechart.xml b/MPChartExample/res/layout/activity_bubblechart.xml
new file mode 100644
index 0000000000..1cc55dfb42
--- /dev/null
+++ b/MPChartExample/res/layout/activity_bubblechart.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MPChartExample/res/layout/activity_bubblechart_noseekbar.xml b/MPChartExample/res/layout/activity_bubblechart_noseekbar.xml
new file mode 100644
index 0000000000..6d7a7763df
--- /dev/null
+++ b/MPChartExample/res/layout/activity_bubblechart_noseekbar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MPChartExample/res/layout/activity_candlechart.xml b/MPChartExample/res/layout/activity_candlechart.xml
index 08ede1e0d7..f9384c9158 100644
--- a/MPChartExample/res/layout/activity_candlechart.xml
+++ b/MPChartExample/res/layout/activity_candlechart.xml
@@ -30,7 +30,7 @@
android:layout_marginBottom="35dp"
android:layout_toLeftOf="@+id/tvXMax"
android:layout_marginRight="5dp"
- android:max="500"
+ android:max="3000"
android:paddingBottom="12dp" />
+
+
+
+
+
\ No newline at end of file
diff --git a/MPChartExample/res/layout/activity_horizontalbarchart.xml b/MPChartExample/res/layout/activity_horizontalbarchart.xml
index c4f255598e..5b713fbdd7 100644
--- a/MPChartExample/res/layout/activity_horizontalbarchart.xml
+++ b/MPChartExample/res/layout/activity_horizontalbarchart.xml
@@ -7,6 +7,7 @@
android:id="@+id/chart1"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:background="@android:color/white"
android:layout_above="@+id/seekBar1" />
+
+
+
+
+
\ No newline at end of file
diff --git a/MPChartExample/res/layout/activity_linechart.xml b/MPChartExample/res/layout/activity_linechart.xml
index 0389e9e298..7cadd8dd65 100644
--- a/MPChartExample/res/layout/activity_linechart.xml
+++ b/MPChartExample/res/layout/activity_linechart.xml
@@ -18,7 +18,7 @@
android:layout_margin="8dp"
android:layout_toLeftOf="@+id/tvYMax"
android:layout_marginRight="5dp"
- android:max="200"
+ android:max="150"
android:paddingBottom="12dp" />
+
+
+
+
+
+
+
+
+
diff --git a/MPChartExample/res/layout/activity_performance_linechart.xml b/MPChartExample/res/layout/activity_performance_linechart.xml
index b7aedf6dda..d7cd5747fe 100644
--- a/MPChartExample/res/layout/activity_performance_linechart.xml
+++ b/MPChartExample/res/layout/activity_performance_linechart.xml
@@ -1,7 +1,8 @@
+ android:layout_height="match_parent"
+ android:background="@android:color/white">
+
+
+
+
+
\ No newline at end of file
diff --git a/MPChartExample/res/layout/activity_piechart_noseekbar.xml b/MPChartExample/res/layout/activity_piechart_noseekbar.xml
new file mode 100644
index 0000000000..52c62806b0
--- /dev/null
+++ b/MPChartExample/res/layout/activity_piechart_noseekbar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MPChartExample/res/layout/activity_radarchart_noseekbar.xml b/MPChartExample/res/layout/activity_radarchart_noseekbar.xml
new file mode 100644
index 0000000000..d8e3b35aab
--- /dev/null
+++ b/MPChartExample/res/layout/activity_radarchart_noseekbar.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MPChartExample/res/layout/activity_realm_wiki.xml b/MPChartExample/res/layout/activity_realm_wiki.xml
new file mode 100644
index 0000000000..d4e27933cf
--- /dev/null
+++ b/MPChartExample/res/layout/activity_realm_wiki.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MPChartExample/res/layout/activity_scatterchart_noseekbar.xml b/MPChartExample/res/layout/activity_scatterchart_noseekbar.xml
new file mode 100644
index 0000000000..548a0c7a66
--- /dev/null
+++ b/MPChartExample/res/layout/activity_scatterchart_noseekbar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MPChartExample/res/layout/activity_scrollview.xml b/MPChartExample/res/layout/activity_scrollview.xml
new file mode 100644
index 0000000000..95c78fedeb
--- /dev/null
+++ b/MPChartExample/res/layout/activity_scrollview.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MPChartExample/res/layout/frag_simple_line.xml b/MPChartExample/res/layout/frag_simple_line.xml
index ef1b69a35d..7a2757476b 100644
--- a/MPChartExample/res/layout/frag_simple_line.xml
+++ b/MPChartExample/res/layout/frag_simple_line.xml
@@ -6,7 +6,7 @@
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
diff --git a/MPChartExample/res/layout/frag_simple_pie.xml b/MPChartExample/res/layout/frag_simple_pie.xml
index ef63ff3382..ed490ddbe6 100644
--- a/MPChartExample/res/layout/frag_simple_pie.xml
+++ b/MPChartExample/res/layout/frag_simple_pie.xml
@@ -6,7 +6,7 @@
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
diff --git a/MPChartExample/res/layout/frag_simple_scatter.xml b/MPChartExample/res/layout/frag_simple_scatter.xml
index 53c3391526..2e42332db3 100644
--- a/MPChartExample/res/layout/frag_simple_scatter.xml
+++ b/MPChartExample/res/layout/frag_simple_scatter.xml
@@ -6,7 +6,7 @@
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
diff --git a/MPChartExample/res/layout/list_item.xml b/MPChartExample/res/layout/list_item.xml
index eb95ab8fc0..c9c11e93ba 100644
--- a/MPChartExample/res/layout/list_item.xml
+++ b/MPChartExample/res/layout/list_item.xml
@@ -22,6 +22,24 @@
android:layout_below="@+id/tvName"
android:layout_marginTop="3dp"
android:text="Small Text"
- android:textSize="12dp" />
+ android:textSize="12dp"
+ android:layout_marginRight="10dp"
+ android:layout_toLeftOf="@+id/tvNew"
+ android:layout_toStartOf="@+id/tvNew" />
+
+
diff --git a/MPChartExample/res/layout/radar_markerview.xml b/MPChartExample/res/layout/radar_markerview.xml
new file mode 100644
index 0000000000..9ab1b84121
--- /dev/null
+++ b/MPChartExample/res/layout/radar_markerview.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
diff --git a/MPChartExample/res/menu/bar.xml b/MPChartExample/res/menu/bar.xml
index 52eadc6458..4bbfedd4db 100644
--- a/MPChartExample/res/menu/bar.xml
+++ b/MPChartExample/res/menu/bar.xml
@@ -6,12 +6,12 @@
android:title="Toggle Values">
-
+ android:id="@+id/actionToggleIcons"
+ android:title="Toggle Icons">
-
+ android:id="@+id/actionToggleHighlight"
+ android:title="Toggle Highlight">
-
- -
-
-
- -
-
-
@@ -45,5 +37,13 @@
android:id="@+id/actionTogglePinch"
android:title="Toggle PinchZoom">
+ -
+
+ -
+
\ No newline at end of file
diff --git a/MPChartExample/res/menu/bubble.xml b/MPChartExample/res/menu/bubble.xml
new file mode 100644
index 0000000000..b7950291e9
--- /dev/null
+++ b/MPChartExample/res/menu/bubble.xml
@@ -0,0 +1,45 @@
+
+
\ No newline at end of file
diff --git a/MPChartExample/res/menu/candle.xml b/MPChartExample/res/menu/candle.xml
index 972e172826..cdf1c4e4dd 100644
--- a/MPChartExample/res/menu/candle.xml
+++ b/MPChartExample/res/menu/candle.xml
@@ -5,10 +5,6 @@
android:id="@+id/actionToggleHighlight"
android:title="Toggle Highlight">
- -
-
-
@@ -33,5 +29,13 @@
android:id="@+id/actionTogglePinch"
android:title="Toggle PinchZoom">
+ -
+
+ -
+
\ No newline at end of file
diff --git a/MPChartExample/res/menu/combined.xml b/MPChartExample/res/menu/combined.xml
index 9b034d7f4f..7e37ba0d83 100644
--- a/MPChartExample/res/menu/combined.xml
+++ b/MPChartExample/res/menu/combined.xml
@@ -9,5 +9,8 @@
android:id="@+id/actionToggleBarValues"
android:title="Toggle bar Values">
-
+ -
+
\ No newline at end of file
diff --git a/MPChartExample/res/menu/draw.xml b/MPChartExample/res/menu/draw.xml
index e519fd1cff..50f35239e7 100644
--- a/MPChartExample/res/menu/draw.xml
+++ b/MPChartExample/res/menu/draw.xml
@@ -17,18 +17,10 @@
android:id="@+id/actionToggleHighlight"
android:title="Toggle Highlight">
- -
-
-
- -
-
-
@@ -37,4 +29,8 @@
android:id="@+id/actionTogglePinch"
android:title="Toggle PinchZoom">
+ -
+
\ No newline at end of file
diff --git a/MPChartExample/res/menu/line.xml b/MPChartExample/res/menu/line.xml
index d58bcd309e..f9f5be9615 100644
--- a/MPChartExample/res/menu/line.xml
+++ b/MPChartExample/res/menu/line.xml
@@ -5,6 +5,10 @@
android:id="@+id/actionToggleValues"
android:title="Toggle Values">
+ -
+
-
@@ -13,17 +17,21 @@
android:id="@+id/actionToggleCircles"
android:title="Toggle Circles">
- -
-
+ android:id="@+id/actionToggleStepped"
+ android:title="Toggle Stepped">
-
+ android:id="@+id/actionToggleHorizontalCubic"
+ android:title="Toggle Horizontal Cubic">
+
+ -
-
- -
-
-
--
+ -
+
\ No newline at end of file
diff --git a/MPChartExample/res/menu/pie.xml b/MPChartExample/res/menu/pie.xml
index 3013da3f2c..0e5323a590 100644
--- a/MPChartExample/res/menu/pie.xml
+++ b/MPChartExample/res/menu/pie.xml
@@ -5,6 +5,10 @@
android:id="@+id/actionToggleValues"
android:title="Toggle Y-Values">
+ -
+
-
@@ -37,5 +41,9 @@
android:id="@+id/actionSave"
android:title="Save to Gallery">
+ -
+
\ No newline at end of file
diff --git a/MPChartExample/res/menu/radar.xml b/MPChartExample/res/menu/radar.xml
index cbde056f4f..14690f446c 100644
--- a/MPChartExample/res/menu/radar.xml
+++ b/MPChartExample/res/menu/radar.xml
@@ -5,6 +5,10 @@
android:id="@+id/actionToggleValues"
android:title="Toggle Values">
+ -
+
-
@@ -13,6 +17,22 @@
android:id="@+id/actionToggleHighlight"
android:title="Toggle Highlight">
+ -
+
+ -
+
+ -
+
+ -
+
-
diff --git a/MPChartExample/res/menu/realm.xml b/MPChartExample/res/menu/realm.xml
new file mode 100644
index 0000000000..f954443b30
--- /dev/null
+++ b/MPChartExample/res/menu/realm.xml
@@ -0,0 +1,8 @@
+
+
\ No newline at end of file
diff --git a/MPChartExample/res/menu/realtime.xml b/MPChartExample/res/menu/realtime.xml
index 03f4e7c8a9..a4b2d22a78 100644
--- a/MPChartExample/res/menu/realtime.xml
+++ b/MPChartExample/res/menu/realtime.xml
@@ -5,4 +5,12 @@
android:id="@+id/actionAdd"
android:title="Feed new Entry">
+ -
+
+ -
+
\ No newline at end of file
diff --git a/MPChartExample/res/menu/scatter.xml b/MPChartExample/res/menu/scatter.xml
index 3020bdb786..b7950291e9 100644
--- a/MPChartExample/res/menu/scatter.xml
+++ b/MPChartExample/res/menu/scatter.xml
@@ -6,12 +6,12 @@
android:title="Toggle Values">
-
+ android:id="@+id/actionToggleIcons"
+ android:title="Toggle Icons">
-
+ android:id="@+id/actionToggleHighlight"
+ android:title="Toggle Highlight">
-
- -
-
-
@@ -41,5 +37,9 @@
android:id="@+id/actionTogglePinch"
android:title="Toggle PinchZoom">
+ -
+
\ No newline at end of file
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/AnotherBarActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/AnotherBarActivity.java
index e15f57b7e2..ba01acd794 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/AnotherBarActivity.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/AnotherBarActivity.java
@@ -16,9 +16,8 @@
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
-import com.github.mikephil.charting.data.DataSet;
-import com.github.mikephil.charting.data.filter.Approximator;
-import com.github.mikephil.charting.data.filter.Approximator.ApproximatorType;
+import com.github.mikephil.charting.interfaces.datasets.IBarDataSet;
+import com.github.mikephil.charting.interfaces.datasets.IDataSet;
import com.github.mikephil.charting.utils.ColorTemplate;
import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
@@ -48,7 +47,7 @@ protected void onCreate(Bundle savedInstanceState) {
mChart = (BarChart) findViewById(R.id.chart1);
- mChart.setDescription("");
+ mChart.getDescription().setEnabled(false);
// if more than 60 entries are displayed in the chart, no values will be
// drawn
@@ -62,7 +61,6 @@ protected void onCreate(Bundle savedInstanceState) {
XAxis xAxis = mChart.getXAxis();
xAxis.setPosition(XAxisPosition.BOTTOM);
- xAxis.setSpaceBetweenLabels(0);
xAxis.setDrawGridLines(false);
mChart.getAxisLeft().setDrawGridLines(false);
@@ -75,14 +73,6 @@ protected void onCreate(Bundle savedInstanceState) {
mChart.animateY(2500);
mChart.getLegend().setEnabled(false);
-
- // Legend l = mChart.getLegend();
- // l.setPosition(LegendPosition.BELOW_CHART_CENTER);
- // l.setFormSize(8f);
- // l.setFormToTextSpace(4f);
- // l.setXEntrySpace(6f);
-
- // mChart.setDrawLegend(false);
}
@Override
@@ -97,18 +87,18 @@ public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.actionToggleValues: {
- for (DataSet> set : mChart.getData().getDataSets())
+ for (IDataSet set : mChart.getData().getDataSets())
set.setDrawValues(!set.isDrawValuesEnabled());
mChart.invalidate();
break;
}
case R.id.actionToggleHighlight: {
- if (mChart.isHighlightEnabled())
- mChart.setHighlightEnabled(false);
- else
- mChart.setHighlightEnabled(true);
- mChart.invalidate();
+
+ if(mChart.getData() != null) {
+ mChart.getData().setHighlightEnabled(!mChart.getData().isHighlightEnabled());
+ mChart.invalidate();
+ }
break;
}
case R.id.actionTogglePinch: {
@@ -120,28 +110,14 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.invalidate();
break;
}
- case R.id.actionToggleHighlightArrow: {
- if (mChart.isDrawHighlightArrowEnabled())
- mChart.setDrawHighlightArrow(false);
- else
- mChart.setDrawHighlightArrow(true);
- mChart.invalidate();
- break;
- }
- case R.id.actionToggleStartzero: {
-
- mChart.getAxisLeft().setStartAtZero(!mChart.getAxisLeft().isStartAtZeroEnabled());
- mChart.getAxisRight().setStartAtZero(!mChart.getAxisRight().isStartAtZeroEnabled());
- mChart.invalidate();
+ case R.id.actionToggleAutoScaleMinMax: {
+ mChart.setAutoScaleMinMaxEnabled(!mChart.isAutoScaleMinMaxEnabled());
+ mChart.notifyDataSetChanged();
break;
}
- case R.id.actionToggleAdjustXLegend: {
- XAxis xAxis = mChart.getXAxis();
-
- if (xAxis.isAdjustXLabelsEnabled())
- xAxis.setAdjustXLabels(false);
- else
- xAxis.setAdjustXLabels(true);
+ case R.id.actionToggleBarBorders: {
+ for (IBarDataSet set : mChart.getData().getDataSets())
+ ((BarDataSet)set).setBarBorderWidth(set.getBarBorderWidth() == 1.f ? 0.f : 1.f);
mChart.invalidate();
break;
@@ -159,18 +135,6 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.animateXY(3000, 3000);
break;
}
- case R.id.actionToggleFilter: {
-
- Approximator a = new Approximator(ApproximatorType.DOUGLAS_PEUCKER, 25);
-
- if (!mChart.isFilteringEnabled()) {
- mChart.enableFiltering(a);
- } else {
- mChart.disableFiltering();
- }
- mChart.invalidate();
- break;
- }
case R.id.actionSave: {
if (mChart.saveToGallery("title" + System.currentTimeMillis(), 50)) {
Toast.makeText(getApplicationContext(), "Saving SUCCESSFUL!",
@@ -194,25 +158,31 @@ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
for (int i = 0; i < mSeekBarX.getProgress() + 1; i++) {
float mult = (mSeekBarY.getProgress() + 1);
- float val1 = (float) (Math.random() * mult) + mult / 3;
- yVals1.add(new BarEntry((int) val1, i));
+ float val = (float) (Math.random() * mult) + mult / 3;
+ yVals1.add(new BarEntry(i, val));
}
- ArrayList xVals = new ArrayList();
- for (int i = 0; i < mSeekBarX.getProgress() + 1; i++) {
- xVals.add((int) yVals1.get(i).getVal() + "");
+ BarDataSet set1;
+
+ if (mChart.getData() != null &&
+ mChart.getData().getDataSetCount() > 0) {
+ set1 = (BarDataSet)mChart.getData().getDataSetByIndex(0);
+ set1.setValues(yVals1);
+ mChart.getData().notifyDataChanged();
+ mChart.notifyDataSetChanged();
+ } else {
+ set1 = new BarDataSet(yVals1, "Data Set");
+ set1.setColors(ColorTemplate.VORDIPLOM_COLORS);
+ set1.setDrawValues(false);
+
+ ArrayList dataSets = new ArrayList();
+ dataSets.add(set1);
+
+ BarData data = new BarData(dataSets);
+ mChart.setData(data);
+ mChart.setFitBars(true);
}
- BarDataSet set1 = new BarDataSet(yVals1, "Data Set");
- set1.setColors(ColorTemplate.VORDIPLOM_COLORS);
- set1.setDrawValues(false);
-
- ArrayList dataSets = new ArrayList();
- dataSets.add(set1);
-
- BarData data = new BarData(xVals, dataSets);
-
- mChart.setData(data);
mChart.invalidate();
}
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartActivity.java
index 352db3a3e7..5772359773 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartActivity.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartActivity.java
@@ -2,9 +2,7 @@
package com.xxmassdeveloper.mpchartexample;
import android.annotation.SuppressLint;
-import android.graphics.PointF;
import android.graphics.RectF;
-import android.graphics.Typeface;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
@@ -23,17 +21,21 @@
import com.github.mikephil.charting.components.XAxis.XAxisPosition;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.components.YAxis.AxisDependency;
+import com.github.mikephil.charting.components.YAxis.YAxisLabelPosition;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
-import com.github.mikephil.charting.data.DataSet;
import com.github.mikephil.charting.data.Entry;
-import com.github.mikephil.charting.data.filter.Approximator;
-import com.github.mikephil.charting.data.filter.Approximator.ApproximatorType;
+import com.github.mikephil.charting.formatter.IAxisValueFormatter;
+import com.github.mikephil.charting.highlight.Highlight;
+import com.github.mikephil.charting.interfaces.datasets.IBarDataSet;
+import com.github.mikephil.charting.interfaces.datasets.IDataSet;
import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
-import com.github.mikephil.charting.utils.Highlight;
-import com.github.mikephil.charting.utils.ValueFormatter;
-import com.xxmassdeveloper.mpchartexample.custom.MyValueFormatter;
+import com.github.mikephil.charting.utils.ColorTemplate;
+import com.github.mikephil.charting.utils.MPPointF;
+import com.xxmassdeveloper.mpchartexample.custom.DayAxisValueFormatter;
+import com.xxmassdeveloper.mpchartexample.custom.MyAxisValueFormatter;
+import com.xxmassdeveloper.mpchartexample.custom.XYMarkerView;
import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
import java.util.ArrayList;
@@ -44,8 +46,6 @@ public class BarChartActivity extends DemoBase implements OnSeekBarChangeListene
protected BarChart mChart;
private SeekBar mSeekBarX, mSeekBarY;
private TextView tvX, tvY;
-
- private Typeface mTf;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -63,10 +63,10 @@ protected void onCreate(Bundle savedInstanceState) {
mChart = (BarChart) findViewById(R.id.chart1);
mChart.setOnChartValueSelectedListener(this);
- mChart.setDrawBarShadow(true);
+ mChart.setDrawBarShadow(false);
mChart.setDrawValueAboveBar(true);
- mChart.setDescription("");
+ mChart.getDescription().setEnabled(false);
// if more than 60 entries are displayed in the chart, no values will be
// drawn
@@ -75,33 +75,54 @@ protected void onCreate(Bundle savedInstanceState) {
// scaling can now only be done on x- and y-axis separately
mChart.setPinchZoom(false);
- // draw shadows for each bar that show the maximum value
- // mChart.setDrawBarShadow(true);
-
- // mChart.setDrawXLabels(false);
-
mChart.setDrawGridBackground(false);
// mChart.setDrawYLabels(false);
- mTf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");
+ IAxisValueFormatter xAxisFormatter = new DayAxisValueFormatter(mChart);
XAxis xAxis = mChart.getXAxis();
xAxis.setPosition(XAxisPosition.BOTTOM);
- xAxis.setTypeface(mTf);
+ xAxis.setTypeface(mTfLight);
xAxis.setDrawGridLines(false);
-
- ValueFormatter custom = new MyValueFormatter();
+ xAxis.setGranularity(1f); // only intervals of 1 day
+ xAxis.setLabelCount(7);
+ xAxis.setValueFormatter(xAxisFormatter);
+
+ IAxisValueFormatter custom = new MyAxisValueFormatter();
YAxis leftAxis = mChart.getAxisLeft();
- leftAxis.setTypeface(mTf);
- leftAxis.setLabelCount(8);
+ leftAxis.setTypeface(mTfLight);
+ leftAxis.setLabelCount(8, false);
leftAxis.setValueFormatter(custom);
+ leftAxis.setPosition(YAxisLabelPosition.OUTSIDE_CHART);
+ leftAxis.setSpaceTop(15f);
+ leftAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)
YAxis rightAxis = mChart.getAxisRight();
rightAxis.setDrawGridLines(false);
- rightAxis.setTypeface(mTf);
- rightAxis.setLabelCount(8);
+ rightAxis.setTypeface(mTfLight);
+ rightAxis.setLabelCount(8, false);
rightAxis.setValueFormatter(custom);
+ rightAxis.setSpaceTop(15f);
+ rightAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)
+
+ Legend l = mChart.getLegend();
+ l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
+ l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT);
+ l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
+ l.setDrawInside(false);
+ l.setForm(LegendForm.SQUARE);
+ l.setFormSize(9f);
+ l.setTextSize(11f);
+ l.setXEntrySpace(4f);
+ // l.setExtra(ColorTemplate.VORDIPLOM_COLORS, new String[] { "abc",
+ // "def", "ghj", "ikl", "mno" });
+ // l.setCustom(ColorTemplate.VORDIPLOM_COLORS, new String[] { "abc",
+ // "def", "ghj", "ikl", "mno" });
+
+ XYMarkerView mv = new XYMarkerView(this, xAxisFormatter);
+ mv.setChartView(mChart); // For bounds control
+ mChart.setMarker(mv); // Set the marker to the chart
setData(12, 50);
@@ -112,13 +133,6 @@ protected void onCreate(Bundle savedInstanceState) {
mSeekBarY.setOnSeekBarChangeListener(this);
mSeekBarX.setOnSeekBarChangeListener(this);
- Legend l = mChart.getLegend();
- l.setPosition(LegendPosition.BELOW_CHART_LEFT);
- l.setForm(LegendForm.SQUARE);
- l.setFormSize(9f);
- l.setTextSize(11f);
- l.setXEntrySpace(4f);
-
// mChart.setDrawLegend(false);
}
@@ -133,20 +147,26 @@ public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.actionToggleValues: {
- for (DataSet> set : mChart.getData().getDataSets())
+ for (IDataSet set : mChart.getData().getDataSets())
set.setDrawValues(!set.isDrawValuesEnabled());
mChart.invalidate();
break;
}
- case R.id.actionToggleHighlight: {
- if (mChart.isHighlightEnabled())
- mChart.setHighlightEnabled(false);
- else
- mChart.setHighlightEnabled(true);
+ case R.id.actionToggleIcons: {
+ for (IDataSet set : mChart.getData().getDataSets())
+ set.setDrawIcons(!set.isDrawIconsEnabled());
+
mChart.invalidate();
break;
}
+ case R.id.actionToggleHighlight: {
+ if (mChart.getData() != null) {
+ mChart.getData().setHighlightEnabled(!mChart.getData().isHighlightEnabled());
+ mChart.invalidate();
+ }
+ break;
+ }
case R.id.actionTogglePinch: {
if (mChart.isPinchZoomEnabled())
mChart.setPinchZoom(false);
@@ -156,18 +176,15 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.invalidate();
break;
}
- case R.id.actionToggleHighlightArrow: {
- if (mChart.isDrawHighlightArrowEnabled())
- mChart.setDrawHighlightArrow(false);
- else
- mChart.setDrawHighlightArrow(true);
- mChart.invalidate();
+ case R.id.actionToggleAutoScaleMinMax: {
+ mChart.setAutoScaleMinMaxEnabled(!mChart.isAutoScaleMinMaxEnabled());
+ mChart.notifyDataSetChanged();
break;
}
- case R.id.actionToggleStartzero: {
- mChart.getAxisLeft().setStartAtZero(!mChart.getAxisLeft().isStartAtZeroEnabled());
- mChart.getAxisRight().setStartAtZero(!mChart.getAxisRight().isStartAtZeroEnabled());
- mChart.notifyDataSetChanged();
+ case R.id.actionToggleBarBorders: {
+ for (IBarDataSet set : mChart.getData().getDataSets())
+ ((BarDataSet) set).setBarBorderWidth(set.getBarBorderWidth() == 1.f ? 0.f : 1.f);
+
mChart.invalidate();
break;
}
@@ -184,29 +201,6 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.animateXY(3000, 3000);
break;
}
- case R.id.actionToggleAdjustXLegend: {
- XAxis xLabels = mChart.getXAxis();
-
- if (xLabels.isAdjustXLabelsEnabled())
- xLabels.setAdjustXLabels(false);
- else
- xLabels.setAdjustXLabels(true);
-
- mChart.invalidate();
- break;
- }
- case R.id.actionToggleFilter: {
-
- Approximator a = new Approximator(ApproximatorType.DOUGLAS_PEUCKER, 25);
-
- if (!mChart.isFilteringEnabled()) {
- mChart.enableFiltering(a);
- } else {
- mChart.disableFiltering();
- }
- mChart.invalidate();
- break;
- }
case R.id.actionSave: {
if (mChart.saveToGallery("title" + System.currentTimeMillis(), 50)) {
Toast.makeText(getApplicationContext(), "Saving SUCCESSFUL!",
@@ -223,68 +217,90 @@ public boolean onOptionsItemSelected(MenuItem item) {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- tvX.setText("" + (mSeekBarX.getProgress() + 1));
+ tvX.setText("" + (mSeekBarX.getProgress() + 2));
tvY.setText("" + (mSeekBarY.getProgress()));
- setData(mSeekBarX.getProgress(), mSeekBarY.getProgress());
+ setData(mSeekBarX.getProgress() + 1 , mSeekBarY.getProgress());
mChart.invalidate();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
-
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
-
}
private void setData(int count, float range) {
- ArrayList xVals = new ArrayList();
- for (int i = 0; i < count; i++) {
- xVals.add(mMonths[i % 12]);
- }
+ float start = 1f;
ArrayList yVals1 = new ArrayList();
- for (int i = 0; i < count; i++) {
+ for (int i = (int) start; i < start + count + 1; i++) {
float mult = (range + 1);
float val = (float) (Math.random() * mult);
- yVals1.add(new BarEntry(val, i));
+
+ if (Math.random() * 100 < 25) {
+ yVals1.add(new BarEntry(i, val, getResources().getDrawable(R.drawable.star)));
+ } else {
+ yVals1.add(new BarEntry(i, val));
+ }
}
- BarDataSet set1 = new BarDataSet(yVals1, "DataSet");
- set1.setBarSpacePercent(35f);
+ BarDataSet set1;
+
+ if (mChart.getData() != null &&
+ mChart.getData().getDataSetCount() > 0) {
+ set1 = (BarDataSet) mChart.getData().getDataSetByIndex(0);
+ set1.setValues(yVals1);
+ mChart.getData().notifyDataChanged();
+ mChart.notifyDataSetChanged();
+ } else {
+ set1 = new BarDataSet(yVals1, "The year 2017");
+
+ set1.setDrawIcons(false);
- ArrayList dataSets = new ArrayList();
- dataSets.add(set1);
+ set1.setColors(ColorTemplate.MATERIAL_COLORS);
- BarData data = new BarData(xVals, dataSets);
-// data.setValueFormatter(new MyValueFormatter());
- data.setValueTextSize(10f);
- data.setValueTypeface(mTf);
+ ArrayList dataSets = new ArrayList();
+ dataSets.add(set1);
- mChart.setData(data);
+ BarData data = new BarData(dataSets);
+ data.setValueTextSize(10f);
+ data.setValueTypeface(mTfLight);
+ data.setBarWidth(0.9f);
+
+ mChart.setData(data);
+ }
}
+ protected RectF mOnValueSelectedRectF = new RectF();
+
@SuppressLint("NewApi")
@Override
- public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
+ public void onValueSelected(Entry e, Highlight h) {
if (e == null)
return;
- RectF bounds = mChart.getBarBounds((BarEntry) e);
- PointF position = mChart.getPosition(e, AxisDependency.LEFT);
+ RectF bounds = mOnValueSelectedRectF;
+ mChart.getBarBounds((BarEntry) e, bounds);
+ MPPointF position = mChart.getPosition(e, AxisDependency.LEFT);
Log.i("bounds", bounds.toString());
Log.i("position", position.toString());
+
+ Log.i("x-index",
+ "low: " + mChart.getLowestVisibleX() + ", high: "
+ + mChart.getHighestVisibleX());
+
+ MPPointF.recycleInstance(position);
}
- public void onNothingSelected() {
- };
+ @Override
+ public void onNothingSelected() { }
}
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartActivityMultiDataset.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartActivityMultiDataset.java
index 7f131a43d5..671ab5abec 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartActivityMultiDataset.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartActivityMultiDataset.java
@@ -2,7 +2,6 @@
package com.xxmassdeveloper.mpchartexample;
import android.graphics.Color;
-import android.graphics.Typeface;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
@@ -13,18 +12,19 @@
import android.widget.TextView;
import com.github.mikephil.charting.charts.BarChart;
+import com.github.mikephil.charting.components.AxisBase;
import com.github.mikephil.charting.components.Legend;
-import com.github.mikephil.charting.components.Legend.LegendPosition;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
-import com.github.mikephil.charting.data.DataSet;
import com.github.mikephil.charting.data.Entry;
+import com.github.mikephil.charting.formatter.IAxisValueFormatter;
+import com.github.mikephil.charting.formatter.LargeValueFormatter;
+import com.github.mikephil.charting.highlight.Highlight;
+import com.github.mikephil.charting.interfaces.datasets.IBarDataSet;
import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
-import com.github.mikephil.charting.utils.Highlight;
-import com.github.mikephil.charting.utils.LargeValueFormatter;
import com.xxmassdeveloper.mpchartexample.custom.MyMarkerView;
import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
@@ -36,8 +36,6 @@ public class BarChartActivityMultiDataset extends DemoBase implements OnSeekBarC
private BarChart mChart;
private SeekBar mSeekBarX, mSeekBarY;
private TextView tvX, tvY;
-
- private Typeface tf;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -47,6 +45,7 @@ protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_barchart);
tvX = (TextView) findViewById(R.id.tvXMax);
+ tvX.setTextSize(10);
tvY = (TextView) findViewById(R.id.tvYMax);
mSeekBarX = (SeekBar) findViewById(R.id.seekBar1);
@@ -57,7 +56,9 @@ protected void onCreate(Bundle savedInstanceState) {
mChart = (BarChart) findViewById(R.id.chart1);
mChart.setOnChartValueSelectedListener(this);
- mChart.setDescription("");
+ mChart.getDescription().setEnabled(false);
+
+// mChart.setDrawBorders(true);
// scaling can now only be done on x- and y-axis separately
mChart.setPinchZoom(false);
@@ -69,31 +70,40 @@ protected void onCreate(Bundle savedInstanceState) {
// create a custom MarkerView (extend MarkerView) and specify the layout
// to use for it
MyMarkerView mv = new MyMarkerView(this, R.layout.custom_marker_view);
-
- // define an offset to change the original position of the marker
- // (optional)
- // mv.setOffsets(-mv.getMeasuredWidth() / 2, -mv.getMeasuredHeight());
-
- // set the marker to the chart
- mChart.setMarkerView(mv);
+ mv.setChartView(mChart); // For bounds control
+ mChart.setMarker(mv); // Set the marker to the chart
mSeekBarX.setProgress(10);
mSeekBarY.setProgress(100);
- tf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");
-
Legend l = mChart.getLegend();
- l.setPosition(LegendPosition.RIGHT_OF_CHART_INSIDE);
- l.setTypeface(tf);
-
- XAxis xl = mChart.getXAxis();
- xl.setTypeface(tf);
+ l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
+ l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
+ l.setOrientation(Legend.LegendOrientation.VERTICAL);
+ l.setDrawInside(true);
+ l.setTypeface(mTfLight);
+ l.setYOffset(0f);
+ l.setXOffset(10f);
+ l.setYEntrySpace(0f);
+ l.setTextSize(8f);
+
+ XAxis xAxis = mChart.getXAxis();
+ xAxis.setTypeface(mTfLight);
+ xAxis.setGranularity(1f);
+ xAxis.setCenterAxisLabels(true);
+ xAxis.setValueFormatter(new IAxisValueFormatter() {
+ @Override
+ public String getFormattedValue(float value, AxisBase axis) {
+ return String.valueOf((int) value);
+ }
+ });
YAxis leftAxis = mChart.getAxisLeft();
- leftAxis.setTypeface(tf);
+ leftAxis.setTypeface(mTfLight);
leftAxis.setValueFormatter(new LargeValueFormatter());
leftAxis.setDrawGridLines(false);
- leftAxis.setSpaceTop(25f);
+ leftAxis.setSpaceTop(35f);
+ leftAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)
mChart.getAxisRight().setEnabled(false);
}
@@ -109,7 +119,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.actionToggleValues: {
- for (DataSet> set : mChart.getData().getDataSets())
+ for (IBarDataSet set : mChart.getData().getDataSets())
set.setDrawValues(!set.isDrawValuesEnabled());
mChart.invalidate();
@@ -124,37 +134,23 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.invalidate();
break;
}
- case R.id.actionToggleHighlight: {
- if (mChart.isHighlightEnabled())
- mChart.setHighlightEnabled(false);
- else
- mChart.setHighlightEnabled(true);
- mChart.invalidate();
- break;
- }
- case R.id.actionToggleHighlightArrow: {
- if (mChart.isDrawHighlightArrowEnabled())
- mChart.setDrawHighlightArrow(false);
- else
- mChart.setDrawHighlightArrow(true);
- mChart.invalidate();
+ case R.id.actionToggleAutoScaleMinMax: {
+ mChart.setAutoScaleMinMaxEnabled(!mChart.isAutoScaleMinMaxEnabled());
+ mChart.notifyDataSetChanged();
break;
}
- case R.id.actionToggleStartzero: {
- mChart.getAxisLeft().setStartAtZero(!mChart.getAxisLeft().isStartAtZeroEnabled());
- mChart.getAxisRight().setStartAtZero(!mChart.getAxisRight().isStartAtZeroEnabled());
+ case R.id.actionToggleBarBorders: {
+ for (IBarDataSet set : mChart.getData().getDataSets())
+ ((BarDataSet) set).setBarBorderWidth(set.getBarBorderWidth() == 1.f ? 0.f : 1.f);
+
mChart.invalidate();
break;
}
- case R.id.actionToggleAdjustXLegend: {
- XAxis xAxis = mChart.getXAxis();
-
- if (xAxis.isAdjustXLabelsEnabled())
- xAxis.setAdjustXLabels(false);
- else
- xAxis.setAdjustXLabels(true);
-
- mChart.invalidate();
+ case R.id.actionToggleHighlight: {
+ if (mChart.getData() != null) {
+ mChart.getData().setHighlightEnabled(!mChart.getData().isHighlightEnabled());
+ mChart.invalidate();
+ }
break;
}
case R.id.actionSave: {
@@ -171,7 +167,6 @@ public boolean onOptionsItemSelected(MenuItem item) {
break;
}
case R.id.animateXY: {
-
mChart.animateXY(3000, 3000);
break;
}
@@ -182,76 +177,90 @@ public boolean onOptionsItemSelected(MenuItem item) {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- tvX.setText("" + (mSeekBarX.getProgress() + 1));
- tvY.setText("" + (mSeekBarY.getProgress()));
+ float groupSpace = 0.08f;
+ float barSpace = 0.03f; // x4 DataSet
+ float barWidth = 0.2f; // x4 DataSet
+ // (0.2 + 0.03) * 4 + 0.08 = 1.00 -> interval per "group"
- ArrayList xVals = new ArrayList();
- for (int i = 0; i < mSeekBarX.getProgress(); i++) {
- xVals.add((i + 1990) + "");
- }
+ int groupCount = mSeekBarX.getProgress() + 1;
+ int startYear = 1980;
+ int endYear = startYear + groupCount;
+
+ tvX.setText(startYear + "-" + endYear);
+ tvY.setText("" + (mSeekBarY.getProgress()));
ArrayList yVals1 = new ArrayList();
ArrayList yVals2 = new ArrayList();
ArrayList yVals3 = new ArrayList();
+ ArrayList yVals4 = new ArrayList();
- float mult = mSeekBarY.getProgress() * 10000000f;
+ float randomMultiplier = mSeekBarY.getProgress() * 100000f;
- for (int i = 0; i < mSeekBarX.getProgress(); i++) {
- float val = (float) (Math.random() * mult) + 3;
- yVals1.add(new BarEntry(val, i));
+ for (int i = startYear; i < endYear; i++) {
+ yVals1.add(new BarEntry(i, (float) (Math.random() * randomMultiplier)));
+ yVals2.add(new BarEntry(i, (float) (Math.random() * randomMultiplier)));
+ yVals3.add(new BarEntry(i, (float) (Math.random() * randomMultiplier)));
+ yVals4.add(new BarEntry(i, (float) (Math.random() * randomMultiplier)));
}
- for (int i = 0; i < mSeekBarX.getProgress(); i++) {
- float val = (float) (Math.random() * mult) + 3;
- yVals2.add(new BarEntry(val, i));
+ BarDataSet set1, set2, set3, set4;
+
+ if (mChart.getData() != null && mChart.getData().getDataSetCount() > 0) {
+
+ set1 = (BarDataSet) mChart.getData().getDataSetByIndex(0);
+ set2 = (BarDataSet) mChart.getData().getDataSetByIndex(1);
+ set3 = (BarDataSet) mChart.getData().getDataSetByIndex(2);
+ set4 = (BarDataSet) mChart.getData().getDataSetByIndex(3);
+ set1.setValues(yVals1);
+ set2.setValues(yVals2);
+ set3.setValues(yVals3);
+ set4.setValues(yVals4);
+ mChart.getData().notifyDataChanged();
+ mChart.notifyDataSetChanged();
+
+ } else {
+ // create 4 DataSets
+ set1 = new BarDataSet(yVals1, "Company A");
+ set1.setColor(Color.rgb(104, 241, 175));
+ set2 = new BarDataSet(yVals2, "Company B");
+ set2.setColor(Color.rgb(164, 228, 251));
+ set3 = new BarDataSet(yVals3, "Company C");
+ set3.setColor(Color.rgb(242, 247, 158));
+ set4 = new BarDataSet(yVals4, "Company D");
+ set4.setColor(Color.rgb(255, 102, 0));
+
+ BarData data = new BarData(set1, set2, set3, set4);
+ data.setValueFormatter(new LargeValueFormatter());
+ data.setValueTypeface(mTfLight);
+
+ mChart.setData(data);
}
- for (int i = 0; i < mSeekBarX.getProgress(); i++) {
- float val = (float) (Math.random() * mult) + 3;
- yVals3.add(new BarEntry(val, i));
- }
+ // specify the width each bar should have
+ mChart.getBarData().setBarWidth(barWidth);
- // create 3 datasets with different types
- BarDataSet set1 = new BarDataSet(yVals1, "Company A");
- // set1.setColors(ColorTemplate.createColors(getApplicationContext(),
- // ColorTemplate.FRESH_COLORS));
- set1.setColor(Color.rgb(104, 241, 175));
- BarDataSet set2 = new BarDataSet(yVals2, "Company B");
- set2.setColor(Color.rgb(164, 228, 251));
- BarDataSet set3 = new BarDataSet(yVals3, "Company C");
- set3.setColor(Color.rgb(242, 247, 158));
-
- ArrayList dataSets = new ArrayList();
- dataSets.add(set1);
- dataSets.add(set2);
- dataSets.add(set3);
-
- BarData data = new BarData(xVals, dataSets);
- data.setValueFormatter(new LargeValueFormatter());
-
- // add space between the dataset groups in percent of bar-width
- data.setGroupSpace(80f);
- data.setValueTypeface(tf);
-
- mChart.setData(data);
+ // restrict the x-axis range
+ mChart.getXAxis().setAxisMinimum(startYear);
+
+ // barData.getGroupWith(...) is a helper that calculates the width each group needs based on the provided parameters
+ mChart.getXAxis().setAxisMaximum(startYear + mChart.getBarData().getGroupWidth(groupSpace, barSpace) * groupCount);
+ mChart.groupBars(startYear, groupSpace, barSpace);
mChart.invalidate();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
-
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
-
}
@Override
- public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
- Log.i("Activity", "Selected: " + e.toString() + ", dataSet: " + dataSetIndex);
+ public void onValueSelected(Entry e, Highlight h) {
+ Log.i("Activity", "Selected: " + e.toString() + ", dataSet: " + h.getDataSetIndex());
}
@Override
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartActivitySinus.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartActivitySinus.java
new file mode 100644
index 0000000000..56add4458e
--- /dev/null
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartActivitySinus.java
@@ -0,0 +1,229 @@
+
+package com.xxmassdeveloper.mpchartexample;
+
+import android.graphics.Color;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.WindowManager;
+import android.widget.SeekBar;
+import android.widget.SeekBar.OnSeekBarChangeListener;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.github.mikephil.charting.charts.BarChart;
+import com.github.mikephil.charting.components.Legend;
+import com.github.mikephil.charting.components.Legend.LegendForm;
+import com.github.mikephil.charting.components.Legend.LegendPosition;
+import com.github.mikephil.charting.components.XAxis;
+import com.github.mikephil.charting.components.YAxis;
+import com.github.mikephil.charting.data.BarData;
+import com.github.mikephil.charting.data.BarDataSet;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.interfaces.datasets.IBarDataSet;
+import com.github.mikephil.charting.utils.FileUtils;
+import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class BarChartActivitySinus extends DemoBase implements OnSeekBarChangeListener {
+
+ protected BarChart mChart;
+ private SeekBar mSeekBarX;
+ private TextView tvX;
+
+ private List mSinusData;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
+ WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ setContentView(R.layout.activity_barchart_sinus);
+
+ mSinusData = FileUtils.loadBarEntriesFromAssets(getAssets(), "othersine.txt");
+
+ tvX = (TextView) findViewById(R.id.tvValueCount);
+
+ mSeekBarX = (SeekBar) findViewById(R.id.seekbarValues);
+
+ mChart = (BarChart) findViewById(R.id.chart1);
+
+ mChart.setDrawBarShadow(false);
+ mChart.setDrawValueAboveBar(true);
+
+ mChart.getDescription().setEnabled(false);
+
+ // if more than 60 entries are displayed in the chart, no values will be
+ // drawn
+ mChart.setMaxVisibleValueCount(60);
+
+ // scaling can now only be done on x- and y-axis separately
+ mChart.setPinchZoom(false);
+
+ // draw shadows for each bar that show the maximum value
+ // mChart.setDrawBarShadow(true);
+
+ // mChart.setDrawXLabels(false);
+
+ mChart.setDrawGridBackground(false);
+ // mChart.setDrawYLabels(false);
+
+ XAxis xAxis = mChart.getXAxis();
+ xAxis.setEnabled(false);
+
+ YAxis leftAxis = mChart.getAxisLeft();
+ leftAxis.setTypeface(mTfLight);
+ leftAxis.setLabelCount(6, false);
+ leftAxis.setAxisMinimum(-2.5f);
+ leftAxis.setAxisMaximum(2.5f);
+ leftAxis.setGranularityEnabled(true);
+ leftAxis.setGranularity(0.1f);
+
+ YAxis rightAxis = mChart.getAxisRight();
+ rightAxis.setDrawGridLines(false);
+ rightAxis.setTypeface(mTfLight);
+ rightAxis.setLabelCount(6, false);
+ rightAxis.setAxisMinimum(-2.5f);
+ rightAxis.setAxisMaximum(2.5f);
+ rightAxis.setGranularity(0.1f);
+
+ mSeekBarX.setOnSeekBarChangeListener(this);
+ mSeekBarX.setProgress(150); // set data
+
+ Legend l = mChart.getLegend();
+ l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
+ l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT);
+ l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
+ l.setDrawInside(false);
+ l.setForm(LegendForm.SQUARE);
+ l.setFormSize(9f);
+ l.setTextSize(11f);
+ l.setXEntrySpace(4f);
+
+ mChart.animateXY(2000, 2000);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.bar, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+
+ switch (item.getItemId()) {
+ case R.id.actionToggleValues: {
+ for (IBarDataSet set : mChart.getData().getDataSets())
+ set.setDrawValues(!set.isDrawValuesEnabled());
+
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionToggleHighlight: {
+ if (mChart.getData() != null) {
+ mChart.getData().setHighlightEnabled(!mChart.getData().isHighlightEnabled());
+ mChart.invalidate();
+ }
+ break;
+ }
+ case R.id.actionTogglePinch: {
+ if (mChart.isPinchZoomEnabled())
+ mChart.setPinchZoom(false);
+ else
+ mChart.setPinchZoom(true);
+
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionToggleAutoScaleMinMax: {
+ mChart.setAutoScaleMinMaxEnabled(!mChart.isAutoScaleMinMaxEnabled());
+ mChart.notifyDataSetChanged();
+ break;
+ }
+ case R.id.actionToggleBarBorders: {
+ for (IBarDataSet set : mChart.getData().getDataSets())
+ ((BarDataSet) set).setBarBorderWidth(set.getBarBorderWidth() == 1.f ? 0.f : 1.f);
+
+ mChart.invalidate();
+ break;
+ }
+ case R.id.animateX: {
+ mChart.animateX(1500);
+ break;
+ }
+ case R.id.animateY: {
+ mChart.animateY(1500);
+ break;
+ }
+ case R.id.animateXY: {
+
+ mChart.animateXY(2000, 2000);
+ break;
+ }
+ case R.id.actionSave: {
+ if (mChart.saveToGallery("title" + System.currentTimeMillis(), 50)) {
+ Toast.makeText(getApplicationContext(), "Saving SUCCESSFUL!",
+ Toast.LENGTH_SHORT).show();
+ } else
+ Toast.makeText(getApplicationContext(), "Saving FAILED!", Toast.LENGTH_SHORT)
+ .show();
+ break;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+
+ tvX.setText("" + (mSeekBarX.getProgress()));
+
+ setData(mSeekBarX.getProgress());
+ mChart.invalidate();
+ }
+
+ @Override
+ public void onStartTrackingTouch(SeekBar seekBar) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void onStopTrackingTouch(SeekBar seekBar) {
+ // TODO Auto-generated method stub
+
+ }
+
+ private void setData(int count) {
+
+ ArrayList entries = new ArrayList();
+
+ for (int i = 0; i < count; i++) {
+ entries.add(mSinusData.get(i));
+ }
+
+ BarDataSet set;
+
+ if (mChart.getData() != null &&
+ mChart.getData().getDataSetCount() > 0) {
+ set = (BarDataSet) mChart.getData().getDataSetByIndex(0);
+ set.setValues(entries);
+ mChart.getData().notifyDataChanged();
+ mChart.notifyDataSetChanged();
+ } else {
+ set = new BarDataSet(entries, "Sinus Function");
+ set.setColor(Color.rgb(240, 120, 124));
+ }
+
+ BarData data = new BarData(set);
+ data.setValueTextSize(10f);
+ data.setValueTypeface(mTfLight);
+ data.setDrawValues(false);
+ data.setBarWidth(0.8f);
+
+ mChart.setData(data);
+ }
+}
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartPositiveNegative.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartPositiveNegative.java
new file mode 100644
index 0000000000..743b7e735d
--- /dev/null
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BarChartPositiveNegative.java
@@ -0,0 +1,173 @@
+
+package com.xxmassdeveloper.mpchartexample;
+
+import android.graphics.Color;
+import android.graphics.Typeface;
+import android.os.Bundle;
+import android.view.WindowManager;
+
+import com.github.mikephil.charting.charts.BarChart;
+import com.github.mikephil.charting.components.AxisBase;
+import com.github.mikephil.charting.components.XAxis;
+import com.github.mikephil.charting.components.XAxis.XAxisPosition;
+import com.github.mikephil.charting.components.YAxis;
+import com.github.mikephil.charting.data.BarData;
+import com.github.mikephil.charting.data.BarDataSet;
+import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.Entry;
+import com.github.mikephil.charting.formatter.IAxisValueFormatter;
+import com.github.mikephil.charting.formatter.IValueFormatter;
+import com.github.mikephil.charting.utils.ViewPortHandler;
+import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+public class BarChartPositiveNegative extends DemoBase {
+
+ protected BarChart mChart;
+ private Typeface mTf;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
+ WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ setContentView(R.layout.activity_barchart_noseekbar);
+
+ mTf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");
+ mChart = (BarChart) findViewById(R.id.chart1);
+ mChart.setBackgroundColor(Color.WHITE);
+ mChart.setExtraTopOffset(-30f);
+ mChart.setExtraBottomOffset(10f);
+ mChart.setExtraLeftOffset(70f);
+ mChart.setExtraRightOffset(70f);
+
+ mChart.setDrawBarShadow(false);
+ mChart.setDrawValueAboveBar(true);
+
+ mChart.getDescription().setEnabled(false);
+
+ // scaling can now only be done on x- and y-axis separately
+ mChart.setPinchZoom(false);
+
+ mChart.setDrawGridBackground(false);
+
+ XAxis xAxis = mChart.getXAxis();
+ xAxis.setPosition(XAxisPosition.BOTTOM);
+ xAxis.setTypeface(mTf);
+ xAxis.setDrawGridLines(false);
+ xAxis.setDrawAxisLine(false);
+ xAxis.setTextColor(Color.LTGRAY);
+ xAxis.setTextSize(13f);
+ xAxis.setLabelCount(5);
+ xAxis.setCenterAxisLabels(true);
+ xAxis.setGranularity(1f);
+
+ YAxis left = mChart.getAxisLeft();
+ left.setDrawLabels(false);
+ left.setSpaceTop(25f);
+ left.setSpaceBottom(25f);
+ left.setDrawAxisLine(false);
+ left.setDrawGridLines(false);
+ left.setDrawZeroLine(true); // draw a zero line
+ left.setZeroLineColor(Color.GRAY);
+ left.setZeroLineWidth(0.7f);
+ mChart.getAxisRight().setEnabled(false);
+ mChart.getLegend().setEnabled(false);
+
+ // THIS IS THE ORIGINAL DATA YOU WANT TO PLOT
+ final List data = new ArrayList<>();
+ data.add(new Data(0f, -224.1f, "12-29"));
+ data.add(new Data(1f, 238.5f, "12-30"));
+ data.add(new Data(2f, 1280.1f, "12-31"));
+ data.add(new Data(3f, -442.3f, "01-01"));
+ data.add(new Data(4f, -2280.1f, "01-02"));
+
+ xAxis.setValueFormatter(new IAxisValueFormatter() {
+ @Override
+ public String getFormattedValue(float value, AxisBase axis) {
+ return data.get(Math.min(Math.max((int) value, 0), data.size()-1)).xAxisValue;
+ }
+ });
+
+ setData(data);
+ }
+
+ private void setData(List dataList) {
+
+ ArrayList values = new ArrayList();
+ List colors = new ArrayList();
+
+ int green = Color.rgb(110, 190, 102);
+ int red = Color.rgb(211, 74, 88);
+
+ for (int i = 0; i < dataList.size(); i++) {
+
+ Data d = dataList.get(i);
+ BarEntry entry = new BarEntry(d.xValue, d.yValue);
+ values.add(entry);
+
+ // specific colors
+ if (d.yValue >= 0)
+ colors.add(red);
+ else
+ colors.add(green);
+ }
+
+ BarDataSet set;
+
+ if (mChart.getData() != null &&
+ mChart.getData().getDataSetCount() > 0) {
+ set = (BarDataSet)mChart.getData().getDataSetByIndex(0);
+ set.setValues(values);
+ mChart.getData().notifyDataChanged();
+ mChart.notifyDataSetChanged();
+ } else {
+ set = new BarDataSet(values, "Values");
+ set.setColors(colors);
+ set.setValueTextColors(colors);
+
+ BarData data = new BarData(set);
+ data.setValueTextSize(13f);
+ data.setValueTypeface(mTf);
+ data.setValueFormatter(new ValueFormatter());
+ data.setBarWidth(0.8f);
+
+ mChart.setData(data);
+ mChart.invalidate();
+ }
+ }
+
+ /**
+ * Demo class representing data.
+ */
+ private class Data {
+
+ public String xAxisValue;
+ public float yValue;
+ public float xValue;
+
+ public Data(float xValue, float yValue, String xAxisValue) {
+ this.xAxisValue = xAxisValue;
+ this.yValue = yValue;
+ this.xValue = xValue;
+ }
+ }
+
+ private class ValueFormatter implements IValueFormatter
+ {
+
+ private DecimalFormat mFormat;
+
+ public ValueFormatter() {
+ mFormat = new DecimalFormat("######.0");
+ }
+
+ @Override
+ public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
+ return mFormat.format(value);
+ }
+ }
+}
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BubbleChartActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BubbleChartActivity.java
new file mode 100644
index 0000000000..0ecc1e9c93
--- /dev/null
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/BubbleChartActivity.java
@@ -0,0 +1,252 @@
+
+package com.xxmassdeveloper.mpchartexample;
+
+import android.graphics.Color;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.WindowManager;
+import android.widget.SeekBar;
+import android.widget.SeekBar.OnSeekBarChangeListener;
+import android.widget.TextView;
+
+import com.github.mikephil.charting.charts.BubbleChart;
+import com.github.mikephil.charting.components.Legend;
+import com.github.mikephil.charting.components.Legend.LegendPosition;
+import com.github.mikephil.charting.components.XAxis;
+import com.github.mikephil.charting.components.YAxis;
+import com.github.mikephil.charting.data.BubbleData;
+import com.github.mikephil.charting.data.BubbleDataSet;
+import com.github.mikephil.charting.data.BubbleEntry;
+import com.github.mikephil.charting.data.Entry;
+import com.github.mikephil.charting.highlight.Highlight;
+import com.github.mikephil.charting.interfaces.datasets.IBubbleDataSet;
+import com.github.mikephil.charting.interfaces.datasets.IDataSet;
+import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
+import com.github.mikephil.charting.utils.ColorTemplate;
+import com.github.mikephil.charting.utils.MPPointF;
+import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
+
+import java.util.ArrayList;
+
+public class BubbleChartActivity extends DemoBase implements OnSeekBarChangeListener,
+ OnChartValueSelectedListener {
+
+ private BubbleChart mChart;
+ private SeekBar mSeekBarX, mSeekBarY;
+ private TextView tvX, tvY;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
+ WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ setContentView(R.layout.activity_bubblechart);
+
+ tvX = (TextView) findViewById(R.id.tvXMax);
+ tvY = (TextView) findViewById(R.id.tvYMax);
+
+ mSeekBarX = (SeekBar) findViewById(R.id.seekBar1);
+ mSeekBarX.setOnSeekBarChangeListener(this);
+
+ mSeekBarY = (SeekBar) findViewById(R.id.seekBar2);
+ mSeekBarY.setOnSeekBarChangeListener(this);
+
+ mChart = (BubbleChart) findViewById(R.id.chart1);
+ mChart.getDescription().setEnabled(false);
+
+ mChart.setOnChartValueSelectedListener(this);
+
+ mChart.setDrawGridBackground(false);
+
+ mChart.setTouchEnabled(true);
+
+ // enable scaling and dragging
+ mChart.setDragEnabled(true);
+ mChart.setScaleEnabled(true);
+
+ mChart.setMaxVisibleValueCount(200);
+ mChart.setPinchZoom(true);
+
+ mSeekBarX.setProgress(10);
+ mSeekBarY.setProgress(50);
+
+ Legend l = mChart.getLegend();
+ l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
+ l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
+ l.setOrientation(Legend.LegendOrientation.VERTICAL);
+ l.setDrawInside(false);
+ l.setTypeface(mTfLight);
+
+ YAxis yl = mChart.getAxisLeft();
+ yl.setTypeface(mTfLight);
+ yl.setSpaceTop(30f);
+ yl.setSpaceBottom(30f);
+ yl.setDrawZeroLine(false);
+
+ mChart.getAxisRight().setEnabled(false);
+
+ XAxis xl = mChart.getXAxis();
+ xl.setPosition(XAxis.XAxisPosition.BOTTOM);
+ xl.setTypeface(mTfLight);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.bubble, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+
+ switch (item.getItemId()) {
+ case R.id.actionToggleValues: {
+ for (IDataSet set : mChart.getData().getDataSets())
+ set.setDrawValues(!set.isDrawValuesEnabled());
+
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionToggleIcons: {
+ for (IDataSet set : mChart.getData().getDataSets())
+ set.setDrawIcons(!set.isDrawIconsEnabled());
+
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionToggleHighlight: {
+ if(mChart.getData() != null) {
+ mChart.getData().setHighlightEnabled(!mChart.getData().isHighlightEnabled());
+ mChart.invalidate();
+ }
+ break;
+ }
+ case R.id.actionTogglePinch: {
+ if (mChart.isPinchZoomEnabled())
+ mChart.setPinchZoom(false);
+ else
+ mChart.setPinchZoom(true);
+
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionToggleAutoScaleMinMax: {
+ mChart.setAutoScaleMinMaxEnabled(!mChart.isAutoScaleMinMaxEnabled());
+ mChart.notifyDataSetChanged();
+ break;
+ }
+ case R.id.actionSave: {
+ mChart.saveToPath("title" + System.currentTimeMillis(), "");
+ break;
+ }
+ case R.id.animateX: {
+ mChart.animateX(3000);
+ break;
+ }
+ case R.id.animateY: {
+ mChart.animateY(3000);
+ break;
+ }
+ case R.id.animateXY: {
+
+ mChart.animateXY(3000, 3000);
+ break;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+
+ int count = mSeekBarX.getProgress();
+ int range = mSeekBarY.getProgress();
+
+ tvX.setText("" + count);
+ tvY.setText("" + range);
+
+ ArrayList yVals1 = new ArrayList();
+ ArrayList yVals2 = new ArrayList();
+ ArrayList yVals3 = new ArrayList();
+
+ for (int i = 0; i < count; i++) {
+ float val = (float) (Math.random() * range);
+ float size = (float) (Math.random() * range);
+
+ yVals1.add(new BubbleEntry(i, val, size, getResources().getDrawable(R.drawable.star)));
+ }
+
+ for (int i = 0; i < count; i++) {
+ float val = (float) (Math.random() * range);
+ float size = (float) (Math.random() * range);
+
+ yVals2.add(new BubbleEntry(i, val, size, getResources().getDrawable(R.drawable.star)));
+ }
+
+ for (int i = 0; i < count; i++) {
+ float val = (float) (Math.random() * range);
+ float size = (float) (Math.random() * range);
+
+ yVals3.add(new BubbleEntry(i, val, size));
+ }
+
+ // create a dataset and give it a type
+ BubbleDataSet set1 = new BubbleDataSet(yVals1, "DS 1");
+ set1.setDrawIcons(false);
+ set1.setColor(ColorTemplate.COLORFUL_COLORS[0], 130);
+ set1.setDrawValues(true);
+
+ BubbleDataSet set2 = new BubbleDataSet(yVals2, "DS 2");
+ set2.setDrawIcons(false);
+ set2.setIconsOffset(new MPPointF(0, 15));
+ set2.setColor(ColorTemplate.COLORFUL_COLORS[1], 130);
+ set2.setDrawValues(true);
+
+ BubbleDataSet set3 = new BubbleDataSet(yVals3, "DS 3");
+ set3.setColor(ColorTemplate.COLORFUL_COLORS[2], 130);
+ set3.setDrawValues(true);
+
+ ArrayList dataSets = new ArrayList();
+ dataSets.add(set1); // add the datasets
+ dataSets.add(set2);
+ dataSets.add(set3);
+
+ // create a data object with the datasets
+ BubbleData data = new BubbleData(dataSets);
+ data.setDrawValues(false);
+ data.setValueTypeface(mTfLight);
+ data.setValueTextSize(8f);
+ data.setValueTextColor(Color.WHITE);
+ data.setHighlightCircleWidth(1.5f);
+
+ mChart.setData(data);
+ mChart.invalidate();
+ }
+
+ @Override
+ public void onValueSelected(Entry e, Highlight h) {
+ Log.i("VAL SELECTED",
+ "Value: " + e.getY() + ", xIndex: " + e.getX()
+ + ", DataSet index: " + h.getDataSetIndex());
+ }
+
+ @Override
+ public void onNothingSelected() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void onStartTrackingTouch(SeekBar seekBar) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void onStopTrackingTouch(SeekBar seekBar) {
+ // TODO Auto-generated method stub
+
+ }
+}
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/CandleStickChartActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/CandleStickChartActivity.java
index 420a04d107..bd8dde108f 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/CandleStickChartActivity.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/CandleStickChartActivity.java
@@ -2,6 +2,7 @@
package com.xxmassdeveloper.mpchartexample;
import android.graphics.Color;
+import android.graphics.Paint;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
@@ -19,6 +20,8 @@
import com.github.mikephil.charting.data.CandleData;
import com.github.mikephil.charting.data.CandleDataSet;
import com.github.mikephil.charting.data.CandleEntry;
+import com.github.mikephil.charting.interfaces.datasets.ICandleDataSet;
+import com.github.mikephil.charting.interfaces.datasets.IDataSet;
import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
import java.util.ArrayList;
@@ -46,8 +49,9 @@ protected void onCreate(Bundle savedInstanceState) {
mSeekBarY.setOnSeekBarChangeListener(this);
mChart = (CandleStickChart) findViewById(R.id.chart1);
+ mChart.setBackgroundColor(Color.WHITE);
- mChart.setDescription("");
+ mChart.getDescription().setEnabled(false);
// if more than 60 entries are displayed in the chart, no values will be
// drawn
@@ -60,32 +64,23 @@ protected void onCreate(Bundle savedInstanceState) {
XAxis xAxis = mChart.getXAxis();
xAxis.setPosition(XAxisPosition.BOTTOM);
- xAxis.setSpaceBetweenLabels(2);
+ xAxis.setDrawGridLines(false);
YAxis leftAxis = mChart.getAxisLeft();
// leftAxis.setEnabled(false);
- leftAxis.setLabelCount(7);
+ leftAxis.setLabelCount(7, false);
leftAxis.setDrawGridLines(false);
leftAxis.setDrawAxisLine(false);
- leftAxis.setStartAtZero(true);
YAxis rightAxis = mChart.getAxisRight();
rightAxis.setEnabled(false);
// rightAxis.setStartAtZero(false);
// setting data
- mSeekBarX.setProgress(15);
+ mSeekBarX.setProgress(40);
mSeekBarY.setProgress(100);
mChart.getLegend().setEnabled(false);
-
- // Legend l = mChart.getLegend();
- // l.setPosition(LegendPosition.BELOW_CHART_CENTER);
- // l.setFormSize(8f);
- // l.setFormToTextSpace(4f);
- // l.setXEntrySpace(6f);
-
- // mChart.setDrawLegend(false);
}
@Override
@@ -98,14 +93,27 @@ public boolean onCreateOptionsMenu(Menu menu) {
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
- case R.id.actionToggleHighlight: {
- if (mChart.isHighlightEnabled())
- mChart.setHighlightEnabled(false);
- else
- mChart.setHighlightEnabled(true);
+ case R.id.actionToggleValues: {
+ for (IDataSet set : mChart.getData().getDataSets())
+ set.setDrawValues(!set.isDrawValuesEnabled());
+
mChart.invalidate();
break;
}
+ case R.id.actionToggleIcons: {
+ for (IDataSet set : mChart.getData().getDataSets())
+ set.setDrawIcons(!set.isDrawIconsEnabled());
+
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionToggleHighlight: {
+ if(mChart.getData() != null) {
+ mChart.getData().setHighlightEnabled(!mChart.getData().isHighlightEnabled());
+ mChart.invalidate();
+ }
+ break;
+ }
case R.id.actionTogglePinch: {
if (mChart.isPinchZoomEnabled())
mChart.setPinchZoom(false);
@@ -115,19 +123,15 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.invalidate();
break;
}
- case R.id.actionToggleStartzero: {
- mChart.getAxisLeft().setStartAtZero(!mChart.getAxisLeft().isStartAtZeroEnabled());
- mChart.getAxisRight().setStartAtZero(!mChart.getAxisRight().isStartAtZeroEnabled());
- mChart.invalidate();
+ case R.id.actionToggleAutoScaleMinMax: {
+ mChart.setAutoScaleMinMaxEnabled(!mChart.isAutoScaleMinMaxEnabled());
+ mChart.notifyDataSetChanged();
break;
}
- case R.id.actionToggleAdjustXLegend: {
- XAxis xAxis = mChart.getXAxis();
-
- if (xAxis.isAdjustXLabelsEnabled())
- xAxis.setAdjustXLabels(false);
- else
- xAxis.setAdjustXLabels(true);
+ case R.id.actionToggleMakeShadowSameColorAsCandle: {
+ for (ICandleDataSet set : mChart.getData().getDataSets()) {
+ //TODO: set.setShadowColorSameAsCandle(!set.getShadowColorSameAsCandle());
+ }
mChart.invalidate();
break;
@@ -161,10 +165,12 @@ public boolean onOptionsItemSelected(MenuItem item) {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- int prog = (mSeekBarX.getProgress() + 1) * 2;
+ int prog = (mSeekBarX.getProgress() + 1);
tvX.setText("" + prog);
tvY.setText("" + (mSeekBarY.getProgress()));
+
+ mChart.resetTracking();
ArrayList yVals1 = new ArrayList();
@@ -180,20 +186,30 @@ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
boolean even = i % 2 == 0;
- yVals1.add(new CandleEntry(i, val + high, val - low, even ? val + open : val - open,
- even ? val - close : val + close));
- }
-
- ArrayList xVals = new ArrayList();
- for (int i = 0; i < prog; i++) {
- xVals.add("" + (1990 + i));
+ yVals1.add(new CandleEntry(
+ i, val + high,
+ val - low,
+ even ? val + open : val - open,
+ even ? val - close : val + close,
+ getResources().getDrawable(R.drawable.star)
+ ));
}
CandleDataSet set1 = new CandleDataSet(yVals1, "Data Set");
- set1.setAxisDependency(AxisDependency.LEFT);
- set1.setColor(Color.rgb(80, 80, 80));
- CandleData data = new CandleData(xVals, set1);
+ set1.setDrawIcons(false);
+ set1.setAxisDependency(AxisDependency.LEFT);
+// set1.setColor(Color.rgb(80, 80, 80));
+ set1.setShadowColor(Color.DKGRAY);
+ set1.setShadowWidth(0.7f);
+ set1.setDecreasingColor(Color.RED);
+ set1.setDecreasingPaintStyle(Paint.Style.FILL);
+ set1.setIncreasingColor(Color.rgb(122, 242, 84));
+ set1.setIncreasingPaintStyle(Paint.Style.STROKE);
+ set1.setNeutralColor(Color.BLUE);
+ //set1.setHighlightLineWidth(1f);
+
+ CandleData data = new CandleData(set1);
mChart.setData(data);
mChart.invalidate();
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/CombinedChartActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/CombinedChartActivity.java
index 44e06e7bf8..fadfbf175f 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/CombinedChartActivity.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/CombinedChartActivity.java
@@ -8,22 +8,30 @@
import android.view.WindowManager;
import com.github.mikephil.charting.charts.CombinedChart;
+import com.github.mikephil.charting.charts.CombinedChart.DrawOrder;
+import com.github.mikephil.charting.components.AxisBase;
+import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.XAxis.XAxisPosition;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.data.BubbleData;
+import com.github.mikephil.charting.data.BubbleDataSet;
+import com.github.mikephil.charting.data.BubbleEntry;
import com.github.mikephil.charting.data.CandleData;
import com.github.mikephil.charting.data.CandleDataSet;
import com.github.mikephil.charting.data.CandleEntry;
import com.github.mikephil.charting.data.CombinedData;
-import com.github.mikephil.charting.data.DataSet;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.data.ScatterData;
import com.github.mikephil.charting.data.ScatterDataSet;
+import com.github.mikephil.charting.formatter.IAxisValueFormatter;
+import com.github.mikephil.charting.interfaces.datasets.IDataSet;
+import com.github.mikephil.charting.utils.ColorTemplate;
import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
import java.util.ArrayList;
@@ -41,24 +49,53 @@ protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_combined);
mChart = (CombinedChart) findViewById(R.id.chart1);
- mChart.setDescription("");
+ mChart.getDescription().setEnabled(false);
+ mChart.setBackgroundColor(Color.WHITE);
mChart.setDrawGridBackground(false);
+ mChart.setDrawBarShadow(false);
+ mChart.setHighlightFullBarEnabled(false);
+
+ // draw bars behind lines
+ mChart.setDrawOrder(new DrawOrder[]{
+ DrawOrder.BAR, DrawOrder.BUBBLE, DrawOrder.CANDLE, DrawOrder.LINE, DrawOrder.SCATTER
+ });
+
+ Legend l = mChart.getLegend();
+ l.setWordWrapEnabled(true);
+ l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
+ l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
+ l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
+ l.setDrawInside(false);
YAxis rightAxis = mChart.getAxisRight();
rightAxis.setDrawGridLines(false);
+ rightAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)
YAxis leftAxis = mChart.getAxisLeft();
leftAxis.setDrawGridLines(false);
+ leftAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)
XAxis xAxis = mChart.getXAxis();
xAxis.setPosition(XAxisPosition.BOTH_SIDED);
+ xAxis.setAxisMinimum(0f);
+ xAxis.setGranularity(1f);
+ xAxis.setValueFormatter(new IAxisValueFormatter() {
+ @Override
+ public String getFormattedValue(float value, AxisBase axis) {
+ return mMonths[(int) value % mMonths.length];
+ }
+ });
- CombinedData data = new CombinedData(mMonths);
+ CombinedData data = new CombinedData();
data.setData(generateLineData());
data.setData(generateBarData());
-// data.setData(generateScatterData());
-// data.setData(generateCandleData());
+ data.setData(generateBubbleData());
+ data.setData(generateScatterData());
+ data.setData(generateCandleData());
+ data.setValueTypeface(mTfLight);
+
+ xAxis.setAxisMaximum(data.getXMax() + 0.25f);
mChart.setData(data);
mChart.invalidate();
@@ -71,21 +108,20 @@ private LineData generateLineData() {
ArrayList entries = new ArrayList();
for (int index = 0; index < itemcount; index++)
- entries.add(new Entry(getRandom(15, 10), index));
+ entries.add(new Entry(index + 0.5f, getRandom(15, 5)));
LineDataSet set = new LineDataSet(entries, "Line DataSet");
set.setColor(Color.rgb(240, 238, 70));
set.setLineWidth(2.5f);
set.setCircleColor(Color.rgb(240, 238, 70));
- set.setCircleSize(5f);
+ set.setCircleRadius(5f);
set.setFillColor(Color.rgb(240, 238, 70));
- set.setDrawCubic(true);
+ set.setMode(LineDataSet.Mode.CUBIC_BEZIER);
set.setDrawValues(true);
set.setValueTextSize(10f);
set.setValueTextColor(Color.rgb(240, 238, 70));
set.setAxisDependency(YAxis.AxisDependency.LEFT);
-
d.addDataSet(set);
return d;
@@ -93,35 +129,54 @@ private LineData generateLineData() {
private BarData generateBarData() {
- BarData d = new BarData();
+ ArrayList entries1 = new ArrayList();
+ ArrayList entries2 = new ArrayList();
- ArrayList entries = new ArrayList();
+ for (int index = 0; index < itemcount; index++) {
+ entries1.add(new BarEntry(0, getRandom(25, 25)));
- for (int index = 0; index < itemcount; index++)
- entries.add(new BarEntry(getRandom(15, 30), index));
+ // stacked
+ entries2.add(new BarEntry(0, new float[]{getRandom(13, 12), getRandom(13, 12)}));
+ }
- BarDataSet set = new BarDataSet(entries, "Bar DataSet");
- set.setColor(Color.rgb(60, 220, 78));
- set.setValueTextColor(Color.rgb(60, 220, 78));
- set.setValueTextSize(10f);
- d.addDataSet(set);
+ BarDataSet set1 = new BarDataSet(entries1, "Bar 1");
+ set1.setColor(Color.rgb(60, 220, 78));
+ set1.setValueTextColor(Color.rgb(60, 220, 78));
+ set1.setValueTextSize(10f);
+ set1.setAxisDependency(YAxis.AxisDependency.LEFT);
- set.setAxisDependency(YAxis.AxisDependency.LEFT);
+ BarDataSet set2 = new BarDataSet(entries2, "");
+ set2.setStackLabels(new String[]{"Stack 1", "Stack 2"});
+ set2.setColors(new int[]{Color.rgb(61, 165, 255), Color.rgb(23, 197, 255)});
+ set2.setValueTextColor(Color.rgb(61, 165, 255));
+ set2.setValueTextSize(10f);
+ set2.setAxisDependency(YAxis.AxisDependency.LEFT);
+
+ float groupSpace = 0.06f;
+ float barSpace = 0.02f; // x2 dataset
+ float barWidth = 0.45f; // x2 dataset
+ // (0.45 + 0.02) * 2 + 0.06 = 1.00 -> interval per "group"
+
+ BarData d = new BarData(set1, set2);
+ d.setBarWidth(barWidth);
+
+ // make this BarData object grouped
+ d.groupBars(0, groupSpace, barSpace); // start at x = 0
return d;
}
- private ScatterData generateScatterData() {
+ protected ScatterData generateScatterData() {
ScatterData d = new ScatterData();
ArrayList entries = new ArrayList();
- for (int index = 0; index < itemcount; index++)
- entries.add(new Entry(getRandom(20, 30), index));
+ for (float index = 0; index < itemcount; index += 0.5f)
+ entries.add(new Entry(index + 0.25f, getRandom(10, 55)));
ScatterDataSet set = new ScatterDataSet(entries, "Scatter DataSet");
- set.setColor(Color.GREEN);
+ set.setColors(ColorTemplate.MATERIAL_COLORS);
set.setScatterShapeSize(7.5f);
set.setDrawValues(false);
set.setValueTextSize(10f);
@@ -130,18 +185,19 @@ private ScatterData generateScatterData() {
return d;
}
- private CandleData generateCandleData() {
+ protected CandleData generateCandleData() {
CandleData d = new CandleData();
ArrayList entries = new ArrayList();
- for (int index = 0; index < itemcount; index++)
- entries.add(new CandleEntry(index, 20f, 10f, 13f, 17f));
+ for (int index = 0; index < itemcount; index += 2)
+ entries.add(new CandleEntry(index + 1f, 90, 70, 85, 75f));
CandleDataSet set = new CandleDataSet(entries, "Candle DataSet");
- set.setColor(Color.rgb(80, 80, 80));
- set.setBodySpace(0.3f);
+ set.setDecreasingColor(Color.rgb(142, 150, 175));
+ set.setShadowColor(Color.DKGRAY);
+ set.setBarSpace(0.3f);
set.setValueTextSize(10f);
set.setDrawValues(false);
d.addDataSet(set);
@@ -149,38 +205,66 @@ private CandleData generateCandleData() {
return d;
}
- private float getRandom(float range, float startsfrom) {
- return (float) (Math.random() * range) + startsfrom;
- }
+ protected BubbleData generateBubbleData() {
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.combined, menu);
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.actionToggleLineValues: {
- for (DataSet> set : mChart.getData().getDataSets()) {
- if(set instanceof LineDataSet)
- set.setDrawValues(!set.isDrawValuesEnabled());
- }
+ BubbleData bd = new BubbleData();
- mChart.invalidate();
- break;
- }
- case R.id.actionToggleBarValues: {
- for (DataSet> set : mChart.getData().getDataSets()) {
- if(set instanceof BarDataSet)
- set.setDrawValues(!set.isDrawValuesEnabled());
+ ArrayList entries = new ArrayList();
+
+ for (int index = 0; index < itemcount; index++) {
+ float y = getRandom(10, 105);
+ float size = getRandom(100, 105);
+ entries.add(new BubbleEntry(index + 0.5f, y, size));
}
- mChart.invalidate();
- break;
- }
+ BubbleDataSet set = new BubbleDataSet(entries, "Bubble DataSet");
+ set.setColors(ColorTemplate.VORDIPLOM_COLORS);
+ set.setValueTextSize(10f);
+ set.setValueTextColor(Color.WHITE);
+ set.setHighlightCircleWidth(1.5f);
+ set.setDrawValues(true);
+ bd.addDataSet(set);
+
+ return bd;
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.combined, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.actionToggleLineValues: {
+ for (IDataSet set : mChart.getData().getDataSets()) {
+ if (set instanceof LineDataSet)
+ set.setDrawValues(!set.isDrawValuesEnabled());
+ }
+
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionToggleBarValues: {
+ for (IDataSet set : mChart.getData().getDataSets()) {
+ if (set instanceof BarDataSet)
+ set.setDrawValues(!set.isDrawValuesEnabled());
+ }
+
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionRemoveDataSet: {
+
+ int rnd = (int) getRandom(mChart.getData().getDataSetCount(), 0);
+ mChart.getData().removeDataSet(mChart.getData().getDataSetByIndex(rnd));
+ mChart.getData().notifyDataChanged();
+ mChart.notifyDataSetChanged();
+ mChart.invalidate();
+ break;
+ }
+ }
+ return true;
}
- return true;
- }
}
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/CubicLineChartActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/CubicLineChartActivity.java
index 026d45512d..cb979e80e9 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/CubicLineChartActivity.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/CubicLineChartActivity.java
@@ -2,7 +2,6 @@
package com.xxmassdeveloper.mpchartexample;
import android.graphics.Color;
-import android.graphics.Typeface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
@@ -15,24 +14,23 @@
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
-import com.github.mikephil.charting.data.DataSet;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
-import com.github.mikephil.charting.data.filter.Approximator;
-import com.github.mikephil.charting.data.filter.Approximator.ApproximatorType;
-import com.github.mikephil.charting.utils.ColorTemplate;
+import com.github.mikephil.charting.formatter.IFillFormatter;
+import com.github.mikephil.charting.interfaces.dataprovider.LineDataProvider;
+import com.github.mikephil.charting.interfaces.datasets.IDataSet;
+import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
import java.util.ArrayList;
+import java.util.List;
public class CubicLineChartActivity extends DemoBase implements OnSeekBarChangeListener {
private LineChart mChart;
private SeekBar mSeekBarX, mSeekBarY;
private TextView tvX, tvY;
-
- private Typeface tf;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -54,13 +52,11 @@ protected void onCreate(Bundle savedInstanceState) {
mSeekBarX.setOnSeekBarChangeListener(this);
mChart = (LineChart) findViewById(R.id.chart1);
- // if enabled, the chart will always start at zero on the y-axis
+ mChart.setViewPortOffsets(0, 0, 0, 0);
+ mChart.setBackgroundColor(Color.rgb(104, 241, 175));
// no description text
- mChart.setDescription("");
-
- // enable value highlighting
- mChart.setHighlightEnabled(true);
+ mChart.getDescription().setEnabled(false);
// enable touch gestures
mChart.setTouchEnabled(true);
@@ -73,15 +69,18 @@ protected void onCreate(Bundle savedInstanceState) {
mChart.setPinchZoom(false);
mChart.setDrawGridBackground(false);
-
- tf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");
+ mChart.setMaxHighlightDistance(300);
XAxis x = mChart.getXAxis();
- x.setTypeface(tf);
+ x.setEnabled(false);
YAxis y = mChart.getAxisLeft();
- y.setTypeface(tf);
- y.setLabelCount(5);
+ y.setTypeface(mTfLight);
+ y.setLabelCount(6, false);
+ y.setTextColor(Color.WHITE);
+ y.setPosition(YAxis.YAxisLabelPosition.INSIDE_CHART);
+ y.setDrawGridLines(false);
+ y.setAxisLineColor(Color.WHITE);
mChart.getAxisRight().setEnabled(false);
@@ -107,26 +106,28 @@ public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.actionToggleValues: {
- for (DataSet> set : mChart.getData().getDataSets())
+ for (IDataSet set : mChart.getData().getDataSets())
set.setDrawValues(!set.isDrawValuesEnabled());
mChart.invalidate();
break;
}
case R.id.actionToggleHighlight: {
- if (mChart.isHighlightEnabled())
- mChart.setHighlightEnabled(false);
- else
- mChart.setHighlightEnabled(true);
- mChart.invalidate();
+ if(mChart.getData() != null) {
+ mChart.getData().setHighlightEnabled(!mChart.getData().isHighlightEnabled());
+ mChart.invalidate();
+ }
break;
}
case R.id.actionToggleFilled: {
- ArrayList sets = (ArrayList) mChart.getData()
+ List sets = mChart.getData()
.getDataSets();
- for (LineDataSet set : sets) {
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
+
if (set.isDrawFilledEnabled())
set.setDrawFilled(false);
else
@@ -136,10 +137,12 @@ public boolean onOptionsItemSelected(MenuItem item) {
break;
}
case R.id.actionToggleCircles: {
- ArrayList sets = (ArrayList) mChart.getData()
+ List sets = mChart.getData()
.getDataSets();
- for (LineDataSet set : sets) {
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
if (set.isDrawCirclesEnabled())
set.setDrawCircles(false);
else
@@ -149,21 +152,44 @@ public boolean onOptionsItemSelected(MenuItem item) {
break;
}
case R.id.actionToggleCubic: {
- ArrayList sets = (ArrayList) mChart.getData()
+ List sets = mChart.getData()
.getDataSets();
- for (LineDataSet set : sets) {
- if (set.isDrawCubicEnabled())
- set.setDrawCubic(false);
- else
- set.setDrawCubic(true);
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
+ set.setMode(set.getMode() == LineDataSet.Mode.CUBIC_BEZIER
+ ? LineDataSet.Mode.LINEAR
+ : LineDataSet.Mode.CUBIC_BEZIER);
+ }
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionToggleStepped: {
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
+ set.setMode(set.getMode() == LineDataSet.Mode.STEPPED
+ ? LineDataSet.Mode.LINEAR
+ : LineDataSet.Mode.STEPPED);
}
mChart.invalidate();
break;
}
- case R.id.actionToggleStartzero: {
- mChart.getAxisLeft().setStartAtZero(!mChart.getAxisLeft().isStartAtZeroEnabled());
- mChart.getAxisRight().setStartAtZero(!mChart.getAxisRight().isStartAtZeroEnabled());
+ case R.id.actionToggleHorizontalCubic: {
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
+ set.setMode(set.getMode() == LineDataSet.Mode.HORIZONTAL_BEZIER
+ ? LineDataSet.Mode.LINEAR
+ : LineDataSet.Mode.HORIZONTAL_BEZIER);
+ }
mChart.invalidate();
break;
}
@@ -176,6 +202,11 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.invalidate();
break;
}
+ case R.id.actionToggleAutoScaleMinMax: {
+ mChart.setAutoScaleMinMaxEnabled(!mChart.isAutoScaleMinMaxEnabled());
+ mChart.notifyDataSetChanged();
+ break;
+ }
case R.id.animateX: {
mChart.animateX(3000);
break;
@@ -188,30 +219,6 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.animateXY(3000, 3000);
break;
}
- case R.id.actionToggleAdjustXLegend: {
- XAxis xLabels = mChart.getXAxis();
-
- if (xLabels.isAdjustXLabelsEnabled())
- xLabels.setAdjustXLabels(false);
- else
- xLabels.setAdjustXLabels(true);
-
- mChart.invalidate();
- break;
- }
- case R.id.actionToggleFilter: {
-
- // the angle of filtering is 35°
- Approximator a = new Approximator(ApproximatorType.DOUGLAS_PEUCKER, 35);
-
- if (!mChart.isFilteringEnabled()) {
- mChart.enableFiltering(a);
- } else {
- mChart.disableFiltering();
- }
- mChart.invalidate();
- break;
- }
case R.id.actionSave: {
if (mChart.saveToPath("title" + System.currentTimeMillis(), "")) {
Toast.makeText(getApplicationContext(), "Saving SUCCESSFUL!",
@@ -253,40 +260,55 @@ public void onStopTrackingTouch(SeekBar seekBar) {
private void setData(int count, float range) {
- ArrayList xVals = new ArrayList();
- for (int i = 0; i < count; i++) {
- xVals.add((1990 +i) + "");
- }
-
- ArrayList vals1 = new ArrayList();
+ ArrayList yVals = new ArrayList();
for (int i = 0; i < count; i++) {
float mult = (range + 1);
float val = (float) (Math.random() * mult) + 20;// + (float)
// ((mult *
// 0.1) / 10);
- vals1.add(new Entry(val, i));
+ yVals.add(new Entry(i, val));
+ }
+
+ LineDataSet set1;
+
+ if (mChart.getData() != null &&
+ mChart.getData().getDataSetCount() > 0) {
+ set1 = (LineDataSet)mChart.getData().getDataSetByIndex(0);
+ set1.setValues(yVals);
+ mChart.getData().notifyDataChanged();
+ mChart.notifyDataSetChanged();
+ } else {
+ // create a dataset and give it a type
+ set1 = new LineDataSet(yVals, "DataSet 1");
+
+ set1.setMode(LineDataSet.Mode.CUBIC_BEZIER);
+ set1.setCubicIntensity(0.2f);
+ //set1.setDrawFilled(true);
+ set1.setDrawCircles(false);
+ set1.setLineWidth(1.8f);
+ set1.setCircleRadius(4f);
+ set1.setCircleColor(Color.WHITE);
+ set1.setHighLightColor(Color.rgb(244, 117, 117));
+ set1.setColor(Color.WHITE);
+ set1.setFillColor(Color.WHITE);
+ set1.setFillAlpha(100);
+ set1.setDrawHorizontalHighlightIndicator(false);
+ set1.setFillFormatter(new IFillFormatter() {
+ @Override
+ public float getFillLinePosition(ILineDataSet dataSet, LineDataProvider dataProvider) {
+ return -10;
+ }
+ });
+
+ // create a data object with the datasets
+ LineData data = new LineData(set1);
+ data.setValueTypeface(mTfLight);
+ data.setValueTextSize(9f);
+ data.setDrawValues(false);
+
+ // set data
+ mChart.setData(data);
}
-
- // create a dataset and give it a type
- LineDataSet set1 = new LineDataSet(vals1, "DataSet 1");
- set1.setDrawCubic(true);
- set1.setCubicIntensity(0.2f);
- //set1.setDrawFilled(true);
- set1.setDrawCircles(false);
- set1.setLineWidth(2f);
- set1.setCircleSize(5f);
- set1.setHighLightColor(Color.rgb(244, 117, 117));
- set1.setColor(Color.rgb(104, 241, 175));
- set1.setFillColor(ColorTemplate.getHoloBlue());
-
- // create a data object with the datasets
- LineData data = new LineData(xVals, set1);
- data.setValueTypeface(tf);
- data.setValueTextSize(9f);
- data.setDrawValues(false);
-
- // set data
- mChart.setData(data);
}
}
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/DrawChartActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/DrawChartActivity.java
index 35b8215648..970ba12909 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/DrawChartActivity.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/DrawChartActivity.java
@@ -16,12 +16,14 @@
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
+import com.github.mikephil.charting.highlight.Highlight;
+import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
import com.github.mikephil.charting.listener.OnDrawListener;
-import com.github.mikephil.charting.utils.Highlight;
import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
import java.util.ArrayList;
+import java.util.List;
/**
* This Activity demonstrates drawing into the Chart with the finger. Both line,
@@ -47,14 +49,6 @@ protected void onCreate(Bundle savedInstanceState) {
mChart.setOnChartValueSelectedListener(this);
mChart.setOnDrawListener(this);
- // enable drawing with the finger
- // mChart.setDrawingEnabled(true);
-
- // mChart.setLineWidth(5f);
- // mChart.setCircleSize(5f);
-
- mChart.setHighlightEnabled(true);
-
// if disabled, drawn datasets with the finger will not be automatically
// finished
// mChart.setAutoFinish(true);
@@ -80,23 +74,16 @@ protected void onCreate(Bundle savedInstanceState) {
}
private void initWithDummyData() {
- ArrayList xVals = new ArrayList();
- for (int i = 0; i < 24; i++) {
- xVals.add((i) + ":00");
- }
ArrayList yVals = new ArrayList();
// create a dataset and give it a type (0)
LineDataSet set1 = new LineDataSet(yVals, "DataSet");
set1.setLineWidth(3f);
- set1.setCircleSize(5f);
-
- ArrayList dataSets = new ArrayList();
- dataSets.add(set1); // add the datasets
+ set1.setCircleRadius(5f);
// create a data object with the datasets
- LineData data = new LineData(xVals, dataSets);
+ LineData data = new LineData(set1);
mChart.setData(data);
}
@@ -112,35 +99,23 @@ public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.actionToggleValues: {
- for (DataSet> set : mChart.getData().getDataSets())
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
set.setDrawValues(!set.isDrawValuesEnabled());
+ }
mChart.invalidate();
break;
}
case R.id.actionToggleHighlight: {
- if (mChart.isHighlightEnabled())
- mChart.setHighlightEnabled(false);
- else
- mChart.setHighlightEnabled(true);
- mChart.invalidate();
- break;
- }
- case R.id.actionToggleStartzero: {
- mChart.getAxisLeft().setStartAtZero(!mChart.getAxisLeft().isStartAtZeroEnabled());
- mChart.getAxisRight().setStartAtZero(!mChart.getAxisRight().isStartAtZeroEnabled());
- mChart.invalidate();
- break;
- }
- case R.id.actionToggleAdjustXLegend: {
- XAxis xLabels = mChart.getXAxis();
-
- if (xLabels.isAdjustXLabelsEnabled())
- xLabels.setAdjustXLabels(false);
- else
- xLabels.setAdjustXLabels(true);
-
- mChart.invalidate();
+ if(mChart.getData() != null) {
+ mChart.getData().setHighlightEnabled(!mChart.getData().isHighlightEnabled());
+ mChart.invalidate();
+ }
break;
}
case R.id.actionTogglePinch: {
@@ -152,6 +127,11 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.invalidate();
break;
}
+ case R.id.actionToggleAutoScaleMinMax: {
+ mChart.setAutoScaleMinMaxEnabled(!mChart.isAutoScaleMinMaxEnabled());
+ mChart.notifyDataSetChanged();
+ break;
+ }
case R.id.actionSave: {
// mChart.saveToGallery("title"+System.currentTimeMillis());
mChart.saveToPath("title" + System.currentTimeMillis(), "");
@@ -162,10 +142,10 @@ public boolean onOptionsItemSelected(MenuItem item) {
}
@Override
- public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
+ public void onValueSelected(Entry e, Highlight h) {
Log.i("VAL SELECTED",
- "Value: " + e.getVal() + ", xIndex: " + e.getXIndex()
- + ", DataSet index: " + dataSetIndex);
+ "Value: " + e.getY() + ", xIndex: " + e.getX()
+ + ", DataSet index: " + h.getDataSetIndex());
}
@Override
@@ -180,11 +160,11 @@ public void onEntryAdded(Entry entry) {
/** callback when a DataSet has been drawn (when lifting the finger) */
@Override
- public void onDrawFinished(DataSet dataSet) {
+ public void onDrawFinished(DataSet> dataSet) {
Log.i(Chart.LOG_TAG, "DataSet drawn. " + dataSet.toSimpleString());
// prepare the legend again
- mChart.getLegendRenderer().computeLegend(mChart.getData(), mChart.getLegend());
+ mChart.getLegendRenderer().computeLegend(mChart.getData());
}
@Override
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/DynamicalAddingActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/DynamicalAddingActivity.java
index 203188bfcb..2875b89d7e 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/DynamicalAddingActivity.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/DynamicalAddingActivity.java
@@ -13,9 +13,10 @@
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
+import com.github.mikephil.charting.highlight.Highlight;
+import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
import com.github.mikephil.charting.utils.ColorTemplate;
-import com.github.mikephil.charting.utils.Highlight;
import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
import java.util.ArrayList;
@@ -34,10 +35,12 @@ protected void onCreate(Bundle savedInstanceState) {
mChart = (LineChart) findViewById(R.id.chart1);
mChart.setOnChartValueSelectedListener(this);
mChart.setDrawGridBackground(false);
- mChart.setDescription("");
-
+ mChart.getDescription().setEnabled(false);
+
// add an empty data object
mChart.setData(new LineData());
+// mChart.getXAxis().setDrawLabels(false);
+// mChart.getXAxis().setDrawGridLines(false);
mChart.invalidate();
}
@@ -47,55 +50,49 @@ protected void onCreate(Bundle savedInstanceState) {
private void addEntry() {
LineData data = mChart.getData();
-
- if(data != null) {
- LineDataSet set = data.getDataSetByIndex(0);
- // set.addEntry(...); // can be called as well
+ ILineDataSet set = data.getDataSetByIndex(0);
+ // set.addEntry(...); // can be called as well
- if (set == null) {
- set = createSet();
- data.addDataSet(set);
- }
+ if (set == null) {
+ set = createSet();
+ data.addDataSet(set);
+ }
- // add a new x-value first
- data.addXValue(set.getEntryCount() + "");
-
- // choose a random dataSet
- int randomDataSetIndex = (int) (Math.random() * data.getDataSetCount());
-
- data.addEntry(new Entry((float) (Math.random() * 10) + 50f, set.getEntryCount()), randomDataSetIndex);
+ // choose a random dataSet
+ int randomDataSetIndex = (int) (Math.random() * data.getDataSetCount());
+ float yValue = (float) (Math.random() * 10) + 50f;
- // let the chart know it's data has changed
- mChart.notifyDataSetChanged();
-
-// mChart.setVisibleXRange(6);
-// mChart.setVisibleYRange(30, AxisDependency.LEFT);
+ data.addEntry(new Entry(data.getDataSetByIndex(randomDataSetIndex).getEntryCount(), yValue), randomDataSetIndex);
+ data.notifyDataChanged();
+
+ // let the chart know it's data has changed
+ mChart.notifyDataSetChanged();
+
+ mChart.setVisibleXRangeMaximum(6);
+ //mChart.setVisibleYRangeMaximum(15, AxisDependency.LEFT);
//
// // this automatically refreshes the chart (calls invalidate())
-// mChart.moveViewTo(data.getXValCount()-7, 55f, AxisDependency.LEFT);
+ mChart.moveViewTo(data.getEntryCount() - 7, 50f, AxisDependency.LEFT);
- // redraw the chart
- mChart.invalidate();
- }
}
private void removeLastEntry() {
LineData data = mChart.getData();
-
- if(data != null) {
-
- LineDataSet set = data.getDataSetByIndex(0);
+
+ if (data != null) {
+
+ ILineDataSet set = data.getDataSetByIndex(0);
if (set != null) {
- Entry e = set.getEntryForXIndex(set.getEntryCount() - 1);
+ Entry e = set.getEntryForXValue(set.getEntryCount() - 1, Float.NaN);
data.removeEntry(e, 0);
// or remove by index
- // mData.removeEntry(xIndex, dataSetIndex);
-
+ // mData.removeEntryByXValue(xIndex, dataSetIndex);
+ data.notifyDataChanged();
mChart.notifyDataSetChanged();
mChart.invalidate();
}
@@ -105,28 +102,20 @@ private void removeLastEntry() {
private void addDataSet() {
LineData data = mChart.getData();
-
- if(data != null) {
+
+ if (data != null) {
int count = (data.getDataSetCount() + 1);
- // create 10 y-vals
ArrayList yVals = new ArrayList();
-
- if(data.getXValCount() == 0) {
- // add 10 x-entries
- for (int i = 0; i < 10; i++) {
- data.addXValue("" + (i+1));
- }
- }
- for (int i = 0; i < data.getXValCount(); i++) {
- yVals.add(new Entry((float) (Math.random() * 50f) + 50f * count, i));
+ for (int i = 0; i < data.getEntryCount(); i++) {
+ yVals.add(new Entry(i, (float) (Math.random() * 50f) + 50f * count));
}
LineDataSet set = new LineDataSet(yVals, "DataSet " + count);
set.setLineWidth(2.5f);
- set.setCircleSize(4.5f);
+ set.setCircleRadius(4.5f);
int color = mColors[count % mColors.length];
@@ -137,26 +126,27 @@ private void addDataSet() {
set.setValueTextColor(color);
data.addDataSet(set);
+ data.notifyDataChanged();
mChart.notifyDataSetChanged();
- mChart.invalidate();
+ mChart.invalidate();
}
}
private void removeDataSet() {
LineData data = mChart.getData();
-
- if(data != null) {
+
+ if (data != null) {
data.removeDataSet(data.getDataSetByIndex(data.getDataSetCount() - 1));
mChart.notifyDataSetChanged();
- mChart.invalidate();
+ mChart.invalidate();
}
}
@Override
- public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
+ public void onValueSelected(Entry e, Highlight h) {
Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show();
}
@@ -209,7 +199,7 @@ private LineDataSet createSet() {
LineDataSet set = new LineDataSet(null, "DataSet 1");
set.setLineWidth(2.5f);
- set.setCircleSize(4.5f);
+ set.setCircleRadius(4.5f);
set.setColor(Color.rgb(240, 99, 99));
set.setCircleColor(Color.rgb(240, 99, 99));
set.setHighLightColor(Color.rgb(190, 190, 190));
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/FilledLineActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/FilledLineActivity.java
new file mode 100644
index 0000000000..d824167d6b
--- /dev/null
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/FilledLineActivity.java
@@ -0,0 +1,150 @@
+
+package com.xxmassdeveloper.mpchartexample;
+
+import android.graphics.Color;
+import android.os.Bundle;
+import android.view.WindowManager;
+
+import com.github.mikephil.charting.charts.LineChart;
+import com.github.mikephil.charting.components.Legend;
+import com.github.mikephil.charting.components.XAxis;
+import com.github.mikephil.charting.components.YAxis;
+import com.github.mikephil.charting.data.Entry;
+import com.github.mikephil.charting.data.LineData;
+import com.github.mikephil.charting.data.LineDataSet;
+import com.github.mikephil.charting.formatter.IFillFormatter;
+import com.github.mikephil.charting.interfaces.dataprovider.LineDataProvider;
+import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
+import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
+
+import java.util.ArrayList;
+
+public class FilledLineActivity extends DemoBase {
+
+ private LineChart mChart;
+ private int mFillColor = Color.argb(150, 51, 181, 229);
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
+ WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ setContentView(R.layout.activity_linechart_noseekbar);
+
+ mChart = (LineChart) findViewById(R.id.chart1);
+ mChart.setBackgroundColor(Color.WHITE);
+ mChart.setGridBackgroundColor(mFillColor);
+ mChart.setDrawGridBackground(true);
+
+ mChart.setDrawBorders(true);
+
+ // no description text
+ mChart.getDescription().setEnabled(false);
+
+ // if disabled, scaling can be done on x- and y-axis separately
+ mChart.setPinchZoom(false);
+
+ Legend l = mChart.getLegend();
+ l.setEnabled(false);
+
+ XAxis xAxis = mChart.getXAxis();
+ xAxis.setEnabled(false);
+
+ YAxis leftAxis = mChart.getAxisLeft();
+ leftAxis.setAxisMaximum(900f);
+ leftAxis.setAxisMinimum(-250f);
+ leftAxis.setDrawAxisLine(false);
+ leftAxis.setDrawZeroLine(false);
+ leftAxis.setDrawGridLines(false);
+
+ mChart.getAxisRight().setEnabled(false);
+
+ // add data
+ setData(100, 60);
+
+ mChart.invalidate();
+ }
+
+ private void setData(int count, float range) {
+
+ ArrayList yVals1 = new ArrayList();
+
+ for (int i = 0; i < count; i++) {
+ float val = (float) (Math.random() * range) + 50;// + (float)
+ // ((mult *
+ // 0.1) / 10);
+ yVals1.add(new Entry(i, val));
+ }
+
+ ArrayList yVals2 = new ArrayList();
+
+ for (int i = 0; i < count; i++) {
+ float val = (float) (Math.random() * range) + 450;// + (float)
+ // ((mult *
+ // 0.1) / 10);
+ yVals2.add(new Entry(i, val));
+ }
+
+ LineDataSet set1, set2;
+
+ if (mChart.getData() != null &&
+ mChart.getData().getDataSetCount() > 0) {
+ set1 = (LineDataSet)mChart.getData().getDataSetByIndex(0);
+ set2 = (LineDataSet)mChart.getData().getDataSetByIndex(1);
+ set1.setValues(yVals1);
+ set2.setValues(yVals2);
+ mChart.getData().notifyDataChanged();
+ mChart.notifyDataSetChanged();
+ } else {
+ // create a dataset and give it a type
+ set1 = new LineDataSet(yVals1, "DataSet 1");
+
+ set1.setAxisDependency(YAxis.AxisDependency.LEFT);
+ set1.setColor(Color.rgb(255, 241, 46));
+ set1.setDrawCircles(false);
+ set1.setLineWidth(2f);
+ set1.setCircleRadius(3f);
+ set1.setFillAlpha(255);
+ set1.setDrawFilled(true);
+ set1.setFillColor(Color.WHITE);
+ set1.setHighLightColor(Color.rgb(244, 117, 117));
+ set1.setDrawCircleHole(false);
+ set1.setFillFormatter(new IFillFormatter() {
+ @Override
+ public float getFillLinePosition(ILineDataSet dataSet, LineDataProvider dataProvider) {
+ return mChart.getAxisLeft().getAxisMinimum();
+ }
+ });
+
+ // create a dataset and give it a type
+ set2 = new LineDataSet(yVals2, "DataSet 2");
+ set2.setAxisDependency(YAxis.AxisDependency.LEFT);
+ set2.setColor(Color.rgb(255, 241, 46));
+ set2.setDrawCircles(false);
+ set2.setLineWidth(2f);
+ set2.setCircleRadius(3f);
+ set2.setFillAlpha(255);
+ set2.setDrawFilled(true);
+ set2.setFillColor(Color.WHITE);
+ set2.setDrawCircleHole(false);
+ set2.setHighLightColor(Color.rgb(244, 117, 117));
+ set2.setFillFormatter(new IFillFormatter() {
+ @Override
+ public float getFillLinePosition(ILineDataSet dataSet, LineDataProvider dataProvider) {
+ return mChart.getAxisLeft().getAxisMaximum();
+ }
+ });
+
+ ArrayList dataSets = new ArrayList();
+ dataSets.add(set1); // add the datasets
+ dataSets.add(set2);
+
+ // create a data object with the datasets
+ LineData data = new LineData(dataSets);
+ data.setDrawValues(false);
+
+ // set data
+ mChart.setData(data);
+ }
+ }
+}
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/HalfPieChartActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/HalfPieChartActivity.java
new file mode 100644
index 0000000000..15da39a8f3
--- /dev/null
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/HalfPieChartActivity.java
@@ -0,0 +1,137 @@
+
+package com.xxmassdeveloper.mpchartexample;
+
+import android.graphics.Color;
+import android.graphics.Point;
+import android.graphics.Typeface;
+import android.os.Bundle;
+import android.text.SpannableString;
+import android.text.style.ForegroundColorSpan;
+import android.text.style.RelativeSizeSpan;
+import android.text.style.StyleSpan;
+import android.view.Display;
+import android.view.WindowManager;
+import android.widget.RelativeLayout;
+
+import com.github.mikephil.charting.animation.Easing;
+import com.github.mikephil.charting.charts.PieChart;
+import com.github.mikephil.charting.components.Legend;
+import com.github.mikephil.charting.components.Legend.LegendPosition;
+import com.github.mikephil.charting.data.PieData;
+import com.github.mikephil.charting.data.PieDataSet;
+import com.github.mikephil.charting.data.PieEntry;
+import com.github.mikephil.charting.formatter.PercentFormatter;
+import com.github.mikephil.charting.utils.ColorTemplate;
+import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
+
+import java.util.ArrayList;
+
+public class HalfPieChartActivity extends DemoBase {
+
+ private PieChart mChart;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
+ WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ setContentView(R.layout.activity_piechart_half);
+
+ mChart = (PieChart) findViewById(R.id.chart1);
+ mChart.setBackgroundColor(Color.WHITE);
+
+ moveOffScreen();
+
+ mChart.setUsePercentValues(true);
+ mChart.getDescription().setEnabled(false);
+
+ mChart.setCenterTextTypeface(mTfLight);
+ mChart.setCenterText(generateCenterSpannableText());
+
+ mChart.setDrawHoleEnabled(true);
+ mChart.setHoleColor(Color.WHITE);
+
+ mChart.setTransparentCircleColor(Color.WHITE);
+ mChart.setTransparentCircleAlpha(110);
+
+ mChart.setHoleRadius(58f);
+ mChart.setTransparentCircleRadius(61f);
+
+ mChart.setDrawCenterText(true);
+
+ mChart.setRotationEnabled(false);
+ mChart.setHighlightPerTapEnabled(true);
+
+ mChart.setMaxAngle(180f); // HALF CHART
+ mChart.setRotationAngle(180f);
+ mChart.setCenterTextOffset(0, -20);
+
+ setData(4, 100);
+
+ mChart.animateY(1400, Easing.EasingOption.EaseInOutQuad);
+
+ Legend l = mChart.getLegend();
+ l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
+ l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
+ l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
+ l.setDrawInside(false);
+ l.setXEntrySpace(7f);
+ l.setYEntrySpace(0f);
+ l.setYOffset(0f);
+
+ // entry label styling
+ mChart.setEntryLabelColor(Color.WHITE);
+ mChart.setEntryLabelTypeface(mTfRegular);
+ mChart.setEntryLabelTextSize(12f);
+ }
+
+ private void setData(int count, float range) {
+
+ ArrayList values = new ArrayList();
+
+ for (int i = 0; i < count; i++) {
+ values.add(new PieEntry((float) ((Math.random() * range) + range / 5), mParties[i % mParties.length]));
+ }
+
+ PieDataSet dataSet = new PieDataSet(values, "Election Results");
+ dataSet.setSliceSpace(3f);
+ dataSet.setSelectionShift(5f);
+
+ dataSet.setColors(ColorTemplate.MATERIAL_COLORS);
+ //dataSet.setSelectionShift(0f);
+
+ PieData data = new PieData(dataSet);
+ data.setValueFormatter(new PercentFormatter());
+ data.setValueTextSize(11f);
+ data.setValueTextColor(Color.WHITE);
+ data.setValueTypeface(mTfLight);
+ mChart.setData(data);
+
+ mChart.invalidate();
+ }
+
+ private SpannableString generateCenterSpannableText() {
+
+ SpannableString s = new SpannableString("MPAndroidChart\ndeveloped by Philipp Jahoda");
+ s.setSpan(new RelativeSizeSpan(1.7f), 0, 14, 0);
+ s.setSpan(new StyleSpan(Typeface.NORMAL), 14, s.length() - 15, 0);
+ s.setSpan(new ForegroundColorSpan(Color.GRAY), 14, s.length() - 15, 0);
+ s.setSpan(new RelativeSizeSpan(.8f), 14, s.length() - 15, 0);
+ s.setSpan(new StyleSpan(Typeface.ITALIC), s.length() - 14, s.length(), 0);
+ s.setSpan(new ForegroundColorSpan(ColorTemplate.getHoloBlue()), s.length() - 14, s.length(), 0);
+ return s;
+ }
+
+ private void moveOffScreen() {
+
+ Display display = getWindowManager().getDefaultDisplay();
+ int height = display.getHeight(); // deprecated
+
+ int offset = (int)(height * 0.65); /* percent to move */
+
+ RelativeLayout.LayoutParams rlParams =
+ (RelativeLayout.LayoutParams)mChart.getLayoutParams();
+ rlParams.setMargins(0, 0, 0, -offset);
+ mChart.setLayoutParams(rlParams);
+ }
+}
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/HorizontalBarChartActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/HorizontalBarChartActivity.java
index db15dfc0db..d68b75cc15 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/HorizontalBarChartActivity.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/HorizontalBarChartActivity.java
@@ -2,9 +2,7 @@
package com.xxmassdeveloper.mpchartexample;
import android.annotation.SuppressLint;
-import android.graphics.PointF;
import android.graphics.RectF;
-import android.graphics.Typeface;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
@@ -24,15 +22,15 @@
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
-import com.github.mikephil.charting.data.DataSet;
import com.github.mikephil.charting.data.Entry;
-import com.github.mikephil.charting.data.filter.Approximator;
-import com.github.mikephil.charting.data.filter.Approximator.ApproximatorType;
+import com.github.mikephil.charting.highlight.Highlight;
+import com.github.mikephil.charting.interfaces.datasets.IBarDataSet;
import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
-import com.github.mikephil.charting.utils.Highlight;
+import com.github.mikephil.charting.utils.MPPointF;
import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
import java.util.ArrayList;
+import java.util.List;
public class HorizontalBarChartActivity extends DemoBase implements OnSeekBarChangeListener,
OnChartValueSelectedListener {
@@ -41,8 +39,6 @@ public class HorizontalBarChartActivity extends DemoBase implements OnSeekBarCha
private SeekBar mSeekBarX, mSeekBarY;
private TextView tvX, tvY;
- private Typeface tf;
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -64,7 +60,7 @@ protected void onCreate(Bundle savedInstanceState) {
mChart.setDrawValueAboveBar(true);
- mChart.setDescription("");
+ mChart.getDescription().setEnabled(false);
// if more than 60 entries are displayed in the chart, no values will be
// drawn
@@ -76,34 +72,31 @@ protected void onCreate(Bundle savedInstanceState) {
// draw shadows for each bar that show the maximum value
// mChart.setDrawBarShadow(true);
- // mChart.setDrawXLabels(false);
-
mChart.setDrawGridBackground(false);
- // mChart.setDrawYLabels(false);
-
- tf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");
-
XAxis xl = mChart.getXAxis();
xl.setPosition(XAxisPosition.BOTTOM);
- xl.setTypeface(tf);
+ xl.setTypeface(mTfLight);
xl.setDrawAxisLine(true);
- xl.setDrawGridLines(true);
- xl.setGridLineWidth(0.3f);
- // xl.setEnabled(false);
+ xl.setDrawGridLines(false);
+ xl.setGranularity(10f);
YAxis yl = mChart.getAxisLeft();
- yl.setTypeface(tf);
+ yl.setTypeface(mTfLight);
yl.setDrawAxisLine(true);
yl.setDrawGridLines(true);
- yl.setGridLineWidth(0.3f);
+ yl.setAxisMinimum(0f); // this replaces setStartAtZero(true)
+// yl.setInverted(true);
YAxis yr = mChart.getAxisRight();
- yr.setTypeface(tf);
+ yr.setTypeface(mTfLight);
yr.setDrawAxisLine(true);
yr.setDrawGridLines(false);
+ yr.setAxisMinimum(0f); // this replaces setStartAtZero(true)
+// yr.setInverted(true);
setData(12, 50);
+ mChart.setFitBars(true);
mChart.animateY(2500);
// setting data
@@ -114,11 +107,12 @@ protected void onCreate(Bundle savedInstanceState) {
mSeekBarX.setOnSeekBarChangeListener(this);
Legend l = mChart.getLegend();
- l.setPosition(LegendPosition.BELOW_CHART_LEFT);
+ l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
+ l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT);
+ l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
+ l.setDrawInside(false);
l.setFormSize(8f);
l.setXEntrySpace(4f);
-
- // mChart.setDrawLegend(false);
}
@Override
@@ -132,20 +126,38 @@ public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.actionToggleValues: {
- for (DataSet> set : mChart.getData().getDataSets())
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (IBarDataSet iSet : sets) {
+
+ IBarDataSet set = (BarDataSet) iSet;
set.setDrawValues(!set.isDrawValuesEnabled());
+ }
mChart.invalidate();
break;
}
- case R.id.actionToggleHighlight: {
- if (mChart.isHighlightEnabled())
- mChart.setHighlightEnabled(false);
- else
- mChart.setHighlightEnabled(true);
+ case R.id.actionToggleIcons: {
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (IBarDataSet iSet : sets) {
+
+ IBarDataSet set = (BarDataSet) iSet;
+ set.setDrawIcons(!set.isDrawIconsEnabled());
+ }
+
mChart.invalidate();
break;
}
+ case R.id.actionToggleHighlight: {
+ if(mChart.getData() != null) {
+ mChart.getData().setHighlightEnabled(!mChart.getData().isHighlightEnabled());
+ mChart.invalidate();
+ }
+ break;
+ }
case R.id.actionTogglePinch: {
if (mChart.isPinchZoomEnabled())
mChart.setPinchZoom(false);
@@ -155,17 +167,15 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.invalidate();
break;
}
- case R.id.actionToggleHighlightArrow: {
- if (mChart.isDrawHighlightArrowEnabled())
- mChart.setDrawHighlightArrow(false);
- else
- mChart.setDrawHighlightArrow(true);
- mChart.invalidate();
+ case R.id.actionToggleAutoScaleMinMax: {
+ mChart.setAutoScaleMinMaxEnabled(!mChart.isAutoScaleMinMaxEnabled());
+ mChart.notifyDataSetChanged();
break;
}
- case R.id.actionToggleStartzero: {
- mChart.getAxisLeft().setStartAtZero(!mChart.getAxisLeft().isStartAtZeroEnabled());
- mChart.getAxisRight().setStartAtZero(!mChart.getAxisRight().isStartAtZeroEnabled());
+ case R.id.actionToggleBarBorders: {
+ for (IBarDataSet set : mChart.getData().getDataSets())
+ ((BarDataSet)set).setBarBorderWidth(set.getBarBorderWidth() == 1.f ? 0.f : 1.f);
+
mChart.invalidate();
break;
}
@@ -182,29 +192,6 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.animateXY(3000, 3000);
break;
}
- case R.id.actionToggleAdjustXLegend: {
- XAxis xLabels = mChart.getXAxis();
-
- if (xLabels.isAdjustXLabelsEnabled())
- xLabels.setAdjustXLabels(false);
- else
- xLabels.setAdjustXLabels(true);
-
- mChart.invalidate();
- break;
- }
- case R.id.actionToggleFilter: {
-
- Approximator a = new Approximator(ApproximatorType.DOUGLAS_PEUCKER, 25);
-
- if (!mChart.isFilteringEnabled()) {
- mChart.enableFiltering(a);
- } else {
- mChart.disableFiltering();
- }
- mChart.invalidate();
- break;
- }
case R.id.actionSave: {
if (mChart.saveToGallery("title" + System.currentTimeMillis(), 50)) {
Toast.makeText(getApplicationContext(), "Saving SUCCESSFUL!",
@@ -224,7 +211,8 @@ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
tvX.setText("" + (mSeekBarX.getProgress() + 1));
tvY.setText("" + (mSeekBarY.getProgress()));
- setData(mSeekBarX.getProgress(), mSeekBarY.getProgress());
+ setData(mSeekBarX.getProgress() + 1, mSeekBarY.getProgress());
+ mChart.setFitBars(true);
mChart.invalidate();
}
@@ -242,47 +230,61 @@ public void onStopTrackingTouch(SeekBar seekBar) {
private void setData(int count, float range) {
- ArrayList xVals = new ArrayList();
- for (int i = 0; i < count; i++) {
- xVals.add(mMonths[i % 12]);
- }
-
+ float barWidth = 9f;
+ float spaceForBar = 10f;
ArrayList yVals1 = new ArrayList();
for (int i = 0; i < count; i++) {
- float mult = (range + 1);
- float val = (float) (Math.random() * mult);
- yVals1.add(new BarEntry(val, i));
+ float val = (float) (Math.random() * range);
+ yVals1.add(new BarEntry(i * spaceForBar, val,
+ getResources().getDrawable(R.drawable.star)));
}
- BarDataSet set1 = new BarDataSet(yVals1, "DataSet");
- set1.setBarSpacePercent(35f);
+ BarDataSet set1;
- ArrayList dataSets = new ArrayList();
- dataSets.add(set1);
+ if (mChart.getData() != null &&
+ mChart.getData().getDataSetCount() > 0) {
+ set1 = (BarDataSet)mChart.getData().getDataSetByIndex(0);
+ set1.setValues(yVals1);
+ mChart.getData().notifyDataChanged();
+ mChart.notifyDataSetChanged();
+ } else {
+ set1 = new BarDataSet(yVals1, "DataSet 1");
- BarData data = new BarData(xVals, dataSets);
- data.setValueTextSize(10f);
- data.setValueTypeface(tf);
+ set1.setDrawIcons(false);
- mChart.setData(data);
+ ArrayList dataSets = new ArrayList();
+ dataSets.add(set1);
+
+ BarData data = new BarData(dataSets);
+ data.setValueTextSize(10f);
+ data.setValueTypeface(mTfLight);
+ data.setBarWidth(barWidth);
+ mChart.setData(data);
+ }
}
+ protected RectF mOnValueSelectedRectF = new RectF();
@SuppressLint("NewApi")
@Override
- public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
+ public void onValueSelected(Entry e, Highlight h) {
if (e == null)
return;
- RectF bounds = mChart.getBarBounds((BarEntry) e);
- PointF position = mChart.getPosition(e, mChart.getData().getDataSetByIndex(dataSetIndex)
+ RectF bounds = mOnValueSelectedRectF;
+ mChart.getBarBounds((BarEntry) e, bounds);
+
+ MPPointF position = mChart.getPosition(e, mChart.getData().getDataSetByIndex(h.getDataSetIndex())
.getAxisDependency());
Log.i("bounds", bounds.toString());
Log.i("position", position.toString());
+
+ MPPointF.recycleInstance(position);
}
+ @Override
public void onNothingSelected() {
};
}
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/InvertedLineChartActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/InvertedLineChartActivity.java
index a2284d3e5b..f87a9a8098 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/InvertedLineChartActivity.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/InvertedLineChartActivity.java
@@ -16,18 +16,19 @@
import com.github.mikephil.charting.components.Legend.LegendForm;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
-import com.github.mikephil.charting.data.DataSet;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
-import com.github.mikephil.charting.data.filter.Approximator;
-import com.github.mikephil.charting.data.filter.Approximator.ApproximatorType;
+import com.github.mikephil.charting.highlight.Highlight;
+import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
-import com.github.mikephil.charting.utils.Highlight;
+import com.github.mikephil.charting.utils.EntryXComparator;
import com.xxmassdeveloper.mpchartexample.custom.MyMarkerView;
import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
public class InvertedLineChartActivity extends DemoBase implements OnSeekBarChangeListener,
OnChartValueSelectedListener {
@@ -57,12 +58,10 @@ protected void onCreate(Bundle savedInstanceState) {
mChart = (LineChart) findViewById(R.id.chart1);
mChart.setOnChartValueSelectedListener(this);
+ mChart.setDrawGridBackground(false);
// no description text
- mChart.setDescription("");
-
- // enable value highlighting
- mChart.setHighlightEnabled(true);
+ mChart.getDescription().setEnabled(false);
// enable touch gestures
mChart.setTouchEnabled(true);
@@ -80,19 +79,16 @@ protected void onCreate(Bundle savedInstanceState) {
// create a custom MarkerView (extend MarkerView) and specify the layout
// to use for it
MyMarkerView mv = new MyMarkerView(this, R.layout.custom_marker_view);
-
- // set the marker to the chart
- mChart.setMarkerView(mv);
-
- // enable/disable highlight indicators (the lines that indicate the
- // highlighted Entry)
- mChart.setHighlightIndicatorEnabled(false);
+ mv.setChartView(mChart); // For bounds control
+ mChart.setMarker(mv); // Set the marker to the chart
XAxis xl = mChart.getXAxis();
xl.setAvoidFirstLastClipping(true);
+ xl.setAxisMinimum(0f);
YAxis leftAxis = mChart.getAxisLeft();
leftAxis.setInverted(true);
+ leftAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)
YAxis rightAxis = mChart.getAxisRight();
rightAxis.setEnabled(false);
@@ -110,7 +106,6 @@ protected void onCreate(Bundle savedInstanceState) {
Legend l = mChart.getLegend();
// modify the legend ...
- // l.setPosition(LegendPosition.LEFT_OF_CHART);
l.setForm(LegendForm.LINE);
// dont forget to refresh the drawing
@@ -128,26 +123,33 @@ public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.actionToggleValues: {
- for (DataSet> set : mChart.getData().getDataSets())
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
set.setDrawValues(!set.isDrawValuesEnabled());
+ }
mChart.invalidate();
break;
}
case R.id.actionToggleHighlight: {
- if (mChart.isHighlightEnabled())
- mChart.setHighlightEnabled(false);
- else
- mChart.setHighlightEnabled(true);
- mChart.invalidate();
+ if(mChart.getData() != null) {
+ mChart.getData().setHighlightEnabled(!mChart.getData().isHighlightEnabled());
+ mChart.invalidate();
+ }
break;
}
case R.id.actionToggleFilled: {
- ArrayList sets = (ArrayList) mChart.getData()
+ List sets = mChart.getData()
.getDataSets();
- for (LineDataSet set : sets) {
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
if (set.isDrawFilledEnabled())
set.setDrawFilled(false);
else
@@ -157,10 +159,12 @@ public boolean onOptionsItemSelected(MenuItem item) {
break;
}
case R.id.actionToggleCircles: {
- ArrayList sets = (ArrayList) mChart.getData()
+ List sets = mChart.getData()
.getDataSets();
- for (LineDataSet set : sets) {
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
if (set.isDrawCirclesEnabled())
set.setDrawCircles(false);
else
@@ -169,12 +173,6 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.invalidate();
break;
}
- case R.id.actionToggleStartzero: {
- mChart.getAxisLeft().setStartAtZero(!mChart.getAxisLeft().isStartAtZeroEnabled());
- mChart.getAxisRight().setStartAtZero(!mChart.getAxisRight().isStartAtZeroEnabled());
- mChart.invalidate();
- break;
- }
case R.id.animateX: {
mChart.animateX(3000);
break;
@@ -197,28 +195,9 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.invalidate();
break;
}
- case R.id.actionToggleAdjustXLegend: {
- XAxis xLabels = mChart.getXAxis();
-
- if (xLabels.isAdjustXLabelsEnabled())
- xLabels.setAdjustXLabels(false);
- else
- xLabels.setAdjustXLabels(true);
-
- mChart.invalidate();
- break;
- }
- case R.id.actionToggleFilter: {
-
- // the angle of filtering is 35°
- Approximator a = new Approximator(ApproximatorType.DOUGLAS_PEUCKER, 35);
-
- if (!mChart.isFilteringEnabled()) {
- mChart.enableFiltering(a);
- } else {
- mChart.disableFiltering();
- }
- mChart.invalidate();
+ case R.id.actionToggleAutoScaleMinMax: {
+ mChart.setAutoScaleMinMaxEnabled(!mChart.isAutoScaleMinMaxEnabled());
+ mChart.notifyDataSetChanged();
break;
}
case R.id.actionSave: {
@@ -249,10 +228,10 @@ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
- public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
+ public void onValueSelected(Entry e, Highlight h) {
Log.i("VAL SELECTED",
- "Value: " + e.getVal() + ", xIndex: " + e.getXIndex()
- + ", DataSet index: " + dataSetIndex);
+ "Value: " + e.getY() + ", xIndex: " + e.getX()
+ + ", DataSet index: " + h.getDataSetIndex());
}
@Override
@@ -275,29 +254,25 @@ public void onStopTrackingTouch(SeekBar seekBar) {
private void setData(int count, float range) {
- ArrayList xVals = new ArrayList();
- for (int i = 0; i < count; i++) {
- xVals.add((i % 30) + "/" + (i % 12) + "/14");
- }
-
- ArrayList yVals = new ArrayList();
+ ArrayList entries = new ArrayList();
for (int i = 0; i < count; i++) {
- float mult = (range + 1);
- float val = (float) (Math.random() * mult) + 3;// + (float)
- // ((mult *
- // 0.1) / 10);
- yVals.add(new Entry(val, i));
+ float xVal = (float) (Math.random() * range);
+ float yVal = (float) (Math.random() * range);
+ entries.add(new Entry(xVal, yVal));
}
+ // sort by x-value
+ Collections.sort(entries, new EntryXComparator());
+
// create a dataset and give it a type
- LineDataSet set1 = new LineDataSet(yVals, "DataSet 1");
+ LineDataSet set1 = new LineDataSet(entries, "DataSet 1");
set1.setLineWidth(1.5f);
- set1.setCircleSize(4f);
+ set1.setCircleRadius(4f);
// create a data object with the datasets
- LineData data = new LineData(xVals, set1);
+ LineData data = new LineData(set1);
// set data
mChart.setData(data);
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/LineChartActivity1.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/LineChartActivity1.java
index 023218ed75..b18309a26a 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/LineChartActivity1.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/LineChartActivity1.java
@@ -2,7 +2,11 @@
package com.xxmassdeveloper.mpchartexample;
import android.graphics.Color;
+import android.graphics.DashPathEffect;
+import android.graphics.Typeface;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
+import android.support.v4.content.ContextCompat;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@@ -13,6 +17,7 @@
import android.widget.TextView;
import android.widget.Toast;
+import com.github.mikephil.charting.animation.Easing;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.Legend.LegendForm;
@@ -20,19 +25,20 @@
import com.github.mikephil.charting.components.LimitLine.LimitLabelPosition;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
-import com.github.mikephil.charting.data.DataSet;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
-import com.github.mikephil.charting.data.filter.Approximator;
-import com.github.mikephil.charting.data.filter.Approximator.ApproximatorType;
+import com.github.mikephil.charting.highlight.Highlight;
+import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
+import com.github.mikephil.charting.listener.ChartTouchListener;
import com.github.mikephil.charting.listener.OnChartGestureListener;
import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
-import com.github.mikephil.charting.utils.Highlight;
+import com.github.mikephil.charting.utils.Utils;
import com.xxmassdeveloper.mpchartexample.custom.MyMarkerView;
import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
import java.util.ArrayList;
+import java.util.List;
public class LineChartActivity1 extends DemoBase implements OnSeekBarChangeListener,
OnChartGestureListener, OnChartValueSelectedListener {
@@ -63,13 +69,10 @@ protected void onCreate(Bundle savedInstanceState) {
mChart = (LineChart) findViewById(R.id.chart1);
mChart.setOnChartGestureListener(this);
mChart.setOnChartValueSelectedListener(this);
+ mChart.setDrawGridBackground(false);
// no description text
- mChart.setDescription("");
- mChart.setNoDataTextDescription("You need to provide data for the chart.");
-
- // enable value highlighting
- mChart.setHighlightEnabled(true);
+ mChart.getDescription().setEnabled(false);
// enable touch gestures
mChart.setTouchEnabled(true);
@@ -77,6 +80,8 @@ protected void onCreate(Bundle savedInstanceState) {
// enable scaling and dragging
mChart.setDragEnabled(true);
mChart.setScaleEnabled(true);
+ // mChart.setScaleXEnabled(true);
+ // mChart.setScaleYEnabled(true);
// if disabled, scaling can be done on x- and y-axis separately
mChart.setPinchZoom(true);
@@ -87,36 +92,81 @@ protected void onCreate(Bundle savedInstanceState) {
// create a custom MarkerView (extend MarkerView) and specify the layout
// to use for it
MyMarkerView mv = new MyMarkerView(this, R.layout.custom_marker_view);
+ mv.setChartView(mChart); // For bounds control
+ mChart.setMarker(mv); // Set the marker to the chart
+
+ // x-axis limit line
+ LimitLine llXAxis = new LimitLine(10f, "Index 10");
+ llXAxis.setLineWidth(4f);
+ llXAxis.enableDashedLine(10f, 10f, 0f);
+ llXAxis.setLabelPosition(LimitLabelPosition.RIGHT_BOTTOM);
+ llXAxis.setTextSize(10f);
+
+ XAxis xAxis = mChart.getXAxis();
+ xAxis.enableGridDashedLine(10f, 10f, 0f);
+ //xAxis.setValueFormatter(new MyCustomXAxisValueFormatter());
+ //xAxis.addLimitLine(llXAxis); // add x-axis limit line
+
+
+ Typeface tf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");
+
+ LimitLine ll1 = new LimitLine(150f, "Upper Limit");
+ ll1.setLineWidth(4f);
+ ll1.enableDashedLine(10f, 10f, 0f);
+ ll1.setLabelPosition(LimitLabelPosition.RIGHT_TOP);
+ ll1.setTextSize(10f);
+ ll1.setTypeface(tf);
+
+ LimitLine ll2 = new LimitLine(-30f, "Lower Limit");
+ ll2.setLineWidth(4f);
+ ll2.enableDashedLine(10f, 10f, 0f);
+ ll2.setLabelPosition(LimitLabelPosition.RIGHT_BOTTOM);
+ ll2.setTextSize(10f);
+ ll2.setTypeface(tf);
- // set the marker to the chart
- mChart.setMarkerView(mv);
+ YAxis leftAxis = mChart.getAxisLeft();
+ leftAxis.removeAllLimitLines(); // reset all limit lines to avoid overlapping lines
+ leftAxis.addLimitLine(ll1);
+ leftAxis.addLimitLine(ll2);
+ leftAxis.setAxisMaximum(200f);
+ leftAxis.setAxisMinimum(-50f);
+ //leftAxis.setYOffset(20f);
+ leftAxis.enableGridDashedLine(10f, 10f, 0f);
+ leftAxis.setDrawZeroLine(false);
+
+ // limit lines are drawn behind data (and not on top)
+ leftAxis.setDrawLimitLinesBehindData(true);
+
+ mChart.getAxisRight().setEnabled(false);
+
+ //mChart.getViewPortHandler().setMaximumScaleY(2f);
+ //mChart.getViewPortHandler().setMaximumScaleX(2f);
- // enable/disable highlight indicators (the lines that indicate the
- // highlighted Entry)
- mChart.setHighlightIndicatorEnabled(false);
-
// add data
setData(45, 100);
- mChart.animateX(2500);
-// mChart.setVisibleYRange(30, AxisDependency.LEFT);
-// // restrain the maximum scale-out factor
-// mChart.setScaleMinima(3f, 3f);
-//
-// // center the view to a specific position inside the chart
-// mChart.centerViewPort(10, 50, AxisDependency.LEFT);
+// mChart.setVisibleXRange(20);
+// mChart.setVisibleYRange(20f, AxisDependency.LEFT);
+// mChart.centerViewTo(20, 50, AxisDependency.LEFT);
+
+ mChart.animateX(2500);
+ //mChart.invalidate();
// get the legend (only possible after setting data)
Legend l = mChart.getLegend();
// modify the legend ...
- // l.setPosition(LegendPosition.LEFT_OF_CHART);
l.setForm(LegendForm.LINE);
// // dont forget to refresh the drawing
// mChart.invalidate();
}
+ @Override
+ public void onWindowFocusChanged(boolean hasFocus) {
+ super.onWindowFocusChanged(hasFocus);
+ }
+
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.line, menu);
@@ -128,26 +178,46 @@ public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.actionToggleValues: {
- for (DataSet> set : mChart.getData().getDataSets())
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
set.setDrawValues(!set.isDrawValuesEnabled());
+ }
mChart.invalidate();
break;
}
- case R.id.actionToggleHighlight: {
- if (mChart.isHighlightEnabled())
- mChart.setHighlightEnabled(false);
- else
- mChart.setHighlightEnabled(true);
+ case R.id.actionToggleIcons: {
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
+ set.setDrawIcons(!set.isDrawIconsEnabled());
+ }
+
mChart.invalidate();
break;
}
+ case R.id.actionToggleHighlight: {
+ if(mChart.getData() != null) {
+ mChart.getData().setHighlightEnabled(!mChart.getData().isHighlightEnabled());
+ mChart.invalidate();
+ }
+ break;
+ }
case R.id.actionToggleFilled: {
- ArrayList sets = (ArrayList) mChart.getData()
+ List sets = mChart.getData()
.getDataSets();
- for (LineDataSet set : sets) {
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
if (set.isDrawFilledEnabled())
set.setDrawFilled(false);
else
@@ -157,10 +227,12 @@ public boolean onOptionsItemSelected(MenuItem item) {
break;
}
case R.id.actionToggleCircles: {
- ArrayList sets = (ArrayList) mChart.getData()
+ List sets = mChart.getData()
.getDataSets();
- for (LineDataSet set : sets) {
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
if (set.isDrawCirclesEnabled())
set.setDrawCircles(false);
else
@@ -170,21 +242,44 @@ public boolean onOptionsItemSelected(MenuItem item) {
break;
}
case R.id.actionToggleCubic: {
- ArrayList sets = (ArrayList) mChart.getData()
+ List sets = mChart.getData()
.getDataSets();
- for (LineDataSet set : sets) {
- if (set.isDrawCubicEnabled())
- set.setDrawCubic(false);
- else
- set.setDrawCubic(true);
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
+ set.setMode(set.getMode() == LineDataSet.Mode.CUBIC_BEZIER
+ ? LineDataSet.Mode.LINEAR
+ : LineDataSet.Mode.CUBIC_BEZIER);
+ }
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionToggleStepped: {
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
+ set.setMode(set.getMode() == LineDataSet.Mode.STEPPED
+ ? LineDataSet.Mode.LINEAR
+ : LineDataSet.Mode.STEPPED);
}
mChart.invalidate();
break;
}
- case R.id.actionToggleStartzero: {
- mChart.getAxisLeft().setStartAtZero(!mChart.getAxisLeft().isStartAtZeroEnabled());
- mChart.getAxisRight().setStartAtZero(!mChart.getAxisRight().isStartAtZeroEnabled());
+ case R.id.actionToggleHorizontalCubic: {
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
+ set.setMode(set.getMode() == LineDataSet.Mode.HORIZONTAL_BEZIER
+ ? LineDataSet.Mode.LINEAR
+ : LineDataSet.Mode.HORIZONTAL_BEZIER);
+ }
mChart.invalidate();
break;
}
@@ -197,55 +292,23 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.invalidate();
break;
}
+ case R.id.actionToggleAutoScaleMinMax: {
+ mChart.setAutoScaleMinMaxEnabled(!mChart.isAutoScaleMinMaxEnabled());
+ mChart.notifyDataSetChanged();
+ break;
+ }
case R.id.animateX: {
mChart.animateX(3000);
break;
}
case R.id.animateY: {
- mChart.animateY(3000);
+ mChart.animateY(3000, Easing.EasingOption.EaseInCubic);
break;
}
case R.id.animateXY: {
mChart.animateXY(3000, 3000);
break;
}
- case R.id.actionToggleAdjustXLegend: {
- XAxis xLabels = mChart.getXAxis();
-
- if (xLabels.isAdjustXLabelsEnabled())
- xLabels.setAdjustXLabels(false);
- else
- xLabels.setAdjustXLabels(true);
-
- mChart.invalidate();
- break;
- }
- case R.id.actionToggleFilter: {
-
- // the angle of filtering is 35°
- Approximator a = new Approximator(ApproximatorType.DOUGLAS_PEUCKER, 35);
-
- if (!mChart.isFilteringEnabled()) {
- mChart.enableFiltering(a);
- } else {
- mChart.disableFiltering();
- }
- mChart.invalidate();
-
- //
- // for(int i = 0; i < 10; i++) {
- // mChart.addEntry(new Entry((float) (Math.random() * 100),
- // i+2), 0);
- // mChart.invalidate();
- // }
- //
- // Toast.makeText(getApplicationContext(), "valcount: " +
- // mChart.getDataOriginal().getYValCount() + ", valsum: " +
- // mChart.getDataOriginal().getYValueSum(),
- // Toast.LENGTH_SHORT).show();
- //
- break;
- }
case R.id.actionSave: {
if (mChart.saveToPath("title" + System.currentTimeMillis(), "")) {
Toast.makeText(getApplicationContext(), "Saving SUCCESSFUL!",
@@ -268,7 +331,7 @@ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
tvY.setText("" + (mSeekBarY.getProgress()));
setData(mSeekBarX.getProgress() + 1, mSeekBarY.getProgress());
-
+
// redraw
mChart.invalidate();
}
@@ -287,67 +350,74 @@ public void onStopTrackingTouch(SeekBar seekBar) {
private void setData(int count, float range) {
- ArrayList xVals = new ArrayList();
+ ArrayList values = new ArrayList();
+
for (int i = 0; i < count; i++) {
- xVals.add((i) + "");
+
+ float val = (float) (Math.random() * range) + 3;
+ values.add(new Entry(i, val, getResources().getDrawable(R.drawable.star)));
}
- ArrayList yVals = new ArrayList();
+ LineDataSet set1;
+
+ if (mChart.getData() != null &&
+ mChart.getData().getDataSetCount() > 0) {
+ set1 = (LineDataSet)mChart.getData().getDataSetByIndex(0);
+ set1.setValues(values);
+ mChart.getData().notifyDataChanged();
+ mChart.notifyDataSetChanged();
+ } else {
+ // create a dataset and give it a type
+ set1 = new LineDataSet(values, "DataSet 1");
+
+ set1.setDrawIcons(false);
+
+ // set the line to be drawn like this "- - - - - -"
+ set1.enableDashedLine(10f, 5f, 0f);
+ set1.enableDashedHighlightLine(10f, 5f, 0f);
+ set1.setColor(Color.BLACK);
+ set1.setCircleColor(Color.BLACK);
+ set1.setLineWidth(1f);
+ set1.setCircleRadius(3f);
+ set1.setDrawCircleHole(false);
+ set1.setValueTextSize(9f);
+ set1.setDrawFilled(true);
+ set1.setFormLineWidth(1f);
+ set1.setFormLineDashEffect(new DashPathEffect(new float[]{10f, 5f}, 0f));
+ set1.setFormSize(15.f);
+
+ if (Utils.getSDKInt() >= 18) {
+ // fill drawable only supported on api level 18 and above
+ Drawable drawable = ContextCompat.getDrawable(this, R.drawable.fade_red);
+ set1.setFillDrawable(drawable);
+ }
+ else {
+ set1.setFillColor(Color.BLACK);
+ }
- for (int i = 0; i < count; i++) {
- float mult = (range + 1);
- float val = (float) (Math.random() * mult) + 3;// + (float)
- // ((mult *
- // 0.1) / 10);
- yVals.add(new Entry(val, i));
- }
+ ArrayList dataSets = new ArrayList();
+ dataSets.add(set1); // add the datasets
- // create a dataset and give it a type
- LineDataSet set1 = new LineDataSet(yVals, "DataSet 1");
- // set1.setFillAlpha(110);
- // set1.setFillColor(Color.RED);
-
- // set the line to be drawn like this "- - - - - -"
- set1.enableDashedLine(10f, 5f, 0f);
- set1.setColor(Color.BLACK);
- set1.setCircleColor(Color.BLACK);
- set1.setLineWidth(1f);
- set1.setCircleSize(4f);
- set1.setFillAlpha(65);
- set1.setFillColor(Color.BLACK);
- // set1.setShader(new LinearGradient(0, 0, 0, mChart.getHeight(),
- // Color.BLACK, Color.WHITE, Shader.TileMode.MIRROR));
-
- ArrayList dataSets = new ArrayList();
- dataSets.add(set1); // add the datasets
-
- // create a data object with the datasets
- LineData data = new LineData(xVals, dataSets);
- data.setValueTextSize(10f);
-
- LimitLine ll1 = new LimitLine(130f, "Upper Limit");
- ll1.setLineWidth(4f);
- ll1.enableDashedLine(10f, 10f, 0f);
- ll1.setLabelPosition(LimitLabelPosition.POS_RIGHT);
- ll1.setTextSize(10f);
+ // create a data object with the datasets
+ LineData data = new LineData(dataSets);
- LimitLine ll2 = new LimitLine(-30f, "Lower Limit");
- ll2.setLineWidth(4f);
- ll2.enableDashedLine(10f, 10f, 0f);
- ll2.setLabelPosition(LimitLabelPosition.POS_RIGHT);
- ll2.setTextSize(10f);
-
- YAxis leftAxis = mChart.getAxisLeft();
- leftAxis.addLimitLine(ll1);
- leftAxis.addLimitLine(ll2);
- leftAxis.setAxisMaxValue(220f);
- leftAxis.setAxisMinValue(-50f);
- leftAxis.setStartAtZero(false);
+ // set data
+ mChart.setData(data);
+ }
+ }
- mChart.getAxisRight().setEnabled(false);
+ @Override
+ public void onChartGestureStart(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) {
+ Log.i("Gesture", "START, x: " + me.getX() + ", y: " + me.getY());
+ }
+
+ @Override
+ public void onChartGestureEnd(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) {
+ Log.i("Gesture", "END, lastGesture: " + lastPerformedGesture);
- // set data
- mChart.setData(data);
+ // un-highlight values after the gesture is finished and no single-tap
+ if(lastPerformedGesture != ChartTouchListener.ChartGesture.SINGLE_TAP)
+ mChart.highlightValues(null); // or highlightTouch(null) for callback to onNothingSelected(...)
}
@Override
@@ -371,8 +441,20 @@ public void onChartFling(MotionEvent me1, MotionEvent me2, float velocityX, floa
}
@Override
- public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
+ public void onChartScale(MotionEvent me, float scaleX, float scaleY) {
+ Log.i("Scale / Zoom", "ScaleX: " + scaleX + ", ScaleY: " + scaleY);
+ }
+
+ @Override
+ public void onChartTranslate(MotionEvent me, float dX, float dY) {
+ Log.i("Translate / Move", "dX: " + dX + ", dY: " + dY);
+ }
+
+ @Override
+ public void onValueSelected(Entry e, Highlight h) {
Log.i("Entry selected", e.toString());
+ Log.i("LOWHIGH", "low: " + mChart.getLowestVisibleX() + ", high: " + mChart.getHighestVisibleX());
+ Log.i("MIN MAX", "xmin: " + mChart.getXChartMin() + ", xmax: " + mChart.getXChartMax() + ", ymin: " + mChart.getYChartMin() + ", ymax: " + mChart.getYChartMax());
}
@Override
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/LineChartActivity2.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/LineChartActivity2.java
index f381c6073f..79f40c4e07 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/LineChartActivity2.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/LineChartActivity2.java
@@ -2,7 +2,6 @@
package com.xxmassdeveloper.mpchartexample;
import android.graphics.Color;
-import android.graphics.Typeface;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
@@ -16,22 +15,20 @@
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.Legend.LegendForm;
-import com.github.mikephil.charting.components.Legend.LegendPosition;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.components.YAxis.AxisDependency;
-import com.github.mikephil.charting.data.DataSet;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
-import com.github.mikephil.charting.data.filter.Approximator;
-import com.github.mikephil.charting.data.filter.Approximator.ApproximatorType;
+import com.github.mikephil.charting.highlight.Highlight;
+import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
import com.github.mikephil.charting.utils.ColorTemplate;
-import com.github.mikephil.charting.utils.Highlight;
import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
import java.util.ArrayList;
+import java.util.List;
public class LineChartActivity2 extends DemoBase implements OnSeekBarChangeListener,
OnChartValueSelectedListener {
@@ -60,21 +57,20 @@ protected void onCreate(Bundle savedInstanceState) {
mChart = (LineChart) findViewById(R.id.chart1);
mChart.setOnChartValueSelectedListener(this);
-
- // no description text
- mChart.setDescription("");
- mChart.setNoDataTextDescription("You need to provide data for the chart.");
- // enable value highlighting
- mChart.setHighlightEnabled(true);
+ // no description text
+ mChart.getDescription().setEnabled(false);
// enable touch gestures
mChart.setTouchEnabled(true);
+ mChart.setDragDecelerationFrictionCoef(0.9f);
+
// enable scaling and dragging
mChart.setDragEnabled(true);
mChart.setScaleEnabled(true);
mChart.setDrawGridBackground(false);
+ mChart.setHighlightPerDragEnabled(true);
// if disabled, scaling can be done on x- and y-axis separately
mChart.setPinchZoom(true);
@@ -87,40 +83,43 @@ protected void onCreate(Bundle savedInstanceState) {
mChart.animateX(2500);
- Typeface tf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");
-
// get the legend (only possible after setting data)
Legend l = mChart.getLegend();
// modify the legend ...
- // l.setPosition(LegendPosition.LEFT_OF_CHART);
l.setForm(LegendForm.LINE);
- l.setTypeface(tf);
+ l.setTypeface(mTfLight);
l.setTextSize(11f);
l.setTextColor(Color.WHITE);
- l.setPosition(LegendPosition.BELOW_CHART_LEFT);
+ l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
+ l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT);
+ l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
+ l.setDrawInside(false);
+// l.setYOffset(11f);
XAxis xAxis = mChart.getXAxis();
- xAxis.setTypeface(tf);
- xAxis.setTextSize(12f);
+ xAxis.setTypeface(mTfLight);
+ xAxis.setTextSize(11f);
xAxis.setTextColor(Color.WHITE);
xAxis.setDrawGridLines(false);
xAxis.setDrawAxisLine(false);
- xAxis.setSpaceBetweenLabels(1);
YAxis leftAxis = mChart.getAxisLeft();
- leftAxis.setTypeface(tf);
+ leftAxis.setTypeface(mTfLight);
leftAxis.setTextColor(ColorTemplate.getHoloBlue());
- leftAxis.setAxisMaxValue(200f);
+ leftAxis.setAxisMaximum(200f);
+ leftAxis.setAxisMinimum(0f);
leftAxis.setDrawGridLines(true);
-
+ leftAxis.setGranularityEnabled(true);
+
YAxis rightAxis = mChart.getAxisRight();
- rightAxis.setTypeface(tf);
+ rightAxis.setTypeface(mTfLight);
rightAxis.setTextColor(Color.RED);
- rightAxis.setAxisMaxValue(900);
- rightAxis.setStartAtZero(false);
- rightAxis.setAxisMinValue(-200);
+ rightAxis.setAxisMaximum(900);
+ rightAxis.setAxisMinimum(-200);
rightAxis.setDrawGridLines(false);
+ rightAxis.setDrawZeroLine(false);
+ rightAxis.setGranularityEnabled(false);
}
@Override
@@ -134,26 +133,33 @@ public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.actionToggleValues: {
- for (DataSet> set : mChart.getData().getDataSets())
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
set.setDrawValues(!set.isDrawValuesEnabled());
+ }
mChart.invalidate();
break;
}
case R.id.actionToggleHighlight: {
- if (mChart.isHighlightEnabled())
- mChart.setHighlightEnabled(false);
- else
- mChart.setHighlightEnabled(true);
- mChart.invalidate();
+ if (mChart.getData() != null) {
+ mChart.getData().setHighlightEnabled(!mChart.getData().isHighlightEnabled());
+ mChart.invalidate();
+ }
break;
}
case R.id.actionToggleFilled: {
- ArrayList sets = (ArrayList) mChart.getData()
+ List sets = mChart.getData()
.getDataSets();
- for (LineDataSet set : sets) {
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
if (set.isDrawFilledEnabled())
set.setDrawFilled(false);
else
@@ -163,10 +169,12 @@ public boolean onOptionsItemSelected(MenuItem item) {
break;
}
case R.id.actionToggleCircles: {
- ArrayList sets = (ArrayList) mChart.getData()
+ List sets = mChart.getData()
.getDataSets();
- for (LineDataSet set : sets) {
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
if (set.isDrawCirclesEnabled())
set.setDrawCircles(false);
else
@@ -176,21 +184,44 @@ public boolean onOptionsItemSelected(MenuItem item) {
break;
}
case R.id.actionToggleCubic: {
- ArrayList sets = (ArrayList) mChart.getData()
+ List sets = mChart.getData()
.getDataSets();
- for (LineDataSet set : sets) {
- if (set.isDrawCubicEnabled())
- set.setDrawCubic(false);
- else
- set.setDrawCubic(true);
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
+ set.setMode(set.getMode() == LineDataSet.Mode.CUBIC_BEZIER
+ ? LineDataSet.Mode.LINEAR
+ : LineDataSet.Mode.CUBIC_BEZIER);
+ }
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionToggleStepped: {
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
+ set.setMode(set.getMode() == LineDataSet.Mode.STEPPED
+ ? LineDataSet.Mode.LINEAR
+ : LineDataSet.Mode.STEPPED);
}
mChart.invalidate();
break;
}
- case R.id.actionToggleStartzero: {
- mChart.getAxisLeft().setStartAtZero(!mChart.getAxisLeft().isStartAtZeroEnabled());
- mChart.getAxisRight().setStartAtZero(!mChart.getAxisRight().isStartAtZeroEnabled());
+ case R.id.actionToggleHorizontalCubic: {
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
+ set.setMode(set.getMode() == LineDataSet.Mode.HORIZONTAL_BEZIER
+ ? LineDataSet.Mode.LINEAR
+ : LineDataSet.Mode.HORIZONTAL_BEZIER);
+ }
mChart.invalidate();
break;
}
@@ -203,8 +234,14 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.invalidate();
break;
}
+ case R.id.actionToggleAutoScaleMinMax: {
+ mChart.setAutoScaleMinMaxEnabled(!mChart.isAutoScaleMinMaxEnabled());
+ mChart.notifyDataSetChanged();
+ break;
+ }
case R.id.animateX: {
mChart.animateX(3000);
+ //mChart.highlightValue(9.7f, 1, false);
break;
}
case R.id.animateY: {
@@ -215,30 +252,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.animateXY(3000, 3000);
break;
}
- case R.id.actionToggleAdjustXLegend: {
- XAxis xLabels = mChart.getXAxis();
- if (xLabels.isAdjustXLabelsEnabled())
- xLabels.setAdjustXLabels(false);
- else
- xLabels.setAdjustXLabels(true);
-
- mChart.invalidate();
- break;
- }
- case R.id.actionToggleFilter: {
-
- // the angle of filtering is 35°
- Approximator a = new Approximator(ApproximatorType.DOUGLAS_PEUCKER, 35);
-
- if (!mChart.isFilteringEnabled()) {
- mChart.enableFiltering(a);
- } else {
- mChart.disableFiltering();
- }
- mChart.invalidate();
- break;
- }
case R.id.actionSave: {
if (mChart.saveToPath("title" + System.currentTimeMillis(), "")) {
Toast.makeText(getApplicationContext(), "Saving SUCCESSFUL!",
@@ -268,69 +282,107 @@ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
private void setData(int count, float range) {
- ArrayList xVals = new ArrayList();
- for (int i = 0; i < count; i++) {
- xVals.add((i) + "");
- }
-
ArrayList yVals1 = new ArrayList();
for (int i = 0; i < count; i++) {
float mult = range / 2f;
- float val = (float) (Math.random() * mult) + 50;// + (float)
- // ((mult *
- // 0.1) / 10);
- yVals1.add(new Entry(val, i));
+ float val = (float) (Math.random() * mult) + 50;
+ yVals1.add(new Entry(i, val));
}
- // create a dataset and give it a type
- LineDataSet set1 = new LineDataSet(yVals1, "DataSet 1");
- set1.setAxisDependency(AxisDependency.LEFT);
- set1.setColor(ColorTemplate.getHoloBlue());
- set1.setCircleColor(ColorTemplate.getHoloBlue());
- set1.setLineWidth(2f);
- set1.setCircleSize(4f);
- set1.setFillAlpha(65);
- set1.setFillColor(ColorTemplate.getHoloBlue());
- set1.setHighLightColor(Color.rgb(244, 117, 117));
-
ArrayList yVals2 = new ArrayList();
+ for (int i = 0; i < count-1; i++) {
+ float mult = range;
+ float val = (float) (Math.random() * mult) + 450;
+ yVals2.add(new Entry(i, val));
+// if(i == 10) {
+// yVals2.add(new Entry(i, val + 50));
+// }
+ }
+
+ ArrayList yVals3 = new ArrayList();
+
for (int i = 0; i < count; i++) {
float mult = range;
- float val = (float) (Math.random() * mult) + 450;// + (float)
- // ((mult *
- // 0.1) / 10);
- yVals2.add(new Entry(val, i));
+ float val = (float) (Math.random() * mult) + 500;
+ yVals3.add(new Entry(i, val));
}
- // create a dataset and give it a type
- LineDataSet set2 = new LineDataSet(yVals2, "DataSet 2");
- set2.setAxisDependency(AxisDependency.RIGHT);
- set2.setColor(Color.RED);
- set2.setCircleColor(Color.RED);
- set2.setLineWidth(2f);
- set2.setCircleSize(4f);
- set2.setFillAlpha(65);
- set2.setFillColor(Color.RED);
- set2.setHighLightColor(Color.rgb(244, 117, 117));
-
- ArrayList dataSets = new ArrayList();
- dataSets.add(set1);
- dataSets.add(set2); // add the datasets
-
- // create a data object with the datasets
- LineData data = new LineData(xVals, dataSets);
- data.setValueTextColor(Color.WHITE);
- data.setValueTextSize(9f);
-
- // set data
- mChart.setData(data);
+ LineDataSet set1, set2, set3;
+
+ if (mChart.getData() != null &&
+ mChart.getData().getDataSetCount() > 0) {
+ set1 = (LineDataSet) mChart.getData().getDataSetByIndex(0);
+ set2 = (LineDataSet) mChart.getData().getDataSetByIndex(1);
+ set3 = (LineDataSet) mChart.getData().getDataSetByIndex(2);
+ set1.setValues(yVals1);
+ set2.setValues(yVals2);
+ set3.setValues(yVals3);
+ mChart.getData().notifyDataChanged();
+ mChart.notifyDataSetChanged();
+ } else {
+ // create a dataset and give it a type
+ set1 = new LineDataSet(yVals1, "DataSet 1");
+
+ set1.setAxisDependency(AxisDependency.LEFT);
+ set1.setColor(ColorTemplate.getHoloBlue());
+ set1.setCircleColor(Color.WHITE);
+ set1.setLineWidth(2f);
+ set1.setCircleRadius(3f);
+ set1.setFillAlpha(65);
+ set1.setFillColor(ColorTemplate.getHoloBlue());
+ set1.setHighLightColor(Color.rgb(244, 117, 117));
+ set1.setDrawCircleHole(false);
+ //set1.setFillFormatter(new MyFillFormatter(0f));
+ //set1.setDrawHorizontalHighlightIndicator(false);
+ //set1.setVisible(false);
+ //set1.setCircleHoleColor(Color.WHITE);
+
+ // create a dataset and give it a type
+ set2 = new LineDataSet(yVals2, "DataSet 2");
+ set2.setAxisDependency(AxisDependency.RIGHT);
+ set2.setColor(Color.RED);
+ set2.setCircleColor(Color.WHITE);
+ set2.setLineWidth(2f);
+ set2.setCircleRadius(3f);
+ set2.setFillAlpha(65);
+ set2.setFillColor(Color.RED);
+ set2.setDrawCircleHole(false);
+ set2.setHighLightColor(Color.rgb(244, 117, 117));
+ //set2.setFillFormatter(new MyFillFormatter(900f));
+
+ set3 = new LineDataSet(yVals3, "DataSet 3");
+ set3.setAxisDependency(AxisDependency.RIGHT);
+ set3.setColor(Color.YELLOW);
+ set3.setCircleColor(Color.WHITE);
+ set3.setLineWidth(2f);
+ set3.setCircleRadius(3f);
+ set3.setFillAlpha(65);
+ set3.setFillColor(ColorTemplate.colorWithAlpha(Color.YELLOW, 200));
+ set3.setDrawCircleHole(false);
+ set3.setHighLightColor(Color.rgb(244, 117, 117));
+
+ // create a data object with the datasets
+ LineData data = new LineData(set1, set2, set3);
+ data.setValueTextColor(Color.WHITE);
+ data.setValueTextSize(9f);
+
+ // set data
+ mChart.setData(data);
+ }
}
@Override
- public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
+ public void onValueSelected(Entry e, Highlight h) {
Log.i("Entry selected", e.toString());
+
+ mChart.centerViewToAnimated(e.getX(), e.getY(), mChart.getData().getDataSetByIndex(h.getDataSetIndex())
+ .getAxisDependency(), 500);
+ //mChart.zoomAndCenterAnimated(2.5f, 2.5f, e.getX(), e.getY(), mChart.getData().getDataSetByIndex(dataSetIndex)
+ // .getAxisDependency(), 1000);
+ //mChart.zoomAndCenterAnimated(1.8f, 1.8f, e.getX(), e.getY(), mChart.getData().getDataSetByIndex(dataSetIndex)
+ // .getAxisDependency(), 1000);
}
@Override
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/LineChartActivityColored.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/LineChartActivityColored.java
index b21c385a07..68bba4b458 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/LineChartActivityColored.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/LineChartActivityColored.java
@@ -8,9 +8,6 @@
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Legend;
-import com.github.mikephil.charting.components.Legend.LegendForm;
-import com.github.mikephil.charting.components.XAxis;
-import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
@@ -37,12 +34,14 @@ protected void onCreate(Bundle savedInstanceState) {
mTf = Typeface.createFromAsset(getAssets(), "OpenSans-Bold.ttf");
- LineData data = getData(36, 100);
- data.setValueTypeface(mTf);
+ for (int i = 0; i < mCharts.length; i++) {
+
+ LineData data = getData(36, 100);
+ data.setValueTypeface(mTf);
- for (int i = 0; i < mCharts.length; i++)
// add some transparency to the color with "& 0x90FFFFFF"
setupChart(mCharts[i], data, mColors[i % mColors.length]);
+ }
}
private int[] mColors = new int[] {
@@ -54,9 +53,10 @@ protected void onCreate(Bundle savedInstanceState) {
private void setupChart(LineChart chart, LineData data, int color) {
+ ((LineDataSet) data.getDataSetByIndex(0)).setCircleColorHole(color);
+
// no description text
- chart.setDescription("");
- chart.setNoDataTextDescription("You need to provide data for the chart.");
+ chart.getDescription().setEnabled(false);
// mChart.setDrawHorizontalGrid(false);
//
@@ -84,15 +84,11 @@ private void setupChart(LineChart chart, LineData data, int color) {
// get the legend (only possible after setting data)
Legend l = chart.getLegend();
-
- // modify the legend ...
- // l.setPosition(LegendPosition.LEFT_OF_CHART);
- l.setForm(LegendForm.CIRCLE);
- l.setFormSize(6f);
- l.setTextColor(Color.WHITE);
- l.setTypeface(mTf);
+ l.setEnabled(false);
chart.getAxisLeft().setEnabled(false);
+ chart.getAxisLeft().setSpaceTop(40);
+ chart.getAxisLeft().setSpaceBottom(40);
chart.getAxisRight().setEnabled(false);
chart.getXAxis().setEnabled(false);
@@ -103,16 +99,11 @@ private void setupChart(LineChart chart, LineData data, int color) {
private LineData getData(int count, float range) {
- ArrayList xVals = new ArrayList();
- for (int i = 0; i < count; i++) {
- xVals.add(mMonths[i % 12]);
- }
-
ArrayList yVals = new ArrayList();
for (int i = 0; i < count; i++) {
float val = (float) (Math.random() * range) + 3;
- yVals.add(new Entry(val, i));
+ yVals.add(new Entry(i, val));
}
// create a dataset and give it a type
@@ -121,17 +112,15 @@ private LineData getData(int count, float range) {
// set1.setFillColor(Color.RED);
set1.setLineWidth(1.75f);
- set1.setCircleSize(3f);
+ set1.setCircleRadius(5f);
+ set1.setCircleHoleRadius(2.5f);
set1.setColor(Color.WHITE);
set1.setCircleColor(Color.WHITE);
set1.setHighLightColor(Color.WHITE);
set1.setDrawValues(false);
- ArrayList dataSets = new ArrayList();
- dataSets.add(set1); // add the datasets
-
// create a data object with the datasets
- LineData data = new LineData(xVals, dataSets);
+ LineData data = new LineData(set1);
return data;
}
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/LineChartTime.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/LineChartTime.java
new file mode 100644
index 0000000000..30e5e2a978
--- /dev/null
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/LineChartTime.java
@@ -0,0 +1,316 @@
+
+package com.xxmassdeveloper.mpchartexample;
+
+import android.graphics.Color;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.WindowManager;
+import android.widget.SeekBar;
+import android.widget.SeekBar.OnSeekBarChangeListener;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.github.mikephil.charting.charts.LineChart;
+import com.github.mikephil.charting.components.AxisBase;
+import com.github.mikephil.charting.components.Legend;
+import com.github.mikephil.charting.components.XAxis;
+import com.github.mikephil.charting.components.YAxis;
+import com.github.mikephil.charting.components.YAxis.AxisDependency;
+import com.github.mikephil.charting.data.Entry;
+import com.github.mikephil.charting.data.LineData;
+import com.github.mikephil.charting.data.LineDataSet;
+import com.github.mikephil.charting.formatter.IAxisValueFormatter;
+import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
+import com.github.mikephil.charting.utils.ColorTemplate;
+import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
+
+import java.sql.Time;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+public class LineChartTime extends DemoBase implements OnSeekBarChangeListener {
+
+ private LineChart mChart;
+ private SeekBar mSeekBarX;
+ private TextView tvX;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
+ WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ setContentView(R.layout.activity_linechart_time);
+
+ tvX = (TextView) findViewById(R.id.tvXMax);
+ mSeekBarX = (SeekBar) findViewById(R.id.seekBar1);
+ mSeekBarX.setProgress(100);
+ tvX.setText("100");
+
+ mSeekBarX.setOnSeekBarChangeListener(this);
+
+ mChart = (LineChart) findViewById(R.id.chart1);
+
+ // no description text
+ mChart.getDescription().setEnabled(false);
+
+ // enable touch gestures
+ mChart.setTouchEnabled(true);
+
+ mChart.setDragDecelerationFrictionCoef(0.9f);
+
+ // enable scaling and dragging
+ mChart.setDragEnabled(true);
+ mChart.setScaleEnabled(true);
+ mChart.setDrawGridBackground(false);
+ mChart.setHighlightPerDragEnabled(true);
+
+ // set an alternative background color
+ mChart.setBackgroundColor(Color.WHITE);
+ mChart.setViewPortOffsets(0f, 0f, 0f, 0f);
+
+ // add data
+ setData(100, 30);
+ mChart.invalidate();
+
+ // get the legend (only possible after setting data)
+ Legend l = mChart.getLegend();
+ l.setEnabled(false);
+
+ XAxis xAxis = mChart.getXAxis();
+ xAxis.setPosition(XAxis.XAxisPosition.TOP_INSIDE);
+ xAxis.setTypeface(mTfLight);
+ xAxis.setTextSize(10f);
+ xAxis.setTextColor(Color.WHITE);
+ xAxis.setDrawAxisLine(false);
+ xAxis.setDrawGridLines(true);
+ xAxis.setTextColor(Color.rgb(255, 192, 56));
+ xAxis.setCenterAxisLabels(true);
+ xAxis.setGranularity(1f); // one hour
+ xAxis.setValueFormatter(new IAxisValueFormatter() {
+
+ private SimpleDateFormat mFormat = new SimpleDateFormat("dd MMM HH:mm");
+
+ @Override
+ public String getFormattedValue(float value, AxisBase axis) {
+
+ long millis = TimeUnit.HOURS.toMillis((long) value);
+ return mFormat.format(new Date(millis));
+ }
+ });
+
+ YAxis leftAxis = mChart.getAxisLeft();
+ leftAxis.setPosition(YAxis.YAxisLabelPosition.INSIDE_CHART);
+ leftAxis.setTypeface(mTfLight);
+ leftAxis.setTextColor(ColorTemplate.getHoloBlue());
+ leftAxis.setDrawGridLines(true);
+ leftAxis.setGranularityEnabled(true);
+ leftAxis.setAxisMinimum(0f);
+ leftAxis.setAxisMaximum(170f);
+ leftAxis.setYOffset(-9f);
+ leftAxis.setTextColor(Color.rgb(255, 192, 56));
+
+ YAxis rightAxis = mChart.getAxisRight();
+ rightAxis.setEnabled(false);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.line, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+
+ switch (item.getItemId()) {
+ case R.id.actionToggleValues: {
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
+ set.setDrawValues(!set.isDrawValuesEnabled());
+ }
+
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionToggleHighlight: {
+ if (mChart.getData() != null) {
+ mChart.getData().setHighlightEnabled(!mChart.getData().isHighlightEnabled());
+ mChart.invalidate();
+ }
+ break;
+ }
+ case R.id.actionToggleFilled: {
+
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
+ if (set.isDrawFilledEnabled())
+ set.setDrawFilled(false);
+ else
+ set.setDrawFilled(true);
+ }
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionToggleCircles: {
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
+ if (set.isDrawCirclesEnabled())
+ set.setDrawCircles(false);
+ else
+ set.setDrawCircles(true);
+ }
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionToggleCubic: {
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
+ if (set.getMode() == LineDataSet.Mode.CUBIC_BEZIER)
+ set.setMode(LineDataSet.Mode.LINEAR);
+ else
+ set.setMode(LineDataSet.Mode.CUBIC_BEZIER);
+ }
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionToggleStepped: {
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
+ if (set.getMode() == LineDataSet.Mode.STEPPED)
+ set.setMode(LineDataSet.Mode.LINEAR);
+ else
+ set.setMode(LineDataSet.Mode.STEPPED);
+ }
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionTogglePinch: {
+ if (mChart.isPinchZoomEnabled())
+ mChart.setPinchZoom(false);
+ else
+ mChart.setPinchZoom(true);
+
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionToggleAutoScaleMinMax: {
+ mChart.setAutoScaleMinMaxEnabled(!mChart.isAutoScaleMinMaxEnabled());
+ mChart.notifyDataSetChanged();
+ break;
+ }
+ case R.id.animateX: {
+ mChart.animateX(3000);
+ break;
+ }
+ case R.id.animateY: {
+ mChart.animateY(3000);
+ break;
+ }
+ case R.id.animateXY: {
+ mChart.animateXY(3000, 3000);
+ break;
+ }
+
+ case R.id.actionSave: {
+ if (mChart.saveToPath("title" + System.currentTimeMillis(), "")) {
+ Toast.makeText(getApplicationContext(), "Saving SUCCESSFUL!",
+ Toast.LENGTH_SHORT).show();
+ } else
+ Toast.makeText(getApplicationContext(), "Saving FAILED!", Toast.LENGTH_SHORT)
+ .show();
+
+ // mChart.saveToGallery("title"+System.currentTimeMillis())
+ break;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+
+ tvX.setText("" + (mSeekBarX.getProgress()));
+
+ setData(mSeekBarX.getProgress(), 50);
+
+ // redraw
+ mChart.invalidate();
+ }
+
+ private void setData(int count, float range) {
+
+ // now in hours
+ long now = TimeUnit.MILLISECONDS.toHours(System.currentTimeMillis());
+
+ ArrayList values = new ArrayList();
+
+ float from = now;
+
+ // count = hours
+ float to = now + count;
+
+ // increment by 1 hour
+ for (float x = from; x < to; x++) {
+
+ float y = getRandom(range, 50);
+ values.add(new Entry(x, y)); // add one entry per hour
+ }
+
+ // create a dataset and give it a type
+ LineDataSet set1 = new LineDataSet(values, "DataSet 1");
+ set1.setAxisDependency(AxisDependency.LEFT);
+ set1.setColor(ColorTemplate.getHoloBlue());
+ set1.setValueTextColor(ColorTemplate.getHoloBlue());
+ set1.setLineWidth(1.5f);
+ set1.setDrawCircles(false);
+ set1.setDrawValues(false);
+ set1.setFillAlpha(65);
+ set1.setFillColor(ColorTemplate.getHoloBlue());
+ set1.setHighLightColor(Color.rgb(244, 117, 117));
+ set1.setDrawCircleHole(false);
+
+ // create a data object with the datasets
+ LineData data = new LineData(set1);
+ data.setValueTextColor(Color.WHITE);
+ data.setValueTextSize(9f);
+
+ // set data
+ mChart.setData(data);
+ }
+
+ @Override
+ public void onStartTrackingTouch(SeekBar seekBar) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void onStopTrackingTouch(SeekBar seekBar) {
+ // TODO Auto-generated method stub
+
+ }
+}
\ No newline at end of file
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/ListViewBarChartActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/ListViewBarChartActivity.java
index 258d509a42..7ee212ff60 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/ListViewBarChartActivity.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/ListViewBarChartActivity.java
@@ -19,6 +19,7 @@
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
+import com.github.mikephil.charting.interfaces.datasets.IBarDataSet;
import com.github.mikephil.charting.utils.ColorTemplate;
import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
@@ -55,12 +56,8 @@ protected void onCreate(Bundle savedInstanceState) {
private class ChartDataAdapter extends ArrayAdapter {
- private Typeface mTf;
-
public ChartDataAdapter(Context context, List objects) {
super(context, 0, objects);
-
- mTf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");
}
@Override
@@ -85,28 +82,29 @@ public View getView(int position, View convertView, ViewGroup parent) {
}
// apply styling
- data.setValueTypeface(mTf);
- holder.chart.setDescription("");
+ data.setValueTypeface(mTfLight);
+ data.setValueTextColor(Color.BLACK);
+ holder.chart.getDescription().setEnabled(false);
holder.chart.setDrawGridBackground(false);
- data.setValueTextColor(Color.WHITE);
XAxis xAxis = holder.chart.getXAxis();
xAxis.setPosition(XAxisPosition.BOTTOM);
- xAxis.setTypeface(mTf);
+ xAxis.setTypeface(mTfLight);
xAxis.setDrawGridLines(false);
YAxis leftAxis = holder.chart.getAxisLeft();
- leftAxis.setTypeface(mTf);
- leftAxis.setLabelCount(5);
+ leftAxis.setTypeface(mTfLight);
+ leftAxis.setLabelCount(5, false);
leftAxis.setSpaceTop(15f);
YAxis rightAxis = holder.chart.getAxisRight();
- rightAxis.setTypeface(mTf);
- rightAxis.setLabelCount(5);
+ rightAxis.setTypeface(mTfLight);
+ rightAxis.setLabelCount(5, false);
rightAxis.setSpaceTop(15f);
// set data
holder.chart.setData(data);
+ holder.chart.setFitBars(true);
// do not forget to refresh the chart
// holder.chart.invalidate();
@@ -131,37 +129,18 @@ private BarData generateData(int cnt) {
ArrayList entries = new ArrayList();
for (int i = 0; i < 12; i++) {
- entries.add(new BarEntry((int) (Math.random() * 70) + 30, i));
+ entries.add(new BarEntry(i, (float) (Math.random() * 70) + 30));
}
- BarDataSet d = new BarDataSet(entries, "New DataSet " + cnt);
- d.setBarSpacePercent(20f);
+ BarDataSet d = new BarDataSet(entries, "New DataSet " + cnt);
d.setColors(ColorTemplate.VORDIPLOM_COLORS);
d.setBarShadowColor(Color.rgb(203, 203, 203));
- ArrayList sets = new ArrayList();
+ ArrayList sets = new ArrayList();
sets.add(d);
- BarData cd = new BarData(getMonths(), sets);
+ BarData cd = new BarData(sets);
+ cd.setBarWidth(0.9f);
return cd;
}
-
- private ArrayList getMonths() {
-
- ArrayList m = new ArrayList();
- m.add("Jan");
- m.add("Feb");
- m.add("Mar");
- m.add("Apr");
- m.add("May");
- m.add("Jun");
- m.add("Jul");
- m.add("Aug");
- m.add("Sep");
- m.add("Okt");
- m.add("Nov");
- m.add("Dec");
-
- return m;
- }
}
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/ListViewMultiChartActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/ListViewMultiChartActivity.java
index 4a47000f90..0e273596fe 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/ListViewMultiChartActivity.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/ListViewMultiChartActivity.java
@@ -18,6 +18,8 @@
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
+import com.github.mikephil.charting.data.PieEntry;
+import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
import com.github.mikephil.charting.utils.ColorTemplate;
import com.xxmassdeveloper.mpchartexample.listviewitems.BarChartItem;
import com.xxmassdeveloper.mpchartexample.listviewitems.ChartItem;
@@ -97,34 +99,34 @@ private LineData generateDataLine(int cnt) {
ArrayList e1 = new ArrayList();
for (int i = 0; i < 12; i++) {
- e1.add(new Entry((int) (Math.random() * 65) + 40, i));
+ e1.add(new Entry(i, (int) (Math.random() * 65) + 40));
}
LineDataSet d1 = new LineDataSet(e1, "New DataSet " + cnt + ", (1)");
d1.setLineWidth(2.5f);
- d1.setCircleSize(4.5f);
+ d1.setCircleRadius(4.5f);
d1.setHighLightColor(Color.rgb(244, 117, 117));
d1.setDrawValues(false);
ArrayList e2 = new ArrayList();
for (int i = 0; i < 12; i++) {
- e2.add(new Entry(e1.get(i).getVal() - 30, i));
+ e2.add(new Entry(i, e1.get(i).getY() - 30));
}
LineDataSet d2 = new LineDataSet(e2, "New DataSet " + cnt + ", (2)");
d2.setLineWidth(2.5f);
- d2.setCircleSize(4.5f);
+ d2.setCircleRadius(4.5f);
d2.setHighLightColor(Color.rgb(244, 117, 117));
d2.setColor(ColorTemplate.VORDIPLOM_COLORS[0]);
d2.setCircleColor(ColorTemplate.VORDIPLOM_COLORS[0]);
d2.setDrawValues(false);
- ArrayList sets = new ArrayList();
+ ArrayList sets = new ArrayList();
sets.add(d1);
sets.add(d2);
- LineData cd = new LineData(getMonths(), sets);
+ LineData cd = new LineData(sets);
return cd;
}
@@ -138,15 +140,15 @@ private BarData generateDataBar(int cnt) {
ArrayList entries = new ArrayList();
for (int i = 0; i < 12; i++) {
- entries.add(new BarEntry((int) (Math.random() * 70) + 30, i));
+ entries.add(new BarEntry(i, (int) (Math.random() * 70) + 30));
}
BarDataSet d = new BarDataSet(entries, "New DataSet " + cnt);
- d.setBarSpacePercent(20f);
d.setColors(ColorTemplate.VORDIPLOM_COLORS);
d.setHighLightAlpha(255);
- BarData cd = new BarData(getMonths(), d);
+ BarData cd = new BarData(d);
+ cd.setBarWidth(0.9f);
return cd;
}
@@ -157,10 +159,10 @@ private BarData generateDataBar(int cnt) {
*/
private PieData generateDataPie(int cnt) {
- ArrayList entries = new ArrayList();
+ ArrayList entries = new ArrayList();
for (int i = 0; i < 4; i++) {
- entries.add(new Entry((int) (Math.random() * 70) + 30, i));
+ entries.add(new PieEntry((float) ((Math.random() * 70) + 30), "Quarter " + (i+1)));
}
PieDataSet d = new PieDataSet(entries, "");
@@ -169,37 +171,7 @@ private PieData generateDataPie(int cnt) {
d.setSliceSpace(2f);
d.setColors(ColorTemplate.VORDIPLOM_COLORS);
- PieData cd = new PieData(getQuarters(), d);
+ PieData cd = new PieData(d);
return cd;
}
-
- private ArrayList getQuarters() {
-
- ArrayList q = new ArrayList();
- q.add("1st Quarter");
- q.add("2nd Quarter");
- q.add("3rd Quarter");
- q.add("4th Quarter");
-
- return q;
- }
-
- private ArrayList getMonths() {
-
- ArrayList m = new ArrayList();
- m.add("Jan");
- m.add("Feb");
- m.add("Mar");
- m.add("Apr");
- m.add("May");
- m.add("Jun");
- m.add("Jul");
- m.add("Aug");
- m.add("Sep");
- m.add("Okt");
- m.add("Nov");
- m.add("Dec");
-
- return m;
- }
}
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/MultiLineChartActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/MultiLineChartActivity.java
index 666bc45006..19f7bae938 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/MultiLineChartActivity.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/MultiLineChartActivity.java
@@ -13,19 +13,17 @@
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.Legend.LegendPosition;
-import com.github.mikephil.charting.components.XAxis;
-import com.github.mikephil.charting.data.DataSet;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
-import com.github.mikephil.charting.data.filter.Approximator;
-import com.github.mikephil.charting.data.filter.Approximator.ApproximatorType;
+import com.github.mikephil.charting.highlight.Highlight;
+import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
import com.github.mikephil.charting.utils.ColorTemplate;
-import com.github.mikephil.charting.utils.Highlight;
import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
import java.util.ArrayList;
+import java.util.List;
public class MultiLineChartActivity extends DemoBase implements OnSeekBarChangeListener,
OnChartValueSelectedListener {
@@ -54,11 +52,14 @@ protected void onCreate(Bundle savedInstanceState) {
mChart.setOnChartValueSelectedListener(this);
mChart.setDrawGridBackground(false);
+ mChart.getDescription().setEnabled(false);
+ mChart.setDrawBorders(false);
- // mChart.setStartAtZero(true);
-
- // enable value highlighting
- mChart.setHighlightEnabled(true);
+ mChart.getAxisLeft().setEnabled(false);
+ mChart.getAxisRight().setDrawAxisLine(false);
+ mChart.getAxisRight().setDrawGridLines(false);
+ mChart.getXAxis().setDrawAxisLine(false);
+ mChart.getXAxis().setDrawGridLines(false);
// enable touch gestures
mChart.setTouchEnabled(true);
@@ -74,7 +75,10 @@ protected void onCreate(Bundle savedInstanceState) {
mSeekBarY.setProgress(100);
Legend l = mChart.getLegend();
- l.setPosition(LegendPosition.RIGHT_OF_CHART);
+ l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
+ l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
+ l.setOrientation(Legend.LegendOrientation.VERTICAL);
+ l.setDrawInside(false);
}
@Override
@@ -88,8 +92,14 @@ public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.actionToggleValues: {
- for (DataSet> set : mChart.getData().getDataSets())
+ List sets = mChart.getData()
+ .getDataSets();
+
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
set.setDrawValues(!set.isDrawValuesEnabled());
+ }
mChart.invalidate();
break;
@@ -103,19 +113,25 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.invalidate();
break;
}
+ case R.id.actionToggleAutoScaleMinMax: {
+ mChart.setAutoScaleMinMaxEnabled(!mChart.isAutoScaleMinMaxEnabled());
+ mChart.notifyDataSetChanged();
+ break;
+ }
case R.id.actionToggleHighlight: {
- if (mChart.isHighlightEnabled())
- mChart.setHighlightEnabled(false);
- else
- mChart.setHighlightEnabled(true);
- mChart.invalidate();
+ if(mChart.getData() != null) {
+ mChart.getData().setHighlightEnabled(!mChart.getData().isHighlightEnabled());
+ mChart.invalidate();
+ }
break;
}
case R.id.actionToggleFilled: {
- ArrayList sets = (ArrayList) mChart.getData()
+ List sets = mChart.getData()
.getDataSets();
- for (LineDataSet set : sets) {
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
if (set.isDrawFilledEnabled())
set.setDrawFilled(false);
else
@@ -125,10 +141,12 @@ public boolean onOptionsItemSelected(MenuItem item) {
break;
}
case R.id.actionToggleCircles: {
- ArrayList sets = (ArrayList) mChart.getData()
+ List sets = mChart.getData()
.getDataSets();
- for (LineDataSet set : sets) {
+ for (ILineDataSet iSet : sets) {
+
+ LineDataSet set = (LineDataSet) iSet;
if (set.isDrawCirclesEnabled())
set.setDrawCircles(false);
else
@@ -137,36 +155,6 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.invalidate();
break;
}
- case R.id.actionToggleFilter: {
-
- // the angle of filtering is 35°
- Approximator a = new Approximator(ApproximatorType.DOUGLAS_PEUCKER, 35);
-
- if (!mChart.isFilteringEnabled()) {
- mChart.enableFiltering(a);
- } else {
- mChart.disableFiltering();
- }
- mChart.invalidate();
- break;
- }
- case R.id.actionToggleStartzero: {
- mChart.getAxisLeft().setStartAtZero(!mChart.getAxisLeft().isStartAtZeroEnabled());
- mChart.getAxisRight().setStartAtZero(!mChart.getAxisRight().isStartAtZeroEnabled());
- mChart.invalidate();
- break;
- }
- case R.id.actionToggleAdjustXLegend: {
- XAxis xLabels = mChart.getXAxis();
-
- if (xLabels.isAdjustXLabelsEnabled())
- xLabels.setAdjustXLabels(false);
- else
- xLabels.setAdjustXLabels(true);
-
- mChart.invalidate();
- break;
- }
case R.id.actionSave: {
// mChart.saveToGallery("title"+System.currentTimeMillis());
mChart.saveToPath("title" + System.currentTimeMillis(), "");
@@ -197,16 +185,13 @@ public boolean onOptionsItemSelected(MenuItem item) {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+
+ mChart.resetTracking();
tvX.setText("" + (mSeekBarX.getProgress()));
tvY.setText("" + (mSeekBarY.getProgress()));
- ArrayList xVals = new ArrayList();
- for (int i = 0; i < mSeekBarX.getProgress(); i++) {
- xVals.add((i) + "");
- }
-
- ArrayList dataSets = new ArrayList();
+ ArrayList dataSets = new ArrayList();
for (int z = 0; z < 3; z++) {
@@ -214,12 +199,12 @@ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
for (int i = 0; i < mSeekBarX.getProgress(); i++) {
double val = (Math.random() * mSeekBarY.getProgress()) + 3;
- values.add(new Entry((float) val, i));
+ values.add(new Entry(i, (float) val));
}
LineDataSet d = new LineDataSet(values, "DataSet " + (z + 1));
d.setLineWidth(2.5f);
- d.setCircleSize(4f);
+ d.setCircleRadius(4f);
int color = mColors[z % mColors.length];
d.setColor(color);
@@ -228,20 +213,20 @@ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
// make the first DataSet dashed
- dataSets.get(0).enableDashedLine(10, 10, 0);
- dataSets.get(0).setColors(ColorTemplate.VORDIPLOM_COLORS);
- dataSets.get(0).setCircleColors(ColorTemplate.VORDIPLOM_COLORS);
+ ((LineDataSet) dataSets.get(0)).enableDashedLine(10, 10, 0);
+ ((LineDataSet) dataSets.get(0)).setColors(ColorTemplate.VORDIPLOM_COLORS);
+ ((LineDataSet) dataSets.get(0)).setCircleColors(ColorTemplate.VORDIPLOM_COLORS);
- LineData data = new LineData(xVals, dataSets);
+ LineData data = new LineData(dataSets);
mChart.setData(data);
mChart.invalidate();
}
@Override
- public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
+ public void onValueSelected(Entry e, Highlight h) {
Log.i("VAL SELECTED",
- "Value: " + e.getVal() + ", xIndex: " + e.getXIndex()
- + ", DataSet index: " + dataSetIndex);
+ "Value: " + e.getY() + ", xIndex: " + e.getX()
+ + ", DataSet index: " + h.getDataSetIndex());
}
@Override
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PerformanceLineChart.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PerformanceLineChart.java
index 300ab09aa2..0763f7f88a 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PerformanceLineChart.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PerformanceLineChart.java
@@ -42,11 +42,7 @@ protected void onCreate(Bundle savedInstanceState) {
mChart.setDrawGridBackground(false);
// no description text
- mChart.setDescription("");
- mChart.setNoDataTextDescription("You need to provide data for the chart.");
-
- // disable value highlighting
- mChart.setHighlightEnabled(false);
+ mChart.getDescription().setEnabled(false);
// enable touch gestures
mChart.setTouchEnabled(true);
@@ -57,14 +53,10 @@ protected void onCreate(Bundle savedInstanceState) {
// if disabled, scaling can be done on x- and y-axis separately
mChart.setPinchZoom(false);
-
- // enable/disable highlight indicators (the lines that indicate the
- // highlighted Entry)
- mChart.setHighlightIndicatorEnabled(false);
mChart.getAxisLeft().setDrawGridLines(false);
mChart.getAxisRight().setEnabled(false);
- mChart.getXAxis().setDrawGridLines(false);
+ mChart.getXAxis().setDrawGridLines(true);
mChart.getXAxis().setDrawAxisLine(false);
// dont forget to refresh the drawing
@@ -74,9 +66,12 @@ protected void onCreate(Bundle savedInstanceState) {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- mTvCount.setText("" + (mSeekBarValues.getProgress()));
+ int count = mSeekBarValues.getProgress() + 1000;
+ mTvCount.setText("" + count);
+
+ mChart.resetTracking();
- setData(mSeekBarValues.getProgress(), 500f);
+ setData(count, 500f);
// redraw
mChart.invalidate();
@@ -96,11 +91,6 @@ public void onStopTrackingTouch(SeekBar seekBar) {
private void setData(int count, float range) {
- ArrayList xVals = new ArrayList();
- for (int i = 0; i < count; i++) {
- xVals.add((i) + "");
- }
-
ArrayList yVals = new ArrayList();
for (int i = 0; i < count; i++) {
@@ -108,19 +98,21 @@ private void setData(int count, float range) {
float val = (float) (Math.random() * mult) + 3;// + (float)
// ((mult *
// 0.1) / 10);
- yVals.add(new Entry(val, i));
+ yVals.add(new Entry(i * 0.001f, val));
}
// create a dataset and give it a type
LineDataSet set1 = new LineDataSet(yVals, "DataSet 1");
set1.setColor(Color.BLACK);
- set1.setLineWidth(1f);
+ set1.setLineWidth(0.5f);
set1.setDrawValues(false);
set1.setDrawCircles(false);
+ set1.setMode(LineDataSet.Mode.LINEAR);
+ set1.setDrawFilled(false);
// create a data object with the datasets
- LineData data = new LineData(xVals, set1);
+ LineData data = new LineData(set1);
// set data
mChart.setData(data);
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PieChartActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PieChartActivity.java
index fa8c91483c..085580a923 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PieChartActivity.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PieChartActivity.java
@@ -4,6 +4,10 @@
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Bundle;
+import android.text.SpannableString;
+import android.text.style.ForegroundColorSpan;
+import android.text.style.RelativeSizeSpan;
+import android.text.style.StyleSpan;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@@ -12,17 +16,20 @@
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
+import com.github.mikephil.charting.animation.Easing;
import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.Legend.LegendPosition;
-import com.github.mikephil.charting.data.DataSet;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
+import com.github.mikephil.charting.data.PieEntry;
+import com.github.mikephil.charting.formatter.PercentFormatter;
+import com.github.mikephil.charting.highlight.Highlight;
+import com.github.mikephil.charting.interfaces.datasets.IDataSet;
import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
import com.github.mikephil.charting.utils.ColorTemplate;
-import com.github.mikephil.charting.utils.Highlight;
-import com.github.mikephil.charting.utils.PercentFormatter;
+import com.github.mikephil.charting.utils.MPPointF;
import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
import java.util.ArrayList;
@@ -33,8 +40,6 @@ public class PieChartActivity extends DemoBase implements OnSeekBarChangeListene
private PieChart mChart;
private SeekBar mSeekBarX, mSeekBarY;
private TextView tvX, tvY;
-
- private Typeface tf;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -48,53 +53,62 @@ protected void onCreate(Bundle savedInstanceState) {
mSeekBarX = (SeekBar) findViewById(R.id.seekBar1);
mSeekBarY = (SeekBar) findViewById(R.id.seekBar2);
-
+ mSeekBarX.setProgress(4);
mSeekBarY.setProgress(10);
- mSeekBarX.setOnSeekBarChangeListener(this);
- mSeekBarY.setOnSeekBarChangeListener(this);
-
mChart = (PieChart) findViewById(R.id.chart1);
mChart.setUsePercentValues(true);
+ mChart.getDescription().setEnabled(false);
+ mChart.setExtraOffsets(5, 10, 5, 5);
- // change the color of the center-hole
- // mChart.setHoleColor(Color.rgb(235, 235, 235));
- mChart.setHoleColorTransparent(true);
+ mChart.setDragDecelerationFrictionCoef(0.95f);
- tf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");
+ mChart.setCenterTextTypeface(mTfLight);
+ mChart.setCenterText(generateCenterSpannableText());
- mChart.setCenterTextTypeface(Typeface.createFromAsset(getAssets(), "OpenSans-Light.ttf"));
+ mChart.setDrawHoleEnabled(true);
+ mChart.setHoleColor(Color.WHITE);
- mChart.setHoleRadius(60f);
+ mChart.setTransparentCircleColor(Color.WHITE);
+ mChart.setTransparentCircleAlpha(110);
- mChart.setDescription("");
+ mChart.setHoleRadius(58f);
+ mChart.setTransparentCircleRadius(61f);
mChart.setDrawCenterText(true);
- mChart.setDrawHoleEnabled(true);
-
mChart.setRotationAngle(0);
// enable rotation of the chart by touch
mChart.setRotationEnabled(true);
+ mChart.setHighlightPerTapEnabled(true);
// mChart.setUnit(" €");
// mChart.setDrawUnitsInChart(true);
// add a selection listener
mChart.setOnChartValueSelectedListener(this);
- // mChart.setTouchEnabled(false);
-
- mChart.setCenterText("MPAndroidChart\nLibrary");
- setData(3, 100);
+ setData(4, 100);
- mChart.animateXY(1500, 1500);
+ mChart.animateY(1400, Easing.EasingOption.EaseInOutQuad);
// mChart.spin(2000, 0, 360);
+ mSeekBarX.setOnSeekBarChangeListener(this);
+ mSeekBarY.setOnSeekBarChangeListener(this);
+
Legend l = mChart.getLegend();
- l.setPosition(LegendPosition.RIGHT_OF_CHART);
+ l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
+ l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
+ l.setOrientation(Legend.LegendOrientation.VERTICAL);
+ l.setDrawInside(false);
l.setXEntrySpace(7f);
- l.setYEntrySpace(5f);
+ l.setYEntrySpace(0f);
+ l.setYOffset(0f);
+
+ // entry label styling
+ mChart.setEntryLabelColor(Color.WHITE);
+ mChart.setEntryLabelTypeface(mTfRegular);
+ mChart.setEntryLabelTextSize(12f);
}
@Override
@@ -108,12 +122,19 @@ public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.actionToggleValues: {
- for (DataSet> set : mChart.getData().getDataSets())
+ for (IDataSet> set : mChart.getData().getDataSets())
set.setDrawValues(!set.isDrawValuesEnabled());
mChart.invalidate();
break;
}
+ case R.id.actionToggleIcons: {
+ for (IDataSet> set : mChart.getData().getDataSets())
+ set.setDrawIcons(!set.isDrawIconsEnabled());
+
+ mChart.invalidate();
+ break;
+ }
case R.id.actionToggleHole: {
if (mChart.isDrawHoleEnabled())
mChart.setDrawHoleEnabled(false);
@@ -132,7 +153,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
}
case R.id.actionToggleXVals: {
- mChart.setDrawSliceText(!mChart.isDrawSliceTextEnabled());
+ mChart.setDrawEntryLabels(!mChart.isDrawEntryLabelsEnabled());
mChart.invalidate();
break;
}
@@ -146,15 +167,20 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.invalidate();
break;
case R.id.animateX: {
- mChart.animateX(1800);
+ mChart.animateX(1400);
break;
}
case R.id.animateY: {
- mChart.animateY(1800);
+ mChart.animateY(1400);
break;
}
case R.id.animateXY: {
- mChart.animateXY(1800, 1800);
+ mChart.animateXY(1400, 1400);
+ break;
+ }
+ case R.id.actionToggleSpin: {
+ mChart.spin(1000, mChart.getRotationAngle(), mChart.getRotationAngle() + 360, Easing.EasingOption
+ .EaseInCubic);
break;
}
}
@@ -164,7 +190,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- tvX.setText("" + (mSeekBarX.getProgress() + 1));
+ tvX.setText("" + (mSeekBarX.getProgress()));
tvY.setText("" + (mSeekBarY.getProgress()));
setData(mSeekBarX.getProgress(), mSeekBarY.getProgress());
@@ -174,22 +200,23 @@ private void setData(int count, float range) {
float mult = range;
- ArrayList yVals1 = new ArrayList();
+ ArrayList entries = new ArrayList();
- // IMPORTANT: In a PieChart, no values (Entry) should have the same
- // xIndex (even if from different DataSets), since no values can be
- // drawn above each other.
- for (int i = 0; i < count + 1; i++) {
- yVals1.add(new Entry((float) (Math.random() * mult) + mult / 5, i));
+ // NOTE: The order of the entries when being added to the entries array determines their position around the center of
+ // the chart.
+ for (int i = 0; i < count ; i++) {
+ entries.add(new PieEntry((float) ((Math.random() * mult) + mult / 5),
+ mParties[i % mParties.length],
+ getResources().getDrawable(R.drawable.star)));
}
- ArrayList xVals = new ArrayList();
+ PieDataSet dataSet = new PieDataSet(entries, "Election Results");
- for (int i = 0; i < count + 1; i++)
- xVals.add(mParties[i % mParties.length]);
+ dataSet.setDrawIcons(false);
- PieDataSet dataSet = new PieDataSet(yVals1, "Election Results");
dataSet.setSliceSpace(3f);
+ dataSet.setIconsOffset(new MPPointF(0, 40));
+ dataSet.setSelectionShift(5f);
// add a lot of colors
@@ -213,12 +240,13 @@ private void setData(int count, float range) {
colors.add(ColorTemplate.getHoloBlue());
dataSet.setColors(colors);
+ //dataSet.setSelectionShift(0f);
- PieData data = new PieData(xVals, dataSet);
+ PieData data = new PieData(dataSet);
data.setValueFormatter(new PercentFormatter());
data.setValueTextSize(11f);
data.setValueTextColor(Color.WHITE);
- data.setValueTypeface(tf);
+ data.setValueTypeface(mTfLight);
mChart.setData(data);
// undo all highlights
@@ -227,14 +255,26 @@ private void setData(int count, float range) {
mChart.invalidate();
}
+ private SpannableString generateCenterSpannableText() {
+
+ SpannableString s = new SpannableString("MPAndroidChart\ndeveloped by Philipp Jahoda");
+ s.setSpan(new RelativeSizeSpan(1.7f), 0, 14, 0);
+ s.setSpan(new StyleSpan(Typeface.NORMAL), 14, s.length() - 15, 0);
+ s.setSpan(new ForegroundColorSpan(Color.GRAY), 14, s.length() - 15, 0);
+ s.setSpan(new RelativeSizeSpan(.8f), 14, s.length() - 15, 0);
+ s.setSpan(new StyleSpan(Typeface.ITALIC), s.length() - 14, s.length(), 0);
+ s.setSpan(new ForegroundColorSpan(ColorTemplate.getHoloBlue()), s.length() - 14, s.length(), 0);
+ return s;
+ }
+
@Override
- public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
+ public void onValueSelected(Entry e, Highlight h) {
if (e == null)
return;
Log.i("VAL SELECTED",
- "Value: " + e.getVal() + ", xIndex: " + e.getXIndex()
- + ", DataSet index: " + dataSetIndex);
+ "Value: " + e.getY() + ", index: " + h.getX()
+ + ", DataSet index: " + h.getDataSetIndex());
}
@Override
@@ -253,46 +293,4 @@ public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
-
- // private void removeLastEntry() {
- //
- // PieData data = mChart.getDataOriginal();
- //
- // if (data != null) {
- //
- // PieDataSet set = data.getDataSet();
- //
- // if (set != null) {
- //
- // Entry e = set.getEntryForXIndex(set.getEntryCount() - 1);
- //
- // data.removeEntry(e, 0);
- // // or remove by index
- // // mData.removeEntry(xIndex, dataSetIndex);
- //
- // mChart.notifyDataSetChanged();
- // mChart.invalidate();
- // }
- // }
- // }
- //
- // private void addEntry() {
- //
- // PieData data = mChart.getDataOriginal();
- //
- // if (data != null) {
- //
- // PieDataSet set = data.getDataSet();
- // // set.addEntry(...);
- //
- // data.addEntry(new Entry((float) (Math.random() * 25) + 20f,
- // set.getEntryCount()), 0);
- //
- // // let the chart know it's data has changed
- // mChart.notifyDataSetChanged();
- //
- // // redraw the chart
- // mChart.invalidate();
- // }
- // }
}
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PiePolylineChartActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PiePolylineChartActivity.java
new file mode 100644
index 0000000000..49fc4959e9
--- /dev/null
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PiePolylineChartActivity.java
@@ -0,0 +1,283 @@
+
+package com.xxmassdeveloper.mpchartexample;
+
+import android.graphics.Color;
+import android.graphics.Typeface;
+import android.os.Bundle;
+import android.text.SpannableString;
+import android.text.style.ForegroundColorSpan;
+import android.text.style.RelativeSizeSpan;
+import android.text.style.StyleSpan;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.WindowManager;
+import android.widget.SeekBar;
+import android.widget.SeekBar.OnSeekBarChangeListener;
+import android.widget.TextView;
+
+import com.github.mikephil.charting.animation.Easing;
+import com.github.mikephil.charting.charts.PieChart;
+import com.github.mikephil.charting.components.Legend;
+import com.github.mikephil.charting.components.Legend.LegendPosition;
+import com.github.mikephil.charting.data.Entry;
+import com.github.mikephil.charting.data.PieData;
+import com.github.mikephil.charting.data.PieDataSet;
+import com.github.mikephil.charting.data.PieEntry;
+import com.github.mikephil.charting.formatter.PercentFormatter;
+import com.github.mikephil.charting.highlight.Highlight;
+import com.github.mikephil.charting.interfaces.datasets.IDataSet;
+import com.github.mikephil.charting.listener.OnChartValueSelectedListener;
+import com.github.mikephil.charting.utils.ColorTemplate;
+import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
+
+import java.util.ArrayList;
+
+public class PiePolylineChartActivity extends DemoBase implements OnSeekBarChangeListener,
+ OnChartValueSelectedListener {
+
+ private PieChart mChart;
+ private SeekBar mSeekBarX, mSeekBarY;
+ private TextView tvX, tvY;
+
+ private Typeface tf;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
+ WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ setContentView(R.layout.activity_piechart);
+
+ tvX = (TextView) findViewById(R.id.tvXMax);
+ tvY = (TextView) findViewById(R.id.tvYMax);
+
+ mSeekBarX = (SeekBar) findViewById(R.id.seekBar1);
+ mSeekBarY = (SeekBar) findViewById(R.id.seekBar2);
+
+ mSeekBarY.setProgress(10);
+
+ mSeekBarX.setOnSeekBarChangeListener(this);
+ mSeekBarY.setOnSeekBarChangeListener(this);
+
+ mChart = (PieChart) findViewById(R.id.chart1);
+ mChart.setUsePercentValues(true);
+ mChart.getDescription().setEnabled(false);
+ mChart.setExtraOffsets(5, 10, 5, 5);
+
+ mChart.setDragDecelerationFrictionCoef(0.95f);
+
+ tf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");
+
+ mChart.setCenterTextTypeface(Typeface.createFromAsset(getAssets(), "OpenSans-Light.ttf"));
+ mChart.setCenterText(generateCenterSpannableText());
+
+ mChart.setExtraOffsets(20.f, 0.f, 20.f, 0.f);
+
+ mChart.setDrawHoleEnabled(true);
+ mChart.setHoleColor(Color.WHITE);
+
+ mChart.setTransparentCircleColor(Color.WHITE);
+ mChart.setTransparentCircleAlpha(110);
+
+ mChart.setHoleRadius(58f);
+ mChart.setTransparentCircleRadius(61f);
+
+ mChart.setDrawCenterText(true);
+
+ mChart.setRotationAngle(0);
+ // enable rotation of the chart by touch
+ mChart.setRotationEnabled(true);
+ mChart.setHighlightPerTapEnabled(true);
+
+ // mChart.setUnit(" €");
+ // mChart.setDrawUnitsInChart(true);
+
+ // add a selection listener
+ mChart.setOnChartValueSelectedListener(this);
+
+ setData(4, 100);
+
+ mChart.animateY(1400, Easing.EasingOption.EaseInOutQuad);
+ // mChart.spin(2000, 0, 360);
+
+ Legend l = mChart.getLegend();
+ l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
+ l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
+ l.setOrientation(Legend.LegendOrientation.VERTICAL);
+ l.setDrawInside(false);
+ l.setEnabled(false);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.pie, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+
+ switch (item.getItemId()) {
+ case R.id.actionToggleValues: {
+ for (IDataSet> set : mChart.getData().getDataSets())
+ set.setDrawValues(!set.isDrawValuesEnabled());
+
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionToggleHole: {
+ if (mChart.isDrawHoleEnabled())
+ mChart.setDrawHoleEnabled(false);
+ else
+ mChart.setDrawHoleEnabled(true);
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionDrawCenter: {
+ if (mChart.isDrawCenterTextEnabled())
+ mChart.setDrawCenterText(false);
+ else
+ mChart.setDrawCenterText(true);
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionToggleXVals: {
+
+ mChart.setDrawEntryLabels(!mChart.isDrawEntryLabelsEnabled());
+ mChart.invalidate();
+ break;
+ }
+ case R.id.actionSave: {
+ // mChart.saveToGallery("title"+System.currentTimeMillis());
+ mChart.saveToPath("title" + System.currentTimeMillis(), "");
+ break;
+ }
+ case R.id.actionTogglePercent:
+ mChart.setUsePercentValues(!mChart.isUsePercentValuesEnabled());
+ mChart.invalidate();
+ break;
+ case R.id.animateX: {
+ mChart.animateX(1400);
+ break;
+ }
+ case R.id.animateY: {
+ mChart.animateY(1400);
+ break;
+ }
+ case R.id.animateXY: {
+ mChart.animateXY(1400, 1400);
+ break;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+
+ tvX.setText("" + (mSeekBarX.getProgress()));
+ tvY.setText("" + (mSeekBarY.getProgress()));
+
+ setData(mSeekBarX.getProgress(), mSeekBarY.getProgress());
+ }
+
+ private void setData(int count, float range) {
+
+ float mult = range;
+
+ ArrayList entries = new ArrayList();
+
+ // NOTE: The order of the entries when being added to the entries array determines their position around the center of
+ // the chart.
+ for (int i = 0; i < count; i++) {
+ entries.add(new PieEntry((float) (Math.random() * mult) + mult / 5, mParties[i % mParties.length]));
+ }
+
+ PieDataSet dataSet = new PieDataSet(entries, "Election Results");
+ dataSet.setSliceSpace(3f);
+ dataSet.setSelectionShift(5f);
+
+ // add a lot of colors
+
+ ArrayList colors = new ArrayList();
+
+ for (int c : ColorTemplate.VORDIPLOM_COLORS)
+ colors.add(c);
+
+ for (int c : ColorTemplate.JOYFUL_COLORS)
+ colors.add(c);
+
+ for (int c : ColorTemplate.COLORFUL_COLORS)
+ colors.add(c);
+
+ for (int c : ColorTemplate.LIBERTY_COLORS)
+ colors.add(c);
+
+ for (int c : ColorTemplate.PASTEL_COLORS)
+ colors.add(c);
+
+ colors.add(ColorTemplate.getHoloBlue());
+
+ dataSet.setColors(colors);
+ //dataSet.setSelectionShift(0f);
+
+
+ dataSet.setValueLinePart1OffsetPercentage(80.f);
+ dataSet.setValueLinePart1Length(0.2f);
+ dataSet.setValueLinePart2Length(0.4f);
+ //dataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
+ dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
+
+ PieData data = new PieData(dataSet);
+ data.setValueFormatter(new PercentFormatter());
+ data.setValueTextSize(11f);
+ data.setValueTextColor(Color.BLACK);
+ data.setValueTypeface(tf);
+ mChart.setData(data);
+
+ // undo all highlights
+ mChart.highlightValues(null);
+
+ mChart.invalidate();
+ }
+
+ private SpannableString generateCenterSpannableText() {
+
+ SpannableString s = new SpannableString("MPAndroidChart\ndeveloped by Philipp Jahoda");
+ s.setSpan(new RelativeSizeSpan(1.5f), 0, 14, 0);
+ s.setSpan(new StyleSpan(Typeface.NORMAL), 14, s.length() - 15, 0);
+ s.setSpan(new ForegroundColorSpan(Color.GRAY), 14, s.length() - 15, 0);
+ s.setSpan(new RelativeSizeSpan(.65f), 14, s.length() - 15, 0);
+ s.setSpan(new StyleSpan(Typeface.ITALIC), s.length() - 14, s.length(), 0);
+ s.setSpan(new ForegroundColorSpan(ColorTemplate.getHoloBlue()), s.length() - 14, s.length(), 0);
+ return s;
+ }
+
+ @Override
+ public void onValueSelected(Entry e, Highlight h) {
+
+ if (e == null)
+ return;
+ Log.i("VAL SELECTED",
+ "Value: " + e.getY() + ", xIndex: " + e.getX()
+ + ", DataSet index: " + h.getDataSetIndex());
+ }
+
+ @Override
+ public void onNothingSelected() {
+ Log.i("PieChart", "nothing selected");
+ }
+
+ @Override
+ public void onStartTrackingTouch(SeekBar seekBar) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void onStopTrackingTouch(SeekBar seekBar) {
+ // TODO Auto-generated method stub
+
+ }
+}
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/RadarChartActivitry.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/RadarChartActivitry.java
index b8e91db183..937973fe4e 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/RadarChartActivitry.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/RadarChartActivitry.java
@@ -1,24 +1,29 @@
package com.xxmassdeveloper.mpchartexample;
-import android.graphics.Typeface;
+import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.WindowManager;
+import android.widget.TextView;
import android.widget.Toast;
+import com.github.mikephil.charting.animation.Easing;
import com.github.mikephil.charting.charts.RadarChart;
+import com.github.mikephil.charting.components.AxisBase;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.Legend.LegendPosition;
+import com.github.mikephil.charting.components.MarkerView;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
-import com.github.mikephil.charting.data.DataSet;
-import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.RadarData;
import com.github.mikephil.charting.data.RadarDataSet;
-import com.github.mikephil.charting.utils.ColorTemplate;
-import com.xxmassdeveloper.mpchartexample.custom.MyMarkerView;
+import com.github.mikephil.charting.data.RadarEntry;
+import com.github.mikephil.charting.formatter.IAxisValueFormatter;
+import com.github.mikephil.charting.interfaces.datasets.IDataSet;
+import com.github.mikephil.charting.interfaces.datasets.IRadarDataSet;
+import com.xxmassdeveloper.mpchartexample.custom.RadarMarkerView;
import com.xxmassdeveloper.mpchartexample.notimportant.DemoBase;
import java.util.ArrayList;
@@ -26,49 +31,76 @@
public class RadarChartActivitry extends DemoBase {
private RadarChart mChart;
- private Typeface tf;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
- setContentView(R.layout.activity_radarchart);
+ setContentView(R.layout.activity_radarchart_noseekbar);
- mChart = (RadarChart) findViewById(R.id.chart1);
+ TextView tv = (TextView) findViewById(R.id.textView);
+ tv.setTypeface(mTfLight);
+ tv.setTextColor(Color.WHITE);
+ tv.setBackgroundColor(Color.rgb(60, 65, 82));
- tf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");
+ mChart = (RadarChart) findViewById(R.id.chart1);
+ mChart.setBackgroundColor(Color.rgb(60, 65, 82));
- mChart.setDescription("");
+ mChart.getDescription().setEnabled(false);
- mChart.setWebLineWidth(1.5f);
- mChart.setWebLineWidthInner(0.75f);
+ mChart.setWebLineWidth(1f);
+ mChart.setWebColor(Color.LTGRAY);
+ mChart.setWebLineWidthInner(1f);
+ mChart.setWebColorInner(Color.LTGRAY);
mChart.setWebAlpha(100);
// create a custom MarkerView (extend MarkerView) and specify the layout
// to use for it
- MyMarkerView mv = new MyMarkerView(this, R.layout.custom_marker_view);
-
- // set the marker to the chart
- mChart.setMarkerView(mv);
+ MarkerView mv = new RadarMarkerView(this, R.layout.radar_markerview);
+ mv.setChartView(mChart); // For bounds control
+ mChart.setMarker(mv); // Set the marker to the chart
setData();
+ mChart.animateXY(
+ 1400, 1400,
+ Easing.EasingOption.EaseInOutQuad,
+ Easing.EasingOption.EaseInOutQuad);
+
XAxis xAxis = mChart.getXAxis();
- xAxis.setTypeface(tf);
+ xAxis.setTypeface(mTfLight);
xAxis.setTextSize(9f);
+ xAxis.setYOffset(0f);
+ xAxis.setXOffset(0f);
+ xAxis.setValueFormatter(new IAxisValueFormatter() {
+
+ private String[] mActivities = new String[]{"Burger", "Steak", "Salad", "Pasta", "Pizza"};
+
+ @Override
+ public String getFormattedValue(float value, AxisBase axis) {
+ return mActivities[(int) value % mActivities.length];
+ }
+ });
+ xAxis.setTextColor(Color.WHITE);
YAxis yAxis = mChart.getYAxis();
- yAxis.setTypeface(tf);
- yAxis.setLabelCount(5);
+ yAxis.setTypeface(mTfLight);
+ yAxis.setLabelCount(5, false);
yAxis.setTextSize(9f);
- yAxis.setStartAtZero(true);
+ yAxis.setAxisMinimum(0f);
+ yAxis.setAxisMaximum(80f);
+ yAxis.setDrawLabels(false);
Legend l = mChart.getLegend();
- l.setPosition(LegendPosition.RIGHT_OF_CHART);
- l.setTypeface(tf);
+ l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
+ l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
+ l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
+ l.setDrawInside(false);
+ l.setTypeface(mTfLight);
l.setXEntrySpace(7f);
l.setYEntrySpace(5f);
+ l.setTextColor(Color.WHITE);
}
@Override
@@ -82,18 +114,17 @@ public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.actionToggleValues: {
- for (DataSet> set : mChart.getData().getDataSets())
+ for (IDataSet> set : mChart.getData().getDataSets())
set.setDrawValues(!set.isDrawValuesEnabled());
mChart.invalidate();
break;
}
case R.id.actionToggleHighlight: {
- if (mChart.isHighlightEnabled())
- mChart.setHighlightEnabled(false);
- else
- mChart.setHighlightEnabled(true);
- mChart.invalidate();
+ if (mChart.getData() != null) {
+ mChart.getData().setHighlightEnabled(!mChart.getData().isHighlightEnabled());
+ mChart.invalidate();
+ }
break;
}
case R.id.actionToggleRotate: {
@@ -106,10 +137,10 @@ public boolean onOptionsItemSelected(MenuItem item) {
}
case R.id.actionToggleFilled: {
- ArrayList sets = (ArrayList) mChart.getData()
+ ArrayList sets = (ArrayList) mChart.getData()
.getDataSets();
- for (RadarDataSet set : sets) {
+ for (IRadarDataSet set : sets) {
if (set.isDrawFilledEnabled())
set.setDrawFilled(false);
else
@@ -118,6 +149,17 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.invalidate();
break;
}
+ case R.id.actionToggleHighlightCircle: {
+
+ ArrayList sets = (ArrayList) mChart.getData()
+ .getDataSets();
+
+ for (IRadarDataSet set : sets) {
+ set.setDrawHighlightCircleEnabled(!set.isDrawHighlightCircleEnabled());
+ }
+ mChart.invalidate();
+ break;
+ }
case R.id.actionSave: {
if (mChart.saveToPath("title" + System.currentTimeMillis(), "")) {
Toast.makeText(getApplicationContext(), "Saving SUCCESSFUL!",
@@ -129,6 +171,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
}
case R.id.actionToggleXLabels: {
mChart.getXAxis().setEnabled(!mChart.getXAxis().isEnabled());
+ mChart.notifyDataSetChanged();
mChart.invalidate();
break;
}
@@ -138,64 +181,75 @@ public boolean onOptionsItemSelected(MenuItem item) {
mChart.invalidate();
break;
}
+ case R.id.animateX: {
+ mChart.animateX(1400);
+ break;
+ }
+ case R.id.animateY: {
+ mChart.animateY(1400);
+ break;
+ }
+ case R.id.animateXY: {
+ mChart.animateXY(1400, 1400);
+ break;
+ }
case R.id.actionToggleSpin: {
- mChart.spin(2000, mChart.getRotationAngle(), mChart.getRotationAngle() + 360);
+ mChart.spin(2000, mChart.getRotationAngle(), mChart.getRotationAngle() + 360, Easing.EasingOption
+ .EaseInCubic);
break;
}
}
return true;
}
- private String[] mParties = new String[] {
- "Party A", "Party B", "Party C", "Party D", "Party E", "Party F", "Party G", "Party H",
- "Party I"
- };
-
public void setData() {
- float mult = 150;
- int cnt = 9;
+ float mult = 80;
+ float min = 20;
+ int cnt = 5;
- ArrayList yVals1 = new ArrayList();
- ArrayList yVals2 = new ArrayList();
+ ArrayList entries1 = new ArrayList();
+ ArrayList entries2 = new ArrayList();
- // IMPORTANT: In a PieChart, no values (Entry) should have the same
- // xIndex (even if from different DataSets), since no values can be
- // drawn above each other.
+ // NOTE: The order of the entries when being added to the entries array determines their position around the center of
+ // the chart.
for (int i = 0; i < cnt; i++) {
- yVals1.add(new Entry((float) (Math.random() * mult) + mult / 2, i));
- }
+ float val1 = (float) (Math.random() * mult) + min;
+ entries1.add(new RadarEntry(val1));
- for (int i = 0; i < cnt; i++) {
- yVals2.add(new Entry((float) (Math.random() * mult) + mult / 2, i));
+ float val2 = (float) (Math.random() * mult) + min;
+ entries2.add(new RadarEntry(val2));
}
- ArrayList xVals = new ArrayList();
-
- for (int i = 0; i < cnt; i++)
- xVals.add(mParties[i % mParties.length]);
-
- RadarDataSet set1 = new RadarDataSet(yVals1, "Set 1");
- set1.setColor(ColorTemplate.VORDIPLOM_COLORS[0]);
+ RadarDataSet set1 = new RadarDataSet(entries1, "Last Week");
+ set1.setColor(Color.rgb(103, 110, 129));
+ set1.setFillColor(Color.rgb(103, 110, 129));
set1.setDrawFilled(true);
+ set1.setFillAlpha(180);
set1.setLineWidth(2f);
+ set1.setDrawHighlightCircleEnabled(true);
+ set1.setDrawHighlightIndicators(false);
- RadarDataSet set2 = new RadarDataSet(yVals2, "Set 2");
- set2.setColor(ColorTemplate.VORDIPLOM_COLORS[4]);
+ RadarDataSet set2 = new RadarDataSet(entries2, "This Week");
+ set2.setColor(Color.rgb(121, 162, 175));
+ set2.setFillColor(Color.rgb(121, 162, 175));
set2.setDrawFilled(true);
+ set2.setFillAlpha(180);
set2.setLineWidth(2f);
+ set2.setDrawHighlightCircleEnabled(true);
+ set2.setDrawHighlightIndicators(false);
- ArrayList sets = new ArrayList