Skip to content

Instantly share code, notes, and snippets.

@benbovy
Created January 13, 2018 00:29
Show Gist options
  • Save benbovy/fce796c663728b1bdbb3f1514daa458c to your computer and use it in GitHub Desktop.
Save benbovy/fce796c663728b1bdbb3f1514daa458c to your computer and use it in GitHub Desktop.
Width of rendered text vs. number of characters
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Width of rendered text vs. number of characters"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import string\n",
"import random\n",
"import itertools\n",
"from tkinter import font as tkfont\n",
"import tkinter as tk\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compute the width of rendered text from many random conbinations of characters (fixed length) and repeat this operation for a sequence of increasing number of characters.\n",
"\n",
"Note: font-family and font-sizes are not known ; these are chosen randomly from a limited collection/range."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"nchar_range = range(5, 50, 5)\n",
"all_chars = string.ascii_letters + string.digits + '-_'\n",
"\n",
"# see tkfont.families() for available fonts\n",
"font_families = ('Helvetica', 'Helvetica Neue', 'Arial') \n",
"font_sizes = range(10, 13)\n",
"\n",
"data = []\n",
"\n",
"root = tk.Tk()\n",
"\n",
"for nc in nchar_range:\n",
" for i in range(20000):\n",
" ffamily = random.choice(font_families)\n",
" fsize = random.choice(font_sizes)\n",
" font = tkfont.Font(family=ffamily, size=fsize, weight='normal')\n",
"\n",
" text = ''.join([random.choice(all_chars) for _ in range(nc)])\n",
" \n",
" width = font.measure(text)\n",
" data.append((nc, ffamily, fsize, width))\n",
"\n",
"root.destroy()\n",
"\n",
"cols = ['nchar', 'font_family', 'font_size', 'width']\n",
"df = pd.DataFrame(data, columns=cols)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compute the 90% percentiles of the resulting distributions."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"percentile90 = df.groupby('nchar').width.quantile(0.90)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot the distributions and 90% percentiles."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1155bdef0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(10, 8))\n",
"\n",
"sns.violinplot(x='nchar', y='width', data=df,\n",
" scale='width', color='lightgreen', ax=ax)\n",
"\n",
"ax.plot(range(len(percentile90)), percentile90, 'o', ms=10);"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"nchar\n",
"5 5.23920\n",
"10 7.95740\n",
"15 9.67055\n",
"20 11.36900\n",
"25 13.20030\n",
"30 14.88985\n",
"35 16.67370\n",
"40 19.32125\n",
"45 21.10140\n",
"Name: width, dtype: float64"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"percentile90 - df.groupby('nchar').width.mean()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda env:xarray_dev_py36]",
"language": "python",
"name": "conda-env-xarray_dev_py36-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment