Skip to content

Instantly share code, notes, and snippets.

@dacr
Created September 1, 2024 10:15
Show Gist options
  • Save dacr/396592cd76e9cf9492ef5d0d26208ba9 to your computer and use it in GitHub Desktop.
Save dacr/396592cd76e9cf9492ef5d0d26208ba9 to your computer and use it in GitHub Desktop.
plotting with chartreuse - photo count trend / published by https://github.com/dacr/code-examples-manager #fcc44436-bf5f-4bf2-9531-6656f9b6f7fa/920a565d53a72f89654fe2672882dad249613c3b
// summary : plotting with chartreuse - photo count trend
// keywords : chartreuse, plotting
// publish : gist
// authors : David Crosson
// license : Apache NON-AI License Version 2.0 (https://raw.githubusercontent.com/non-ai-licenses/non-ai-licenses/main/NON-AI-APACHE2)
// id : fcc44436-bf5f-4bf2-9531-6656f9b6f7fa
// created-on : 2024-08-21T16:42:51+02:00
// managed-by : https://github.com/dacr/code-examples-manager
// run-with : scala-cli $file
// attachments : data-taken-photos.csv
// ---------------------
//> using scala "3.4.2"
//> using dep "org.creativescala::chartreuse-core:0.2.0"
// ---------------------
import chartreuse.{*, given}
import doodle.core.{Color, Point}
import chartreuse.layout.*
import java.time.{Instant, ZoneOffset}
import scala.io.Source
import cats.effect.unsafe.implicits.global
import doodle.java2d.*
import doodle.syntax.all.*
val dataRE = """(\d+),(\d+)""".r
val data =
Source
.fromFile("data-taken-photos.csv")
.getLines()
.collect { case dataRE(epoch, value) => Instant.ofEpochMilli(epoch.toLong).atOffset(ZoneOffset.UTC).getYear -> value.toInt }
.toList
.map((year, count) => Point(year, count))
val layout =
Line
.default[Point]
.forThemeable(theme =>
theme
.withStrokeWidth(3d)
.withStrokeColor(Color.blue)
)
val plot =
layout
.toPlot(data)
.withPlotTitle("How many photos taken each year")
.withXTitle("Year")
.withYTitle("Photo count")
val picture = plot.draw(800, 300)
picture.draw()
Taken photos each year Count
1009839600000 1559
1041375600000 1723
1072911600000 1670
1104534000000 1427
1136070000000 3230
1167606000000 3914
1199142000000 3087
1230764400000 3889
1262300400000 4935
1293836400000 5297
1325372400000 5056
1356994800000 5683
1388530800000 5327
1420066800000 2971
1451602800000 2547
1483225200000 4793
1514761200000 5641
1546297200000 7429
1577833200000 4700
1609455600000 4592
1640991600000 5564
1672527600000 6987
1704063600000 11984
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment