Skip to content

Commit

Permalink
tidy up component_charts
Browse files Browse the repository at this point in the history
  • Loading branch information
yolile committed Feb 10, 2024
1 parent 059989b commit eaa6cde
Show file tree
Hide file tree
Showing 7 changed files with 154 additions and 252 deletions.
58 changes: 22 additions & 36 deletions component_charts.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,14 @@
"import altair as alt\n",
"\n",
"\n",
"def plot_release_count(release_counts):\n",
"def check_columns(columns, data):\n",
" # check if input contains the right columns\n",
" if not {\"collection_id\", \"release_type\", \"release_count\", \"ocid_count\"}.issubset(release_counts.columns):\n",
" raise ValueError(\n",
" \"Input data must contain the following columns: collection_id, release_type, release_count, ocid_count\"\n",
" )\n",
" if not columns.issubset(data.columns):\n",
" raise ValueError(f\"Input data must contain the columns {columns}\")\n",
"\n",
"\n",
"def plot_release_count(release_counts):\n",
" check_columns({\"collection_id\", \"release_type\", \"release_count\", \"ocid_count\"}, release_counts)\n",
" return (\n",
" alt.Chart(release_counts)\n",
" .mark_bar()\n",
Expand Down Expand Up @@ -108,33 +110,23 @@
"\n",
"\n",
"def plot_objects_per_stage(objects_per_stage):\n",
" # check if input contains the right columns\n",
" if not {\"stage\", \"object_count\"}.issubset(objects_per_stage.columns):\n",
" raise ValueError(\"Data must contain columns 'stage' and 'object_count'\")\n",
" # draw chart\n",
" check_columns({\"stage\", \"object_count\"}, objects_per_stage)\n",
" stages = [\"planning\", \"tender\", \"awards\", \"contracts\", \"implementation\"]\n",
" return (\n",
" alt.Chart(objects_per_stage)\n",
" .mark_bar(fill=\"#d6e100\")\n",
" .encode(\n",
" x=alt.X(\n",
" \"stage\",\n",
" type=\"ordinal\",\n",
" scale=alt.Scale(\n",
" domain=[\n",
" \"planning\",\n",
" \"tender\",\n",
" \"awards\",\n",
" \"contracts\",\n",
" \"implementation\",\n",
" ]\n",
" ),\n",
" sort=[\"planning\", \"tender\", \"awards\", \"contracts\", \"implementation\"],\n",
" scale=alt.Scale(domain=stages),\n",
" sort=stages,\n",
" axis=alt.Axis(title=\"stage\", labelAngle=0),\n",
" ),\n",
" y=alt.Y(\n",
" \"object_count\",\n",
" type=\"quantitative\",\n",
" axis=alt.Axis(title=\"number of objects\", format=\"~s\", tickCount=5),\n",
" axis=alt.Axis(title=\"number of objects\", format=\"~s\", tickCount=len(stages)),\n",
" ),\n",
" tooltip=[\n",
" alt.Tooltip(\"stage\", title=\"stage\"),\n",
Expand All @@ -159,11 +151,10 @@
"\n",
"\n",
"def plot_releases_by_month(release_dates):\n",
" # check if input contains the right columns\n",
" if not {\"date\", \"collection_id\", \"release_type\", \"release_count\"}.issubset(release_dates.columns):\n",
" raise ValueError(\"Data must contain columns 'date', 'collection_id', 'release_type', 'release_count'\")\n",
" check_columns({\"date\", \"collection_id\", \"release_type\", \"release_count\"}, release_dates)\n",
" max_rows = 5000\n",
" # check if number of rows is more than 5000\n",
" if release_dates.shape[0] > 5000:\n",
" if release_dates.shape[0] > max_rows:\n",
" alt.data_transformers.disable_max_rows()\n",
"\n",
" # draw chart\n",
Expand Down Expand Up @@ -209,19 +200,17 @@
"\n",
"\n",
"def plot_objects_per_year(objects_per_year):\n",
" # check if input contains the right columns\n",
" if not {\"year\", \"tenders\", \"awards\"}.issubset(objects_per_year.columns):\n",
" raise ValueError(\"Data must contain columns 'year', 'tenders' and 'awards'\")\n",
" # draw chart\n",
" check_columns({\"year\", \"tenders\", \"awards\"}, objects_per_year)\n",
" stages = [\"tenders\", \"awards\"]\n",
" return (\n",
" alt.Chart(objects_per_year)\n",
" .transform_fold([\"tenders\", \"awards\"])\n",
" .transform_fold(stages)\n",
" .mark_line(strokeWidth=3)\n",
" .encode(\n",
" x=alt.X(\n",
" \"year\",\n",
" type=\"quantitative\",\n",
" axis=alt.Axis(title=\"year\", format=\".0f\", tickCount=dates.shape[0]),\n",
" axis=alt.Axis(title=\"year\", format=\".0f\", tickCount=objects_per_year.shape[0]),\n",
" ),\n",
" y=alt.Y(\n",
" \"value\",\n",
Expand All @@ -233,7 +222,7 @@
" \"key\",\n",
" type=\"nominal\",\n",
" title=\"object type\",\n",
" scale=alt.Scale(domain=[\"tenders\", \"awards\"], range=[\"#D6E100\", \"#FB6045\"]),\n",
" scale=alt.Scale(domain=stages, range=[\"#D6E100\", \"#FB6045\"]),\n",
" ),\n",
" tooltip=[\n",
" alt.Tooltip(\"year\", title=\"year\", type=\"quantitative\"),\n",
Expand All @@ -259,10 +248,7 @@
"\n",
"\n",
"def plot_top_buyers(buyers):\n",
" # check if input contains the right columns\n",
" if not {\"name\", \"total_tenders\"}.issubset(buyers.columns):\n",
" raise ValueError(\"Data must contain columns 'name' and 'total_tenders'\")\n",
" # draw chart\n",
" check_columns({\"name\", \"total_tenders\"}, buyers)\n",
" return (\n",
" alt.Chart(buyers)\n",
" .mark_bar(fill=\"#d6e100\")\n",
Expand Down Expand Up @@ -297,7 +283,7 @@
" domain=False,\n",
" )\n",
" .configure_view(strokeWidth=0)\n",
" )\n"
" )"
],
"metadata": {
"id": "Bip37aP917XY"
Expand Down
58 changes: 22 additions & 36 deletions template_data_quality_feedback.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -177,12 +177,14 @@
"import altair as alt\n",
"\n",
"\n",
"def plot_release_count(release_counts):\n",
"def check_columns(columns, data):\n",
" # check if input contains the right columns\n",
" if not {\"collection_id\", \"release_type\", \"release_count\", \"ocid_count\"}.issubset(release_counts.columns):\n",
" raise ValueError(\n",
" \"Input data must contain the following columns: collection_id, release_type, release_count, ocid_count\"\n",
" )\n",
" if not columns.issubset(data.columns):\n",
" raise ValueError(f\"Input data must contain the columns {columns}\")\n",
"\n",
"\n",
"def plot_release_count(release_counts):\n",
" check_columns({\"collection_id\", \"release_type\", \"release_count\", \"ocid_count\"}, release_counts)\n",
" return (\n",
" alt.Chart(release_counts)\n",
" .mark_bar()\n",
Expand Down Expand Up @@ -228,33 +230,23 @@
"\n",
"\n",
"def plot_objects_per_stage(objects_per_stage):\n",
" # check if input contains the right columns\n",
" if not {\"stage\", \"object_count\"}.issubset(objects_per_stage.columns):\n",
" raise ValueError(\"Data must contain columns 'stage' and 'object_count'\")\n",
" # draw chart\n",
" check_columns({\"stage\", \"object_count\"}, objects_per_stage)\n",
" stages = [\"planning\", \"tender\", \"awards\", \"contracts\", \"implementation\"]\n",
" return (\n",
" alt.Chart(objects_per_stage)\n",
" .mark_bar(fill=\"#d6e100\")\n",
" .encode(\n",
" x=alt.X(\n",
" \"stage\",\n",
" type=\"ordinal\",\n",
" scale=alt.Scale(\n",
" domain=[\n",
" \"planning\",\n",
" \"tender\",\n",
" \"awards\",\n",
" \"contracts\",\n",
" \"implementation\",\n",
" ]\n",
" ),\n",
" sort=[\"planning\", \"tender\", \"awards\", \"contracts\", \"implementation\"],\n",
" scale=alt.Scale(domain=stages),\n",
" sort=stages,\n",
" axis=alt.Axis(title=\"stage\", labelAngle=0),\n",
" ),\n",
" y=alt.Y(\n",
" \"object_count\",\n",
" type=\"quantitative\",\n",
" axis=alt.Axis(title=\"number of objects\", format=\"~s\", tickCount=5),\n",
" axis=alt.Axis(title=\"number of objects\", format=\"~s\", tickCount=len(stages)),\n",
" ),\n",
" tooltip=[\n",
" alt.Tooltip(\"stage\", title=\"stage\"),\n",
Expand All @@ -279,11 +271,10 @@
"\n",
"\n",
"def plot_releases_by_month(release_dates):\n",
" # check if input contains the right columns\n",
" if not {\"date\", \"collection_id\", \"release_type\", \"release_count\"}.issubset(release_dates.columns):\n",
" raise ValueError(\"Data must contain columns 'date', 'collection_id', 'release_type', 'release_count'\")\n",
" check_columns({\"date\", \"collection_id\", \"release_type\", \"release_count\"}, release_dates)\n",
" max_rows = 5000\n",
" # check if number of rows is more than 5000\n",
" if release_dates.shape[0] > 5000:\n",
" if release_dates.shape[0] > max_rows:\n",
" alt.data_transformers.disable_max_rows()\n",
"\n",
" # draw chart\n",
Expand Down Expand Up @@ -329,19 +320,17 @@
"\n",
"\n",
"def plot_objects_per_year(objects_per_year):\n",
" # check if input contains the right columns\n",
" if not {\"year\", \"tenders\", \"awards\"}.issubset(objects_per_year.columns):\n",
" raise ValueError(\"Data must contain columns 'year', 'tenders' and 'awards'\")\n",
" # draw chart\n",
" check_columns({\"year\", \"tenders\", \"awards\"}, objects_per_year)\n",
" stages = [\"tenders\", \"awards\"]\n",
" return (\n",
" alt.Chart(objects_per_year)\n",
" .transform_fold([\"tenders\", \"awards\"])\n",
" .transform_fold(stages)\n",
" .mark_line(strokeWidth=3)\n",
" .encode(\n",
" x=alt.X(\n",
" \"year\",\n",
" type=\"quantitative\",\n",
" axis=alt.Axis(title=\"year\", format=\".0f\", tickCount=dates.shape[0]),\n",
" axis=alt.Axis(title=\"year\", format=\".0f\", tickCount=objects_per_year.shape[0]),\n",
" ),\n",
" y=alt.Y(\n",
" \"value\",\n",
Expand All @@ -353,7 +342,7 @@
" \"key\",\n",
" type=\"nominal\",\n",
" title=\"object type\",\n",
" scale=alt.Scale(domain=[\"tenders\", \"awards\"], range=[\"#D6E100\", \"#FB6045\"]),\n",
" scale=alt.Scale(domain=stages, range=[\"#D6E100\", \"#FB6045\"]),\n",
" ),\n",
" tooltip=[\n",
" alt.Tooltip(\"year\", title=\"year\", type=\"quantitative\"),\n",
Expand All @@ -379,10 +368,7 @@
"\n",
"\n",
"def plot_top_buyers(buyers):\n",
" # check if input contains the right columns\n",
" if not {\"name\", \"total_tenders\"}.issubset(buyers.columns):\n",
" raise ValueError(\"Data must contain columns 'name' and 'total_tenders'\")\n",
" # draw chart\n",
" check_columns({\"name\", \"total_tenders\"}, buyers)\n",
" return (\n",
" alt.Chart(buyers)\n",
" .mark_bar(fill=\"#d6e100\")\n",
Expand Down Expand Up @@ -417,7 +403,7 @@
" domain=False,\n",
" )\n",
" .configure_view(strokeWidth=0)\n",
" )\n"
" )"
]
},
{
Expand Down
58 changes: 22 additions & 36 deletions template_publisher_analysis.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -177,12 +177,14 @@
"import altair as alt\n",
"\n",
"\n",
"def plot_release_count(release_counts):\n",
"def check_columns(columns, data):\n",
" # check if input contains the right columns\n",
" if not {\"collection_id\", \"release_type\", \"release_count\", \"ocid_count\"}.issubset(release_counts.columns):\n",
" raise ValueError(\n",
" \"Input data must contain the following columns: collection_id, release_type, release_count, ocid_count\"\n",
" )\n",
" if not columns.issubset(data.columns):\n",
" raise ValueError(f\"Input data must contain the columns {columns}\")\n",
"\n",
"\n",
"def plot_release_count(release_counts):\n",
" check_columns({\"collection_id\", \"release_type\", \"release_count\", \"ocid_count\"}, release_counts)\n",
" return (\n",
" alt.Chart(release_counts)\n",
" .mark_bar()\n",
Expand Down Expand Up @@ -228,33 +230,23 @@
"\n",
"\n",
"def plot_objects_per_stage(objects_per_stage):\n",
" # check if input contains the right columns\n",
" if not {\"stage\", \"object_count\"}.issubset(objects_per_stage.columns):\n",
" raise ValueError(\"Data must contain columns 'stage' and 'object_count'\")\n",
" # draw chart\n",
" check_columns({\"stage\", \"object_count\"}, objects_per_stage)\n",
" stages = [\"planning\", \"tender\", \"awards\", \"contracts\", \"implementation\"]\n",
" return (\n",
" alt.Chart(objects_per_stage)\n",
" .mark_bar(fill=\"#d6e100\")\n",
" .encode(\n",
" x=alt.X(\n",
" \"stage\",\n",
" type=\"ordinal\",\n",
" scale=alt.Scale(\n",
" domain=[\n",
" \"planning\",\n",
" \"tender\",\n",
" \"awards\",\n",
" \"contracts\",\n",
" \"implementation\",\n",
" ]\n",
" ),\n",
" sort=[\"planning\", \"tender\", \"awards\", \"contracts\", \"implementation\"],\n",
" scale=alt.Scale(domain=stages),\n",
" sort=stages,\n",
" axis=alt.Axis(title=\"stage\", labelAngle=0),\n",
" ),\n",
" y=alt.Y(\n",
" \"object_count\",\n",
" type=\"quantitative\",\n",
" axis=alt.Axis(title=\"number of objects\", format=\"~s\", tickCount=5),\n",
" axis=alt.Axis(title=\"number of objects\", format=\"~s\", tickCount=len(stages)),\n",
" ),\n",
" tooltip=[\n",
" alt.Tooltip(\"stage\", title=\"stage\"),\n",
Expand All @@ -279,11 +271,10 @@
"\n",
"\n",
"def plot_releases_by_month(release_dates):\n",
" # check if input contains the right columns\n",
" if not {\"date\", \"collection_id\", \"release_type\", \"release_count\"}.issubset(release_dates.columns):\n",
" raise ValueError(\"Data must contain columns 'date', 'collection_id', 'release_type', 'release_count'\")\n",
" check_columns({\"date\", \"collection_id\", \"release_type\", \"release_count\"}, release_dates)\n",
" max_rows = 5000\n",
" # check if number of rows is more than 5000\n",
" if release_dates.shape[0] > 5000:\n",
" if release_dates.shape[0] > max_rows:\n",
" alt.data_transformers.disable_max_rows()\n",
"\n",
" # draw chart\n",
Expand Down Expand Up @@ -329,19 +320,17 @@
"\n",
"\n",
"def plot_objects_per_year(objects_per_year):\n",
" # check if input contains the right columns\n",
" if not {\"year\", \"tenders\", \"awards\"}.issubset(objects_per_year.columns):\n",
" raise ValueError(\"Data must contain columns 'year', 'tenders' and 'awards'\")\n",
" # draw chart\n",
" check_columns({\"year\", \"tenders\", \"awards\"}, objects_per_year)\n",
" stages = [\"tenders\", \"awards\"]\n",
" return (\n",
" alt.Chart(objects_per_year)\n",
" .transform_fold([\"tenders\", \"awards\"])\n",
" .transform_fold(stages)\n",
" .mark_line(strokeWidth=3)\n",
" .encode(\n",
" x=alt.X(\n",
" \"year\",\n",
" type=\"quantitative\",\n",
" axis=alt.Axis(title=\"year\", format=\".0f\", tickCount=dates.shape[0]),\n",
" axis=alt.Axis(title=\"year\", format=\".0f\", tickCount=objects_per_year.shape[0]),\n",
" ),\n",
" y=alt.Y(\n",
" \"value\",\n",
Expand All @@ -353,7 +342,7 @@
" \"key\",\n",
" type=\"nominal\",\n",
" title=\"object type\",\n",
" scale=alt.Scale(domain=[\"tenders\", \"awards\"], range=[\"#D6E100\", \"#FB6045\"]),\n",
" scale=alt.Scale(domain=stages, range=[\"#D6E100\", \"#FB6045\"]),\n",
" ),\n",
" tooltip=[\n",
" alt.Tooltip(\"year\", title=\"year\", type=\"quantitative\"),\n",
Expand All @@ -379,10 +368,7 @@
"\n",
"\n",
"def plot_top_buyers(buyers):\n",
" # check if input contains the right columns\n",
" if not {\"name\", \"total_tenders\"}.issubset(buyers.columns):\n",
" raise ValueError(\"Data must contain columns 'name' and 'total_tenders'\")\n",
" # draw chart\n",
" check_columns({\"name\", \"total_tenders\"}, buyers)\n",
" return (\n",
" alt.Chart(buyers)\n",
" .mark_bar(fill=\"#d6e100\")\n",
Expand Down Expand Up @@ -417,7 +403,7 @@
" domain=False,\n",
" )\n",
" .configure_view(strokeWidth=0)\n",
" )\n"
" )"
]
},
{
Expand Down
Loading

0 comments on commit eaa6cde

Please sign in to comment.