Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@ColinEberhardt
Last active September 28, 2019 14:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ColinEberhardt/2d9168600094e50ac379838f7cebc183 to your computer and use it in GitHub Desktop.
Save ColinEberhardt/2d9168600094e50ac379838f7cebc183 to your computer and use it in GitHub Desktop.
Most popular programming languages on StackOverflow
license: mit

Most popular programming languages on StackOverflow

This D3 block was inspired by a video I saw on Reddit showing an animated chart of StackOverflow tag popularity. I thought it woudl be fun to recreate it with D3 and D3FC.

I obtained the data from the StackOverflow Data Explorer, using the following query:

select
  '##TAG##' as tag, yr,  mo,  COUNT(*) as total
from (
  select
  MONTH(p.CreationDate) AS mo,
  YEAR(p.CreationDate) AS yr
  from Posts p 
    join PostTags pt on (p.id = pt.PostId) 
    join Tags t on (pt.TagId = t.id) 
  where t.TagName = '##TAG##'
) src
group by yr, mo
order by yr, mo

The chart is rendered using various D3FC components, making good use of the built-in transition support. The code has various comments if you're interested in how it was constructed.

Built with blockbuilder.org

tag yr mo total
java 2008 8 220
java 2008 9 1138
java 2008 10 1152
java 2008 11 959
java 2008 12 832
java 2009 1 1152
java 2009 2 1207
java 2009 3 1440
java 2009 4 1535
java 2009 5 1822
java 2009 6 2117
java 2009 7 2266
java 2009 8 2194
java 2009 9 2266
java 2009 10 2508
java 2009 11 2763
java 2009 12 2690
java 2010 1 3731
java 2010 2 3584
java 2010 3 4453
java 2010 4 3893
java 2010 5 4180
java 2010 6 4293
java 2010 7 4525
java 2010 8 4713
java 2010 9 4722
java 2010 10 5037
java 2010 11 5608
java 2010 12 5687
java 2011 1 6564
java 2011 2 6906
java 2011 3 8523
java 2011 4 7935
java 2011 5 8603
java 2011 6 7954
java 2011 7 8195
java 2011 8 8724
java 2011 9 8363
java 2011 10 8591
java 2011 11 9690
java 2011 12 9252
java 2012 1 10202
java 2012 2 11064
java 2012 3 12515
java 2012 4 12135
java 2012 5 12279
java 2012 6 11179
java 2012 7 12325
java 2012 8 12307
java 2012 9 11662
java 2012 10 13553
java 2012 11 13670
java 2012 12 12475
java 2013 1 13802
java 2013 2 13879
java 2013 3 16057
java 2013 4 16357
java 2013 5 15410
java 2013 6 14054
java 2013 7 15292
java 2013 8 15135
java 2013 9 16352
java 2013 10 18858
java 2013 11 18868
java 2013 12 17557
java 2014 1 18797
java 2014 2 19408
java 2014 3 22147
java 2014 4 21047
java 2014 5 18110
java 2014 6 16047
java 2014 7 17492
java 2014 8 15851
java 2014 9 16850
java 2014 10 18041
java 2014 11 17983
java 2014 12 16502
java 2015 1 16667
java 2015 2 16866
java 2015 3 19881
java 2015 4 19916
java 2015 5 18634
java 2015 6 17950
java 2015 7 18795
java 2015 8 17172
java 2015 9 17037
java 2015 10 18627
java 2015 11 17883
java 2015 12 16639
java 2016 1 16729
java 2016 2 17936
java 2016 3 20031
java 2016 4 19602
java 2016 5 17163
java 2016 6 16017
java 2016 7 15027
java 2016 8 15253
java 2016 9 14756
java 2016 10 15424
java 2016 11 15738
java 2016 12 13918
java 2017 1 14651
java 2017 2 14655
java 2017 3 17419
java 2017 4 16012
java 2017 5 16434
java 2017 6 14697
java 2017 7 14235
java 2017 8 13793
java 2017 9 12834
java 2017 10 14091
java 2017 11 14292
java 2017 12 12081
java 2018 1 12412
java 2018 2 12102
java 2018 3 13635
java 2018 4 13569
java 2018 5 13557
java 2018 6 11885
java 2018 7 11870
java 2018 8 11479
java 2018 9 12037
java 2018 10 14458
java 2018 11 13550
java 2018 12 12068
java 2019 1 12812
java 2019 2 12683
java 2019 3 14132
java 2019 4 13280
java 2019 5 13199
java 2019 6 11372
java 2019 7 12833
java 2019 8 11478
java 2019 9 3114
python 2008 8 124
python 2008 9 543
python 2008 10 511
python 2008 11 453
python 2008 12 441
python 2009 1 631
python 2009 2 631
python 2009 3 765
python 2009 4 768
python 2009 5 1002
python 2009 6 1046
python 2009 7 1163
python 2009 8 1141
python 2009 9 1168
python 2009 10 1422
python 2009 11 1560
python 2009 12 1590
python 2010 1 1952
python 2010 2 1867
python 2010 3 2072
python 2010 4 1817
python 2010 5 2011
python 2010 6 2208
python 2010 7 2600
python 2010 8 2494
python 2010 9 2254
python 2010 10 2669
python 2010 11 2617
python 2010 12 2484
python 2011 1 2912
python 2011 2 3021
python 2011 3 3758
python 2011 4 3350
python 2011 5 3532
python 2011 6 3479
python 2011 7 3679
python 2011 8 3842
python 2011 9 3526
python 2011 10 3636
python 2011 11 3884
python 2011 12 3634
python 2012 1 4223
python 2012 2 4515
python 2012 3 5069
python 2012 4 4941
python 2012 5 5127
python 2012 6 5296
python 2012 7 5748
python 2012 8 5880
python 2012 9 5269
python 2012 10 6148
python 2012 11 6409
python 2012 12 5772
python 2013 1 6607
python 2013 2 6791
python 2013 3 7680
python 2013 4 7976
python 2013 5 7851
python 2013 6 7639
python 2013 7 8652
python 2013 8 7970
python 2013 9 7995
python 2013 10 9535
python 2013 11 9532
python 2013 12 8495
python 2014 1 9877
python 2014 2 9950
python 2014 3 11471
python 2014 4 10827
python 2014 5 9315
python 2014 6 8964
python 2014 7 9989
python 2014 8 9159
python 2014 9 8822
python 2014 10 9638
python 2014 11 9627
python 2014 12 9091
python 2015 1 9741
python 2015 2 10245
python 2015 3 11672
python 2015 4 11512
python 2015 5 11262
python 2015 6 11858
python 2015 7 12377
python 2015 8 11279
python 2015 9 11021
python 2015 10 12553
python 2015 11 12360
python 2015 12 11697
python 2016 1 12408
python 2016 2 13311
python 2016 3 14144
python 2016 4 13732
python 2016 5 13191
python 2016 6 12979
python 2016 7 12894
python 2016 8 12965
python 2016 9 12403
python 2016 10 13574
python 2016 11 14254
python 2016 12 13097
python 2017 1 14346
python 2017 2 14849
python 2017 3 17210
python 2017 4 15717
python 2017 5 16244
python 2017 6 16110
python 2017 7 17004
python 2017 8 16541
python 2017 9 15530
python 2017 10 17051
python 2017 11 17072
python 2017 12 15036
python 2018 1 16320
python 2018 2 16427
python 2018 3 18016
python 2018 4 17060
python 2018 5 17701
python 2018 6 16902
python 2018 7 18018
python 2018 8 17909
python 2018 9 17463
python 2018 10 20286
python 2018 11 20242
python 2018 12 17692
python 2019 1 18996
python 2019 2 19708
python 2019 3 22595
python 2019 4 22484
python 2019 5 21715
python 2019 6 20027
python 2019 7 22825
python 2019 8 21568
python 2019 9 4919
javascript 2008 8 161
javascript 2008 9 640
javascript 2008 10 725
javascript 2008 11 579
javascript 2008 12 626
javascript 2009 1 792
javascript 2009 2 949
javascript 2009 3 1006
javascript 2009 4 1049
javascript 2009 5 1433
javascript 2009 6 1556
javascript 2009 7 1748
javascript 2009 8 1858
javascript 2009 9 1748
javascript 2009 10 2042
javascript 2009 11 2228
javascript 2009 12 2304
javascript 2010 1 2617
javascript 2010 2 2632
javascript 2010 3 2985
javascript 2010 4 3004
javascript 2010 5 3217
javascript 2010 6 3464
javascript 2010 7 3868
javascript 2010 8 4000
javascript 2010 9 3997
javascript 2010 10 4117
javascript 2010 11 4546
javascript 2010 12 4954
javascript 2011 1 5451
javascript 2011 2 5617
javascript 2011 3 6781
javascript 2011 4 6913
javascript 2011 5 7327
javascript 2011 6 7713
javascript 2011 7 8136
javascript 2011 8 8938
javascript 2011 9 8233
javascript 2011 10 8070
javascript 2011 11 8719
javascript 2011 12 8364
javascript 2012 1 9645
javascript 2012 2 10054
javascript 2012 3 10777
javascript 2012 4 10751
javascript 2012 5 11595
javascript 2012 6 11311
javascript 2012 7 12405
javascript 2012 8 12480
javascript 2012 9 11200
javascript 2012 10 12455
javascript 2012 11 12374
javascript 2012 12 11762
javascript 2013 1 13871
javascript 2013 2 13828
javascript 2013 3 15447
javascript 2013 4 15472
javascript 2013 5 15130
javascript 2013 6 14691
javascript 2013 7 16925
javascript 2013 8 16922
javascript 2013 9 17838
javascript 2013 10 19864
javascript 2013 11 18617
javascript 2013 12 18140
javascript 2014 1 21236
javascript 2014 2 21296
javascript 2014 3 22827
javascript 2014 4 21610
javascript 2014 5 19955
javascript 2014 6 18464
javascript 2014 7 20288
javascript 2014 8 18618
javascript 2014 9 18260
javascript 2014 10 19051
javascript 2014 11 18105
javascript 2014 12 17124
javascript 2015 1 18653
javascript 2015 2 18773
javascript 2015 3 20653
javascript 2015 4 21018
javascript 2015 5 22267
javascript 2015 6 22715
javascript 2015 7 24111
javascript 2015 8 22243
javascript 2015 9 21532
javascript 2015 10 21925
javascript 2015 11 21368
javascript 2015 12 21187
javascript 2016 1 22617
javascript 2016 2 22580
javascript 2016 3 24199
javascript 2016 4 23549
javascript 2016 5 23104
javascript 2016 6 22265
javascript 2016 7 22285
javascript 2016 8 22768
javascript 2016 9 20519
javascript 2016 10 20542
javascript 2016 11 20607
javascript 2016 12 19898
javascript 2017 1 21493
javascript 2017 2 21266
javascript 2017 3 23791
javascript 2017 4 21334
javascript 2017 5 22483
javascript 2017 6 21678
javascript 2017 7 21701
javascript 2017 8 21468
javascript 2017 9 19091
javascript 2017 10 19984
javascript 2017 11 19501
javascript 2017 12 17079
javascript 2018 1 19053
javascript 2018 2 17327
javascript 2018 3 19242
javascript 2018 4 18066
javascript 2018 5 18166
javascript 2018 6 17300
javascript 2018 7 17923
javascript 2018 8 18042
javascript 2018 9 17667
javascript 2018 10 19694
javascript 2018 11 18388
javascript 2018 12 16158
javascript 2019 1 18080
javascript 2019 2 17820
javascript 2019 3 19670
javascript 2019 4 18509
javascript 2019 5 18440
javascript 2019 6 16980
javascript 2019 7 18742
javascript 2019 8 18275
javascript 2019 9 4448
c# 2008 7 3
c# 2008 8 513
c# 2008 9 1649
c# 2008 10 1990
c# 2008 11 1731
c# 2008 12 1594
c# 2009 1 2376
c# 2009 2 2597
c# 2009 3 3161
c# 2009 4 3323
c# 2009 5 3561
c# 2009 6 3886
c# 2009 7 4408
c# 2009 8 4459
c# 2009 9 4358
c# 2009 10 4727
c# 2009 11 4681
c# 2009 12 4496
c# 2010 1 5119
c# 2010 2 5105
c# 2010 3 6041
c# 2010 4 5786
c# 2010 5 5947
c# 2010 6 6161
c# 2010 7 6692
c# 2010 8 6970
c# 2010 9 6409
c# 2010 10 6748
c# 2010 11 7325
c# 2010 12 7118
c# 2011 1 8022
c# 2011 2 8257
c# 2011 3 10038
c# 2011 4 9328
c# 2011 5 10077
c# 2011 6 9816
c# 2011 7 9659
c# 2011 8 10110
c# 2011 9 9350
c# 2011 10 9261
c# 2011 11 9951
c# 2011 12 9360
c# 2012 1 10513
c# 2012 2 10849
c# 2012 3 11710
c# 2012 4 11216
c# 2012 5 11670
c# 2012 6 11393
c# 2012 7 12404
c# 2012 8 12007
c# 2012 9 11311
c# 2012 10 12769
c# 2012 11 12274
c# 2012 12 10991
c# 2013 1 12854
c# 2013 2 12658
c# 2013 3 14368
c# 2013 4 14001
c# 2013 5 13566
c# 2013 6 12876
c# 2013 7 14277
c# 2013 8 13919
c# 2013 9 13840
c# 2013 10 15271
c# 2013 11 14673
c# 2013 12 13694
c# 2014 1 15420
c# 2014 2 15192
c# 2014 3 16303
c# 2014 4 15425
c# 2014 5 14021
c# 2014 6 12621
c# 2014 7 13800
c# 2014 8 12591
c# 2014 9 12429
c# 2014 10 12664
c# 2014 11 11962
c# 2014 12 11196
c# 2015 1 11844
c# 2015 2 11869
c# 2015 3 13348
c# 2015 4 13183
c# 2015 5 13457
c# 2015 6 13627
c# 2015 7 14209
c# 2015 8 13310
c# 2015 9 12980
c# 2015 10 12858
c# 2015 11 12455
c# 2015 12 12223
c# 2016 1 12421
c# 2016 2 12812
c# 2016 3 13693
c# 2016 4 13808
c# 2016 5 13579
c# 2016 6 13145
c# 2016 7 12083
c# 2016 8 12800
c# 2016 9 11182
c# 2016 10 11522
c# 2016 11 11720
c# 2016 12 10755
c# 2017 1 11772
c# 2017 2 11574
c# 2017 3 13075
c# 2017 4 11159
c# 2017 5 12073
c# 2017 6 11387
c# 2017 7 11284
c# 2017 8 11034
c# 2017 9 9960
c# 2017 10 10309
c# 2017 11 9889
c# 2017 12 8691
c# 2018 1 9478
c# 2018 2 8660
c# 2018 3 9892
c# 2018 4 9329
c# 2018 5 10036
c# 2018 6 8870
c# 2018 7 9492
c# 2018 8 9615
c# 2018 9 9201
c# 2018 10 10413
c# 2018 11 9526
c# 2018 12 8455
c# 2019 1 9826
c# 2019 2 9484
c# 2019 3 10113
c# 2019 4 10434
c# 2019 5 10309
c# 2019 6 8692
c# 2019 7 9734
c# 2019 8 9207
c# 2019 9 2400
ruby 2008 8 73
ruby 2008 9 291
ruby 2008 10 250
ruby 2008 11 160
ruby 2008 12 161
ruby 2009 1 209
ruby 2009 2 287
ruby 2009 3 330
ruby 2009 4 358
ruby 2009 5 402
ruby 2009 6 433
ruby 2009 7 501
ruby 2009 8 485
ruby 2009 9 477
ruby 2009 10 493
ruby 2009 11 655
ruby 2009 12 573
ruby 2010 1 687
ruby 2010 2 689
ruby 2010 3 697
ruby 2010 4 753
ruby 2010 5 776
ruby 2010 6 853
ruby 2010 7 911
ruby 2010 8 995
ruby 2010 9 939
ruby 2010 10 925
ruby 2010 11 929
ruby 2010 12 1023
ruby 2011 1 1207
ruby 2011 2 1255
ruby 2011 3 1640
ruby 2011 4 1478
ruby 2011 5 1567
ruby 2011 6 1563
ruby 2011 7 1590
ruby 2011 8 1868
ruby 2011 9 1554
ruby 2011 10 1619
ruby 2011 11 1742
ruby 2011 12 1696
ruby 2012 1 1917
ruby 2012 2 2053
ruby 2012 3 2204
ruby 2012 4 1989
ruby 2012 5 1987
ruby 2012 6 1897
ruby 2012 7 2075
ruby 2012 8 2074
ruby 2012 9 1956
ruby 2012 10 2265
ruby 2012 11 2135
ruby 2012 12 1909
ruby 2013 1 2313
ruby 2013 2 2239
ruby 2013 3 2574
ruby 2013 4 2474
ruby 2013 5 2353
ruby 2013 6 2227
ruby 2013 7 2449
ruby 2013 8 2490
ruby 2013 9 2400
ruby 2013 10 2793
ruby 2013 11 2577
ruby 2013 12 2455
ruby 2014 1 2774
ruby 2014 2 2619
ruby 2014 3 2957
ruby 2014 4 2752
ruby 2014 5 2686
ruby 2014 6 2341
ruby 2014 7 2567
ruby 2014 8 2480
ruby 2014 9 2282
ruby 2014 10 2350
ruby 2014 11 2119
ruby 2014 12 2159
ruby 2015 1 2436
ruby 2015 2 2265
ruby 2015 3 2468
ruby 2015 4 2506
ruby 2015 5 2513
ruby 2015 6 2580
ruby 2015 7 2589
ruby 2015 8 2323
ruby 2015 9 2169
ruby 2015 10 2199
ruby 2015 11 1965
ruby 2015 12 2033
ruby 2016 1 2151
ruby 2016 2 2251
ruby 2016 3 2267
ruby 2016 4 2221
ruby 2016 5 2134
ruby 2016 6 2114
ruby 2016 7 1910
ruby 2016 8 1885
ruby 2016 9 1931
ruby 2016 10 1830
ruby 2016 11 1766
ruby 2016 12 1635
ruby 2017 1 1827
ruby 2017 2 1636
ruby 2017 3 1790
ruby 2017 4 1489
ruby 2017 5 1522
ruby 2017 6 1423
ruby 2017 7 1526
ruby 2017 8 1398
ruby 2017 9 1226
ruby 2017 10 1302
ruby 2017 11 1180
ruby 2017 12 1021
ruby 2018 1 1165
ruby 2018 2 1031
ruby 2018 3 1065
ruby 2018 4 995
ruby 2018 5 1036
ruby 2018 6 998
ruby 2018 7 944
ruby 2018 8 885
ruby 2018 9 850
ruby 2018 10 984
ruby 2018 11 901
ruby 2018 12 865
ruby 2019 1 972
ruby 2019 2 838
ruby 2019 3 874
ruby 2019 4 828
ruby 2019 5 817
ruby 2019 6 756
ruby 2019 7 829
ruby 2019 8 859
ruby 2019 9 209
c 2008 8 85
c 2008 9 320
c 2008 10 303
c 2008 11 259
c 2008 12 185
c 2009 1 321
c 2009 2 332
c 2009 3 431
c 2009 4 459
c 2009 5 480
c 2009 6 505
c 2009 7 542
c 2009 8 532
c 2009 9 572
c 2009 10 775
c 2009 11 969
c 2009 12 851
c 2010 1 983
c 2010 2 1034
c 2010 3 1118
c 2010 4 1186
c 2010 5 1179
c 2010 6 1158
c 2010 7 1288
c 2010 8 1371
c 2010 9 1383
c 2010 10 1446
c 2010 11 1676
c 2010 12 1469
c 2011 1 1465
c 2011 2 1642
c 2011 3 2110
c 2011 4 2043
c 2011 5 1825
c 2011 6 1769
c 2011 7 1659
c 2011 8 1825
c 2011 9 1919
c 2011 10 2142
c 2011 11 2204
c 2011 12 2012
c 2012 1 2236
c 2012 2 2419
c 2012 3 2745
c 2012 4 2673
c 2012 5 2491
c 2012 6 2322
c 2012 7 2382
c 2012 8 2330
c 2012 9 2536
c 2012 10 3155
c 2012 11 3196
c 2012 12 2577
c 2013 1 2916
c 2013 2 3117
c 2013 3 3466
c 2013 4 3563
c 2013 5 3217
c 2013 6 2964
c 2013 7 3029
c 2013 8 3017
c 2013 9 3410
c 2013 10 4254
c 2013 11 4302
c 2013 12 3514
c 2014 1 3756
c 2014 2 3991
c 2014 3 4595
c 2014 4 4034
c 2014 5 3284
c 2014 6 2789
c 2014 7 2855
c 2014 8 2693
c 2014 9 3254
c 2014 10 3828
c 2014 11 3701
c 2014 12 3171
c 2015 1 3229
c 2015 2 3386
c 2015 3 3930
c 2015 4 3966
c 2015 5 3532
c 2015 6 3175
c 2015 7 2825
c 2015 8 2586
c 2015 9 3105
c 2015 10 3694
c 2015 11 3633
c 2015 12 3103
c 2016 1 3062
c 2016 2 3291
c 2016 3 3472
c 2016 4 3369
c 2016 5 2736
c 2016 6 2315
c 2016 7 2357
c 2016 8 2226
c 2016 9 2525
c 2016 10 3228
c 2016 11 3281
c 2016 12 2810
c 2017 1 2775
c 2017 2 2741
c 2017 3 2986
c 2017 4 2874
c 2017 5 2753
c 2017 6 2375
c 2017 7 2064
c 2017 8 2062
c 2017 9 2113
c 2017 10 2810
c 2017 11 2975
c 2017 12 2209
c 2018 1 2238
c 2018 2 2158
c 2018 3 2497
c 2018 4 2215
c 2018 5 2396
c 2018 6 1855
c 2018 7 1620
c 2018 8 1711
c 2018 9 1920
c 2018 10 2593
c 2018 11 2666
c 2018 12 2355
c 2019 1 2437
c 2019 2 2188
c 2019 3 2544
c 2019 4 2643
c 2019 5 2300
c 2019 6 1865
c 2019 7 1885
c 2019 8 1768
c 2019 9 566
sql 2008 8 148
sql 2008 9 505
sql 2008 10 534
sql 2008 11 415
sql 2008 12 427
sql 2009 1 587
sql 2009 2 668
sql 2009 3 660
sql 2009 4 745
sql 2009 5 845
sql 2009 6 925
sql 2009 7 1088
sql 2009 8 1036
sql 2009 9 1356
sql 2009 10 1478
sql 2009 11 1218
sql 2009 12 1187
sql 2010 1 1256
sql 2010 2 1290
sql 2010 3 1462
sql 2010 4 1325
sql 2010 5 1450
sql 2010 6 1625
sql 2010 7 1831
sql 2010 8 1913
sql 2010 9 1740
sql 2010 10 1853
sql 2010 11 1976
sql 2010 12 1894
sql 2011 1 2355
sql 2011 2 2133
sql 2011 3 2658
sql 2011 4 2298
sql 2011 5 2715
sql 2011 6 2662
sql 2011 7 2677
sql 2011 8 2679
sql 2011 9 2597
sql 2011 10 2605
sql 2011 11 2845
sql 2011 12 2596
sql 2012 1 2813
sql 2012 2 3164
sql 2012 3 3620
sql 2012 4 3345
sql 2012 5 3527
sql 2012 6 3315
sql 2012 7 3743
sql 2012 8 3711
sql 2012 9 3620
sql 2012 10 4121
sql 2012 11 4325
sql 2012 12 3888
sql 2013 1 4672
sql 2013 2 4596
sql 2013 3 5265
sql 2013 4 5073
sql 2013 5 5008
sql 2013 6 4757
sql 2013 7 5424
sql 2013 8 5394
sql 2013 9 5928
sql 2013 10 6858
sql 2013 11 6580
sql 2013 12 6258
sql 2014 1 7071
sql 2014 2 6979
sql 2014 3 7776
sql 2014 4 7851
sql 2014 5 6807
sql 2014 6 6396
sql 2014 7 6888
sql 2014 8 6240
sql 2014 9 6369
sql 2014 10 5467
sql 2014 11 4294
sql 2014 12 4216
sql 2015 1 4480
sql 2015 2 4386
sql 2015 3 5011
sql 2015 4 4910
sql 2015 5 4700
sql 2015 6 4770
sql 2015 7 4891
sql 2015 8 4497
sql 2015 9 4339
sql 2015 10 4464
sql 2015 11 4398
sql 2015 12 4256
sql 2016 1 4504
sql 2016 2 4699
sql 2016 3 5144
sql 2016 4 4991
sql 2016 5 4896
sql 2016 6 5003
sql 2016 7 4403
sql 2016 8 4495
sql 2016 9 4350
sql 2016 10 4628
sql 2016 11 4758
sql 2016 12 4190
sql 2017 1 4402
sql 2017 2 4458
sql 2017 3 5389
sql 2017 4 4745
sql 2017 5 5176
sql 2017 6 4861
sql 2017 7 4838
sql 2017 8 4626
sql 2017 9 4254
sql 2017 10 4629
sql 2017 11 4637
sql 2017 12 3785
sql 2018 1 4282
sql 2018 2 4159
sql 2018 3 4807
sql 2018 4 4784
sql 2018 5 4842
sql 2018 6 4481
sql 2018 7 4627
sql 2018 8 4513
sql 2018 9 3981
sql 2018 10 4649
sql 2018 11 4405
sql 2018 12 3762
sql 2019 1 4244
sql 2019 2 4459
sql 2019 3 4910
sql 2019 4 4560
sql 2019 5 4404
sql 2019 6 3817
sql 2019 7 4443
sql 2019 8 3989
sql 2019 9 1001
php 2008 8 162
php 2008 9 483
php 2008 10 620
php 2008 11 504
php 2008 12 480
php 2009 1 637
php 2009 2 769
php 2009 3 904
php 2009 4 968
php 2009 5 1183
php 2009 6 1580
php 2009 7 2035
php 2009 8 2188
php 2009 9 2270
php 2009 10 2367
php 2009 11 2692
php 2009 12 2831
php 2010 1 3444
php 2010 2 3170
php 2010 3 3758
php 2010 4 3655
php 2010 5 3994
php 2010 6 4101
php 2010 7 4616
php 2010 8 5159
php 2010 9 4704
php 2010 10 4529
php 2010 11 5129
php 2010 12 5404
php 2011 1 6462
php 2011 2 6751
php 2011 3 8165
php 2011 4 7708
php 2011 5 8150
php 2011 6 8088
php 2011 7 8758
php 2011 8 9004
php 2011 9 8142
php 2011 10 8139
php 2011 11 8759
php 2011 12 8412
php 2012 1 9406
php 2012 2 10048
php 2012 3 11024
php 2012 4 10531
php 2012 5 11045
php 2012 6 10675
php 2012 7 11867
php 2012 8 11989
php 2012 9 11057
php 2012 10 11887
php 2012 11 11862
php 2012 12 11157
php 2013 1 13008
php 2013 2 12798
php 2013 3 14364
php 2013 4 13615
php 2013 5 13306
php 2013 6 12891
php 2013 7 14517
php 2013 8 14491
php 2013 9 14424
php 2013 10 15528
php 2013 11 15088
php 2013 12 14614
php 2014 1 17055
php 2014 2 16784
php 2014 3 18619
php 2014 4 17965
php 2014 5 15030
php 2014 6 13258
php 2014 7 14518
php 2014 8 13418
php 2014 9 13561
php 2014 10 13831
php 2014 11 13231
php 2014 12 12566
php 2015 1 13818
php 2015 2 13665
php 2015 3 15116
php 2015 4 15173
php 2015 5 14750
php 2015 6 14545
php 2015 7 15570
php 2015 8 14422
php 2015 9 13689
php 2015 10 14090
php 2015 11 13493
php 2015 12 13937
php 2016 1 14757
php 2016 2 15101
php 2016 3 15305
php 2016 4 14666
php 2016 5 14617
php 2016 6 13816
php 2016 7 13062
php 2016 8 13017
php 2016 9 12280
php 2016 10 12404
php 2016 11 12085
php 2016 12 11606
php 2017 1 12767
php 2017 2 12664
php 2017 3 14232
php 2017 4 12585
php 2017 5 13196
php 2017 6 11927
php 2017 7 11936
php 2017 8 11790
php 2017 9 10832
php 2017 10 10977
php 2017 11 10732
php 2017 12 9268
php 2018 1 10283
php 2018 2 9279
php 2018 3 9998
php 2018 4 9101
php 2018 5 9612
php 2018 6 8591
php 2018 7 8724
php 2018 8 8671
php 2018 9 8520
php 2018 10 9309
php 2018 11 8296
php 2018 12 7188
php 2019 1 8320
php 2019 2 8422
php 2019 3 9035
php 2019 4 8475
php 2019 5 8231
php 2019 6 7065
php 2019 7 7846
php 2019 8 7474
php 2019 9 2077
c++ 2008 8 164
c++ 2008 9 757
c++ 2008 10 813
c++ 2008 11 736
c++ 2008 12 632
c++ 2009 1 853
c++ 2009 2 845
c++ 2009 3 1056
c++ 2009 4 1023
c++ 2009 5 1219
c++ 2009 6 1253
c++ 2009 7 1467
c++ 2009 8 1402
c++ 2009 9 1466
c++ 2009 10 1689
c++ 2009 11 1758
c++ 2009 12 1659
c++ 2010 1 2003
c++ 2010 2 2278
c++ 2010 3 2439
c++ 2010 4 2493
c++ 2010 5 2423
c++ 2010 6 2830
c++ 2010 7 2693
c++ 2010 8 2642
c++ 2010 9 2745
c++ 2010 10 2936
c++ 2010 11 3373
c++ 2010 12 3143
c++ 2011 1 3508
c++ 2011 2 3457
c++ 2011 3 4191
c++ 2011 4 4182
c++ 2011 5 3899
c++ 2011 6 3831
c++ 2011 7 3858
c++ 2011 8 3966
c++ 2011 9 3957
c++ 2011 10 4367
c++ 2011 11 4505
c++ 2011 12 4377
c++ 2012 1 4568
c++ 2012 2 5131
c++ 2012 3 5275
c++ 2012 4 5344
c++ 2012 5 5018
c++ 2012 6 4685
c++ 2012 7 5306
c++ 2012 8 5175
c++ 2012 9 4924
c++ 2012 10 5923
c++ 2012 11 6294
c++ 2012 12 5704
c++ 2013 1 6076
c++ 2013 2 6125
c++ 2013 3 7236
c++ 2013 4 7195
c++ 2013 5 6874
c++ 2013 6 6228
c++ 2013 7 6600
c++ 2013 8 6274
c++ 2013 9 6589
c++ 2013 10 8024
c++ 2013 11 8176
c++ 2013 12 7048
c++ 2014 1 7731
c++ 2014 2 7719
c++ 2014 3 8710
c++ 2014 4 8170
c++ 2014 5 6840
c++ 2014 6 5725
c++ 2014 7 6317
c++ 2014 8 5929
c++ 2014 9 6252
c++ 2014 10 6885
c++ 2014 11 6614
c++ 2014 12 6122
c++ 2015 1 6187
c++ 2015 2 6502
c++ 2015 3 7420
c++ 2015 4 7178
c++ 2015 5 6854
c++ 2015 6 6544
c++ 2015 7 6734
c++ 2015 8 5904
c++ 2015 9 5939
c++ 2015 10 7075
c++ 2015 11 7121
c++ 2015 12 6591
c++ 2016 1 6128
c++ 2016 2 6587
c++ 2016 3 7075
c++ 2016 4 6934
c++ 2016 5 6163
c++ 2016 6 5753
c++ 2016 7 5501
c++ 2016 8 5036
c++ 2016 9 5172
c++ 2016 10 6009
c++ 2016 11 6123
c++ 2016 12 5262
c++ 2017 1 5686
c++ 2017 2 5209
c++ 2017 3 6267
c++ 2017 4 5907
c++ 2017 5 5336
c++ 2017 6 4714
c++ 2017 7 5055
c++ 2017 8 4818
c++ 2017 9 4503
c++ 2017 10 5256
c++ 2017 11 5073
c++ 2017 12 4502
c++ 2018 1 4803
c++ 2018 2 4616
c++ 2018 3 5238
c++ 2018 4 4717
c++ 2018 5 4740
c++ 2018 6 4131
c++ 2018 7 3949
c++ 2018 8 3967
c++ 2018 9 3967
c++ 2018 10 4648
c++ 2018 11 4710
c++ 2018 12 3891
c++ 2019 1 4232
c++ 2019 2 4070
c++ 2019 3 4881
c++ 2019 4 4906
c++ 2019 5 4564
c++ 2019 6 4005
c++ 2019 7 4693
c++ 2019 8 3834
c++ 2019 9 1082
swift 2009 1 1
swift 2009 2 1
swift 2009 3 1
swift 2009 5 2
swift 2009 6 1
swift 2009 8 2
swift 2009 9 2
swift 2009 11 2
swift 2009 12 1
swift 2010 1 1
swift 2010 2 2
swift 2010 4 2
swift 2010 5 1
swift 2010 6 2
swift 2010 7 1
swift 2010 8 2
swift 2010 9 1
swift 2010 11 1
swift 2010 12 2
swift 2011 1 2
swift 2011 2 3
swift 2011 3 3
swift 2011 4 3
swift 2011 5 2
swift 2011 6 3
swift 2011 7 12
swift 2011 8 8
swift 2011 9 5
swift 2011 10 6
swift 2011 11 3
swift 2011 12 2
swift 2012 1 6
swift 2012 2 9
swift 2012 3 3
swift 2012 4 6
swift 2012 5 6
swift 2012 6 3
swift 2012 7 6
swift 2012 8 4
swift 2012 9 7
swift 2012 10 3
swift 2012 11 2
swift 2012 12 2
swift 2013 1 4
swift 2013 2 5
swift 2013 3 4
swift 2013 4 6
swift 2013 5 1
swift 2013 6 2
swift 2013 7 6
swift 2013 8 2
swift 2013 9 10
swift 2013 10 9
swift 2013 11 5
swift 2013 12 9
swift 2014 1 5
swift 2014 2 10
swift 2014 3 4
swift 2014 4 4
swift 2014 5 10
swift 2014 6 2410
swift 2014 7 1646
swift 2014 8 1704
swift 2014 9 1909
swift 2014 10 2471
swift 2014 11 2572
swift 2014 12 2504
swift 2015 1 3075
swift 2015 2 3250
swift 2015 3 3609
swift 2015 4 4039
swift 2015 5 3814
swift 2015 6 4346
swift 2015 7 5170
swift 2015 8 5094
swift 2015 9 4571
swift 2015 10 4316
swift 2015 11 4335
swift 2015 12 4393
swift 2016 1 4812
swift 2016 2 4768
swift 2016 3 5099
swift 2016 4 4778
swift 2016 5 4448
swift 2016 6 4821
swift 2016 7 4956
swift 2016 8 4930
swift 2016 9 4892
swift 2016 10 4747
swift 2016 11 4378
swift 2016 12 3950
swift 2017 1 4353
swift 2017 2 4074
swift 2017 3 4636
swift 2017 4 3934
swift 2017 5 4116
swift 2017 6 4209
swift 2017 7 4360
swift 2017 8 4206
swift 2017 9 3794
swift 2017 10 3919
swift 2017 11 3690
swift 2017 12 3227
swift 2018 1 3773
swift 2018 2 3434
swift 2018 3 4085
swift 2018 4 3603
swift 2018 5 3637
swift 2018 6 3176
swift 2018 7 3698
swift 2018 8 3606
swift 2018 9 3449
swift 2018 10 3649
swift 2018 11 3337
swift 2018 12 3115
swift 2019 1 3273
swift 2019 2 3026
swift 2019 3 3324
swift 2019 4 3517
swift 2019 5 3612
swift 2019 6 3583
swift 2019 7 3589
swift 2019 8 3185
swift 2019 9 810
r 2008 9 6
r 2008 11 1
r 2008 12 1
r 2009 1 8
r 2009 2 9
r 2009 3 4
r 2009 4 12
r 2009 5 2
r 2009 6 5
r 2009 7 51
r 2009 8 47
r 2009 9 139
r 2009 10 73
r 2009 11 94
r 2009 12 80
r 2010 1 94
r 2010 2 122
r 2010 3 139
r 2010 4 160
r 2010 5 139
r 2010 6 178
r 2010 7 234
r 2010 8 283
r 2010 9 236
r 2010 10 214
r 2010 11 242
r 2010 12 223
r 2011 1 250
r 2011 2 322
r 2011 3 422
r 2011 4 476
r 2011 5 427
r 2011 6 444
r 2011 7 454
r 2011 8 586
r 2011 9 612
r 2011 10 621
r 2011 11 608
r 2011 12 614
r 2012 1 690
r 2012 2 814
r 2012 3 891
r 2012 4 847
r 2012 5 882
r 2012 6 975
r 2012 7 1124
r 2012 8 1092
r 2012 9 1060
r 2012 10 1268
r 2012 11 1348
r 2012 12 1219
r 2013 1 1513
r 2013 2 1674
r 2013 3 1856
r 2013 4 1847
r 2013 5 1790
r 2013 6 1781
r 2013 7 1979
r 2013 8 1929
r 2013 9 1719
r 2013 10 2103
r 2013 11 2193
r 2013 12 1911
r 2014 1 2359
r 2014 2 2623
r 2014 3 2828
r 2014 4 2747
r 2014 5 2601
r 2014 6 2406
r 2014 7 2650
r 2014 8 2490
r 2014 9 2383
r 2014 10 2793
r 2014 11 2722
r 2014 12 2370
r 2015 1 2710
r 2015 2 2983
r 2015 3 3576
r 2015 4 3338
r 2015 5 3438
r 2015 6 3444
r 2015 7 3991
r 2015 8 3503
r 2015 9 3344
r 2015 10 3695
r 2015 11 3555
r 2015 12 3192
r 2016 1 3555
r 2016 2 3614
r 2016 3 4063
r 2016 4 4154
r 2016 5 3809
r 2016 6 3875
r 2016 7 3757
r 2016 8 3799
r 2016 9 3306
r 2016 10 3795
r 2016 11 3568
r 2016 12 3159
r 2017 1 3508
r 2017 2 3694
r 2017 3 4622
r 2017 4 4277
r 2017 5 4336
r 2017 6 4475
r 2017 7 4602
r 2017 8 4592
r 2017 9 4243
r 2017 10 4565
r 2017 11 4540
r 2017 12 3730
r 2018 1 4213
r 2018 2 4525
r 2018 3 5116
r 2018 4 4761
r 2018 5 4750
r 2018 6 4519
r 2018 7 4431
r 2018 8 4151
r 2018 9 4139
r 2018 10 4875
r 2018 11 4814
r 2018 12 3801
r 2019 1 4532
r 2019 2 4917
r 2019 3 5161
r 2019 4 5355
r 2019 5 5028
r 2019 6 4612
r 2019 7 4912
r 2019 8 4686
r 2019 9 1090
objective-c 2008 8 20
objective-c 2008 9 51
objective-c 2008 10 91
objective-c 2008 11 107
objective-c 2008 12 123
objective-c 2009 1 143
objective-c 2009 2 208
objective-c 2009 3 290
objective-c 2009 4 356
objective-c 2009 5 500
objective-c 2009 6 493
objective-c 2009 7 680
objective-c 2009 8 696
objective-c 2009 9 693
objective-c 2009 10 746
objective-c 2009 11 757
objective-c 2009 12 781
objective-c 2010 1 990
objective-c 2010 2 1008
objective-c 2010 3 1129
objective-c 2010 4 1154
objective-c 2010 5 1305
objective-c 2010 6 1435
objective-c 2010 7 1937
objective-c 2010 8 1875
objective-c 2010 9 1650
objective-c 2010 10 1738
objective-c 2010 11 1832
objective-c 2010 12 1835
objective-c 2011 1 2184
objective-c 2011 2 2447
objective-c 2011 3 3065
objective-c 2011 4 3253
objective-c 2011 5 3513
objective-c 2011 6 3368
objective-c 2011 7 3735
objective-c 2011 8 3859
objective-c 2011 9 3312
objective-c 2011 10 3286
objective-c 2011 11 3592
objective-c 2011 12 3336
objective-c 2012 1 3785
objective-c 2012 2 3882
objective-c 2012 3 3862
objective-c 2012 4 3949
objective-c 2012 5 3908
objective-c 2012 6 3827
objective-c 2012 7 4339
objective-c 2012 8 4228
objective-c 2012 9 3411
objective-c 2012 10 4138
objective-c 2012 11 3872
objective-c 2012 12 3736
objective-c 2013 1 4105
objective-c 2013 2 3954
objective-c 2013 3 4450
objective-c 2013 4 4100
objective-c 2013 5 3847
objective-c 2013 6 3393
objective-c 2013 7 3787
objective-c 2013 8 3561
objective-c 2013 9 3966
objective-c 2013 10 4479
objective-c 2013 11 4049
objective-c 2013 12 4014
objective-c 2014 1 4420
objective-c 2014 2 4603
objective-c 2014 3 5035
objective-c 2014 4 4689
objective-c 2014 5 4194
objective-c 2014 6 3767
objective-c 2014 7 4204
objective-c 2014 8 3722
objective-c 2014 9 3769
objective-c 2014 10 3705
objective-c 2014 11 3290
objective-c 2014 12 3057
objective-c 2015 1 3013
objective-c 2015 2 3187
objective-c 2015 3 3298
objective-c 2015 4 3394
objective-c 2015 5 3142
objective-c 2015 6 3137
objective-c 2015 7 3330
objective-c 2015 8 2995
objective-c 2015 9 2887
objective-c 2015 10 2840
objective-c 2015 11 2347
objective-c 2015 12 2270
objective-c 2016 1 2372
objective-c 2016 2 2343
objective-c 2016 3 2289
objective-c 2016 4 2228
objective-c 2016 5 2004
objective-c 2016 6 2090
objective-c 2016 7 1879
objective-c 2016 8 1821
objective-c 2016 9 1686
objective-c 2016 10 1641
objective-c 2016 11 1570
objective-c 2016 12 1502
objective-c 2017 1 1467
objective-c 2017 2 1342
objective-c 2017 3 1456
objective-c 2017 4 1147
objective-c 2017 5 1186
objective-c 2017 6 1230
objective-c 2017 7 1108
objective-c 2017 8 995
objective-c 2017 9 895
objective-c 2017 10 863
objective-c 2017 11 814
objective-c 2017 12 642
objective-c 2018 1 669
objective-c 2018 2 595
objective-c 2018 3 603
objective-c 2018 4 558
objective-c 2018 5 584
objective-c 2018 6 486
objective-c 2018 7 509
objective-c 2018 8 473
objective-c 2018 9 468
objective-c 2018 10 488
objective-c 2018 11 392
objective-c 2018 12 339
objective-c 2019 1 398
objective-c 2019 2 354
objective-c 2019 3 376
objective-c 2019 4 415
objective-c 2019 5 352
objective-c 2019 6 340
objective-c 2019 7 318
objective-c 2019 8 285
objective-c 2019 9 74
<!DOCTYPE html>
<head>
<!-- include polyfills for custom event and Symbol (for IE) -->
<script src="https://unpkg.com/babel-polyfill@6.26.0/dist/polyfill.js"></script>
<script src="https://unpkg.com/custom-event-polyfill@0.3.0/custom-event-polyfill.js"></script>
<!-- use babel so that we can use arrow functions and other goodness in this block! -->
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<script src="https://unpkg.com/d3@5.5.0"></script>
<script src="https://unpkg.com/d3fc@14.0.41"></script>
<meta charset="utf-8" />
<style>
body {
font: 14px sans-serif;
background-color: #363b3f;
color: darkgrey;
}
.x-axis text {
fill: darkgrey;
}
.x-axis .domain {
display: none;
}
.x-axis .tick {
font-size: 12px;
}
#chart {
height: 480px;
}
.y-axis svg {
display: none;
}
.language-label {
text-anchor: end;
font-size: 20px;
fill: white;
alignment-baseline: central
}
.language-percent {
fill: darkgrey;
alignment-baseline: central
}
.container {
display: relative;
}
h2 {
font-size: 30px;
margin-bottom: 5px;
}
#date {
color: darkgrey;
font-size: 50px;
position: absolute;
bottom: 10px;
right: 10px;
}
</style>
</head>
<h2>Most popular programming languages on StackOverflow</h2>
<div class="container">
<div id="chart"></div>
<div id="date"></div>
</div>
<script type="text/babel">
const months = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ];
d3.csv("data.csv").then(data => {
// convert string properties to numbers
data.forEach(d => {
d.yr = Number(d.yr);
d.mo = Number(d.mo);
d.total = Number(d.total);
});
// find all unique tags
const tags = d3.set(data.map(d => d.tag)).values();
const colorScale = d3.scaleOrdinal(d3.schemeCategory10)
.domain(tags);
const percentFormat = d3.format(".1%");
// a D3FC bar series component https://d3fc.io/api/series-api.html
const barSeries = fc
.autoBandwidth(fc.seriesSvgBar())
.crossValue(d => d.tag)
.align("left")
.orient("horizontal")
.key(d => d.tag)
.mainValue(d => d.percent)
.decorate(selection => {
// this section uses the decorate pattern (https://d3fc.io/introduction/decorate-pattern.html)
// to modify the data-join used by the bar series, allowing various customisations
// colour each bar
selection.enter().style("fill", d => colorScale(d.tag));
// add language and percent indicators
selection
.enter()
.append("text")
.classed("language-label", true)
.attr("transform", "translate(-5, 0)")
.text(d => d.tag);
selection
.enter()
.append("text")
.classed("language-percent", true)
.attr("transform", "translate(5, 0)")
selection.select(".language-percent")
.text(d => percentFormat(d.percent));
});
// use D3FC extent (https://d3fc.io/api/extent-api.html) to compute
// a suitable y axis range
const yDomain = fc
.extentLinear()
.accessors([d => d.percent])
.include([0])
.pad([0.0, 0.05]);
// the D3FC chart component (https://d3fc.io/api/chart-api.html)
const chart = fc
.chartCartesian(d3.scaleLinear(), d3.scaleBand())
.xOrient("top")
.xTickFormat(percentFormat)
.svgPlotArea(barSeries);
const renderChart = (year, month) => {
// filter the tag data for year / month and sort
const currentTags = data
.filter(d => d.yr === year && d.mo === month)
.sort((a, b) => a.total - b.total);
// compute the percentages
const totalTagCount = d3.sum(currentTags, d => d.total);
currentTags.forEach(d => (d.percent = d.total / totalTagCount));
// update the chart domain
chart.yDomain(currentTags.map(d => d.tag)).xDomain(yDomain(currentTags));
// render the chart
d3.select("#chart")
.datum(currentTags)
.transition()
.ease(d3.easeLinear)
.duration(700)
.call(chart);
// update the date indicator
d3.select("#date")
.text(`${months[month - 1]} ${year}`);
};
let currentYear = 2009;
let currentMonth = 1;
// update the year / month on an interval timer
const interval = setInterval(() => {
renderChart(currentYear, currentMonth);
currentMonth ++;
if (currentMonth > 12) {
currentMonth = 1;
currentYear++;
}
if (currentMonth === 9 && currentYear === 2019) {
clearInterval(interval);
}
}, 800);
});
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment