{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# imshow"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This section describes various options available for imshow plots in **fivecentplots**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"See the full API https://endangeredoxen.github.io/fivecentplots/0.5.0/api/imshow.html#imshow"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Setup"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Import packages:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import fivecentplots as fcp\n",
"import pandas as pd\n",
"from pathlib import Path\n",
"import imageio"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Read a ridiculous image from the world wide web that illustrates a crime against the felis genus:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Warning: Starting with ImageIO v3 the behavior of this function will switch to that of iio.v3.imread. To keep the current behavior (and make this warning dissapear) use `import imageio.v2 as imageio` or call `imageio.v2.imread` directly.\n"
]
},
{
"data": {
"text/plain": [
"Array([[[220, 221, 223],\n",
" [220, 221, 223],\n",
" [220, 221, 223],\n",
" ...,\n",
" [219, 220, 222],\n",
" [219, 220, 222],\n",
" [219, 220, 222]],\n",
"\n",
" [[220, 221, 223],\n",
" [220, 221, 223],\n",
" [220, 221, 223],\n",
" ...,\n",
" [219, 220, 222],\n",
" [219, 220, 222],\n",
" [219, 220, 222]],\n",
"\n",
" [[220, 221, 223],\n",
" [220, 221, 223],\n",
" [220, 221, 223],\n",
" ...,\n",
" [219, 220, 222],\n",
" [219, 220, 222],\n",
" [219, 220, 222]],\n",
"\n",
" ...,\n",
"\n",
" [[108, 95, 86],\n",
" [106, 93, 84],\n",
" [103, 90, 81],\n",
" ...,\n",
" [209, 211, 210],\n",
" [209, 211, 210],\n",
" [209, 211, 210]],\n",
"\n",
" [[107, 94, 85],\n",
" [105, 92, 83],\n",
" [103, 90, 81],\n",
" ...,\n",
" [210, 212, 211],\n",
" [210, 212, 211],\n",
" [210, 212, 211]],\n",
"\n",
" [[106, 93, 84],\n",
" [105, 92, 83],\n",
" [103, 90, 81],\n",
" ...,\n",
" [210, 212, 211],\n",
" [210, 212, 211],\n",
" [210, 212, 211]]], dtype=uint8)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"url = 'https://imagesvc.meredithcorp.io/v3/mm/image?q=85&c=sc&rect=0%2C214%2C2000%2C1214&poi=%5B920%2C546%5D&w=2000&h=1000&url=https%3A%2F%2Fstatic.onecms.io%2Fwp-content%2Fuploads%2Fsites%2F47%2F2020%2F10%2F07%2Fcat-in-pirate-costume-380541532-2000.jpg'\n",
"imgr = imageio.imread(url)\n",
"imgr"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Convert this image from RGB to a grayscale DataFrame using a utility function provided by fivecentplots:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n", " | 0 | \n", "1 | \n", "2 | \n", "3 | \n", "4 | \n", "5 | \n", "6 | \n", "7 | \n", "8 | \n", "9 | \n", "... | \n", "1990 | \n", "1991 | \n", "1992 | \n", "1993 | \n", "1994 | \n", "1995 | \n", "1996 | \n", "1997 | \n", "1998 | \n", "1999 | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.9070 | \n", "220.9070 | \n", "... | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "
1 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "219.9071 | \n", "219.9071 | \n", "... | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "
2 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "219.9071 | \n", "219.9071 | \n", "... | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "
3 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "219.9071 | \n", "219.9071 | \n", "... | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "
4 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.907 | \n", "220.9070 | \n", "220.9070 | \n", "... | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "219.9071 | \n", "
5 rows × 2000 columns
\n", "Notes: \n", "\n", "(1) the original ratio of the image height and width are preserved regardless of the values of `ax_size`, which will just apply to the largest of the two dimensions\n", "\n", "(2) tick labels are turned off by default (use `tick_labels_major=True` to enable)
\n", " \n", "(3) imshow uses the \"gray\" colormap by default\n", "\n", " | 0 | \n", "1 | \n", "2 | \n", "3 | \n", "4 | \n", "5 | \n", "6 | \n", "7 | \n", "8 | \n", "9 | \n", "... | \n", "390 | \n", "391 | \n", "392 | \n", "393 | \n", "394 | \n", "395 | \n", "396 | \n", "397 | \n", "398 | \n", "399 | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "47 | \n", "47 | \n", "47 | \n", "48 | \n", "46 | \n", "47 | \n", "45 | \n", "45 | \n", "48 | \n", "46 | \n", "... | \n", "47 | \n", "103 | \n", "49 | \n", "103 | \n", "48 | \n", "104 | \n", "47 | \n", "96 | \n", "69 | \n", "0 | \n", "
1 | \n", "47 | \n", "95 | \n", "47 | \n", "96 | \n", "48 | \n", "85 | \n", "47 | \n", "90 | \n", "46 | \n", "95 | \n", "... | \n", "102 | \n", "46 | \n", "103 | \n", "51 | \n", "100 | \n", "46 | \n", "100 | \n", "42 | \n", "121 | \n", "0 | \n", "
2 | \n", "46 | \n", "46 | \n", "47 | \n", "47 | \n", "47 | \n", "48 | \n", "46 | \n", "48 | \n", "48 | \n", "47 | \n", "... | \n", "49 | \n", "102 | \n", "47 | \n", "105 | \n", "47 | \n", "102 | \n", "50 | \n", "98 | \n", "73 | \n", "0 | \n", "
3 | \n", "47 | \n", "104 | \n", "46 | \n", "113 | \n", "47 | \n", "102 | \n", "48 | \n", "89 | \n", "47 | \n", "101 | \n", "... | \n", "103 | \n", "47 | \n", "106 | \n", "49 | \n", "102 | \n", "44 | \n", "100 | \n", "44 | \n", "122 | \n", "2 | \n", "
4 | \n", "47 | \n", "47 | \n", "48 | \n", "46 | \n", "48 | \n", "48 | \n", "46 | \n", "48 | \n", "48 | \n", "48 | \n", "... | \n", "47 | \n", "103 | \n", "45 | \n", "107 | \n", "48 | \n", "107 | \n", "48 | \n", "101 | \n", "72 | \n", "0 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
295 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "... | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "46 | \n", "48 | \n", "44 | \n", "75 | \n", "0 | \n", "
296 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "... | \n", "47 | \n", "47 | \n", "48 | \n", "47 | \n", "47 | \n", "47 | \n", "48 | \n", "43 | \n", "77 | \n", "0 | \n", "
297 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "... | \n", "47 | \n", "47 | \n", "48 | \n", "47 | \n", "47 | \n", "47 | \n", "48 | \n", "43 | \n", "77 | \n", "0 | \n", "
298 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "... | \n", "47 | \n", "47 | \n", "48 | \n", "47 | \n", "47 | \n", "47 | \n", "48 | \n", "43 | \n", "77 | \n", "0 | \n", "
299 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "47 | \n", "... | \n", "47 | \n", "47 | \n", "48 | \n", "47 | \n", "47 | \n", "47 | \n", "48 | \n", "43 | \n", "77 | \n", "0 | \n", "
300 rows × 400 columns
\n", "`imshow` is one of two plot types (`hist` and `imshow`) that allows us to pass a 2D numpy array instead of a `DataFrame`. When plotting a single image, we don't need column names so we don't technically need a `DataFrame`. Why do we allow this? This is a sneaky, under-the-table trick just to make life easier. Numpy arrays are converted into `DataFrames` behind the scenes so you don't have to take an extra step. This can be our dirty little secret...
\n", "