{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# 幾何図形とフラクタルを描画する\n", "## matplotlibのパッチで幾何図形を描く" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "x = [1, 2, 3]\n", "y = [1, 2, 3]\n", "plt.plot(x, y)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAD8CAYAAABw1c+bAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzt3Xl8VPW5x/HPA4R9N+wQAgKygxpBERdcQUVE7S1q1boU69Xb2tsquCtS11ZrqxZRUWldagkoRRSworiBAoUkhC3s+04Ie5bn/jFjb4oJTMhkTpL5vl+vvHLyO2dmnjkcvjlzzslzzN0REZH4USXoAkREJLYU/CIicUbBLyISZxT8IiJxRsEvIhJnFPwiInFGwS8iEmcU/CIicUbBLyISZ6oFXUBREhMTPTk5OegyREQqjHnz5m139yaRLFsugz85OZm5c+cGXYaISIVhZmsiXVaHekRE4oyCX0Qkzij4RUTijIJfRCTOKPhFROLMMYPfzGqa2bdmttDMFpnZo0UsU8PM/mZmWWY2x8ySC827Nzy+1Mwujm75IiJSUpHs8R8CznP3XkBvYKCZnX7EMrcAu9y9A/Ac8BSAmXUFhgHdgIHAS2ZWNVrFi4hIyR0z+D1kb/jHhPDXkfdrHAK8GZ6eAJxvZhYef9fdD7n7KiAL6BOVykVEKpHvVu9kzOcrYvJaER3jN7OqZrYA2ArMcPc5RyzSClgH4O55QDZwQuHxsPXhsaJeY7iZzTWzudu2bSvZuxARqaD2HsrjoQ8y+NGYb3h7zlr2H84r89eMKPjdPd/dewOtgT5m1j3ahbj7WHdPcfeUJk0i+qtjEZEK7fNl27j4uVn8ZfYabjozmY9+eRa1q5d9Q4USvYK77zazmYSO12cUmrUBaAOsN7NqQANgR6Hx77UOj4mIxK1d+w7z2IeZTJy/gQ5N6zLh5/04tW2jmL1+JFf1NDGzhuHpWsCFwJIjFpsM3Bievhr41N09PD4sfNVPO6Aj8G20ihcRqUjcnanpm7jwuc+ZvGAj/3NeBz78Rf+Yhj5EtsffAngzfDVOFeA9d59iZqOAue4+GXgN+IuZZQE7CV3Jg7svMrP3gEwgD7jD3fPL4o2IiJRnW/cc5MEPMpi2aAs9WjVg/M196dqyfiC1WGjHvHxJSUlxdecUkcrA3fn7vPWMnpLJobwCfnVhJ27t345qVaP797NmNs/dUyJZtly2ZRYRqQzW7dzPvRPT+TJrO32SG/PkVT1o36Ru0GUp+EVEoi2/wHnz69U8M20pVasYj13Rnev6JFGligVdGqDgFxGJquVbchiRmsb8tbs596QmPD60By0b1gq6rP+g4BcRiYLc/ALGfLaCP32aRZ0aVfnDj3szpHdLQk0MyhcFv4hIKaWvz+buCQtZsjmHy3q24JHLu5FYt0bQZRVLwS8icpwO5ubz3CfLeGXWShLr1mDs9adyUbfmQZd1TAp+EZHjMHvlDu6dmM6q7fu4pk8bRg7qQoNaCUGXFREFv4hICeQczOXJj5bw1py1JDWuzdu39qVfh8SgyyoRBb+ISIRmLtnKfZPS2bLnILf2b8f/XtQpJk3Voq3iVSwiEmM79x1m1D8W8f6CjXRsWpeXbu/HyUmx7a8TTQp+EZFiuDtT0jbxyORFZB/I5Zfnd+S/B5xIjWoV+0aCCn4RkSJs2XOQ+ydl8MniLfRs3YC3ftaXzs2DaaoWbQp+EZFC3J2/fbeO305dTG5+Afdf0oWbzkyOelO1ICn4RUTC1uzYx8jUdL5ZuYPT2zfmySt7kpxYJ+iyok7BLyJxL7/Aef2rVfxu+lISqlTh8aE9GHZam3LTVC3ajhn8ZtYGGA80AxwY6+7PH7HM3cB1hZ6zC9DE3Xea2WogB8gH8iLtFy0iEgtLN+dwT2oaC9ft5vzOTRk9tDstGpSvpmrRFskefx7wa3efb2b1gHlmNsPdM79fwN2fAZ4BMLPBwK/cfWeh5xjg7tujWbiISGkczivgpc+yeHFmFvVqJvD8sN5c3qt8NlWLtmMGv7tvAjaFp3PMbDHQitDtFItyDfBO1CoUEYmyBet2M2JCGku35DCkd0seuqwrJ5TjpmrRVqJj/GaWDJwMzClmfm1gIHBnoWEHppuZAy+7+9jjqlREpJQOHM7n2RlLee3LVTStV5PXbkzh/C7Ngi4r5iIOfjOrC6QCd7n7nmIWGwx8dcRhnv7uvsHMmgIzzGyJu88q4vmHA8MBkpKSIn4DIiKR+HrFdkamprN2536u7ZvEyEGdqV+zYjRVi7aIgt/MEgiF/lvuPvEoiw7jiMM87r4h/H2rmU0C+gA/CP7wJ4GxELrZekTVi4gcw56DuTwxdQnvfLuWtifU5p2fnc4ZJ54QdFmBiuSqHgNeAxa7+7NHWa4BcA7wk0JjdYAq4XMDdYCLgFGlrlpEJAKfZG7h/vfT2ZZziOFnt+dXF3SiVvWK3W4hGiLZ4z8TuB5IN7MF4bH7gCQAdx8THhsKTHf3fYUe2wyYFD5LXg14290/jkbhIiLF2bH3EI/+I5PJCzfSuXk9xl6fQq82DYMuq9yI5KqeL4FjXt/k7m8AbxwxthLodZy1iYiUiLszeeFGHpm8iL2H8vjVBZ24/dwTqV6t8rRbiAb95a6IVAobdx/ggfcz+HTJVnq3acjTV/ekU7N6QZdVLin4RaRCKyhw3vluLU9MXUJ+gfPgZV35ab9kqlbSdgvRoOAXkQpr1fZ9jExNY86qnZzZ4QSeGNqTpBNqB11WuafgF5EKJy+/gHFfreL305dRvVoVnrqqB/+V0iYu2i1Eg4JfRCqUxZv2MCI1jbT12VzYtRmjr+hOs/o1gy6rQlHwi0iFcCgvnxc/zeKlz1bQoFYCL1x7Mpf2aKG9/OOg4BeRcm/+2l2MmJDG8q17ufLkVjx4WVca1akedFkVloJfRMqt/Yfz+N20Zbz+9Spa1K/J6zedxoCTmgZdVoWn4BeRcumrrO2MnJjGup0HuP70ttwz8CTqxWlTtWhT8ItIuZJ9IJfHP1zM3+auo11iHf42/HT6to/vpmrRpuAXkXJj2qLNPPh+Bjv2Hebn55zIXRd0pGaCmqpFm4JfRAK3LecQj0xexIfpm+jSoj6v3XgaPVo3CLqsSkvBLyKBcXcm/WsDo6Zksv9QPr+5qBO3nXMiCVXVVK0sKfhFJBAbdh/g/knpfLZ0G6ckhZqqdWiqpmqxoOAXkZgqKHDemrOGJz9aggOPDO7K9WeoqVosKfhFJGZWbNvLyNQ0vlu9i7M6JvL40B60aaymarF2zANpZtbGzGaaWaaZLTKzXxaxzLlmlm1mC8JfDxWaN9DMlppZlpmNjPYbEJHyLy+/gJc+y2LQ81+wdHMOz1zdk/E391HoBySSPf484NfuPt/M6gHzzGyGu2cesdwX7n5Z4QEzqwq8CFwIrAe+M7PJRTxWRCqpRRuzGZGaRsaGPQzs1pxRQ7rRVE3VAhXJrRc3AZvC0zlmthhoBUQS3n2ArPAtGDGzd4EhET5WRCqwg7n5/OnT5Yz5fCWNalfnz9edwqAeLYIuSyjhMX4zSwZOBuYUMfsMM1sIbAR+4+6LCP2CWFdomfVA3+OqVEQqjHlrdnLPhDRWbNvHVae05sHLutCwtpqqlRcRB7+Z1QVSgbvcfc8Rs+cDbd19r5ldArwPdCxJIWY2HBgOkJSUVJKHikg5se9QHs9MW8qb36ymZYNavHlzH87p1CTosuQIEQW/mSUQCv233H3ikfML/yJw96lm9pKZJQIbgDaFFm0dHvsBdx8LjAVISUnxiN+BiJQLs5Zt496J6WzMPsANp7fl7oGdqVtDFw6WR8f8V7HQXQ5eAxa7+7PFLNMc2OLubmZ9CF0ttAPYDXQ0s3aEAn8YcG20iheR4O3ef5jRHy5mwrz1tG9Sh/duO4PTkhsHXZYcRSS/js8ErgfSzWxBeOw+IAnA3ccAVwO3m1kecAAY5u4O5JnZncA0oCowLnzsX0QqgY/SN/HgB4vYtf8wdww4kf85T03VKgIL5XP5kpKS4nPnzg26DBEpxtacgzz8wSI+ythMt5b1efrqnnRrqaZqQTKzee6eEsmyOgAnIhFzdybMW8/oDxdzIDefewaexM/Oaq+mahWMgl9EIrJu537um5TOF8u3c1pyI568qicnNqkbdFlyHBT8InJUBQXO+G9W8/S0pRgwakg3ftK3LVXUVK3CUvCLSLGytuYwIjWdeWt2cXanJjw+tDutG6m/TkWn4BeRH8jNL2DsrJU8/8lyateoyu9/1IsrT2lF6OpuqegU/CLyHzI2ZHPPhDQyN+3h0h4teOTybjSpVyPosiSKFPwiAoSaqj3/z+WMnbWSxnWqM+YnpzKwe/Ogy5IyoOAXEb5dtZORqWms3L6P/0ppzf2XdKVB7YSgy5IyouAXiWN7D+Xx1EdL+MvsNbRuVIu/3tKX/h0Tgy5LypiCXyROzVy6lfsnprNpz0FuOjOZ31x0EnXUVC0u6F9ZJM7s2neYx6ZkMvFfG+jQtC4Tft6PU9s2CrosiSEFv0iccHempm/m4ckZ7N6fyy/O68Ad53WgRjU1VYs3Cn6ROLBlz0EefD+D6Zlb6NGqAeNv7kvXlvWDLksCouAXqcTcnffmrmP0h4s5nFfAvYM6c0v/dlRTU7W4puAXqaTW7tjPvZPS+CprB33aNebJK3vQXk3VBAW/SKWTX+C88fVqfjdtKVWrGKOv6M61fZLUVE3+LZJbL7YBxgPNAAfGuvvzRyxzHTACMCAHuN3dF4bnrQ6P5QN5kd4oQERKbvmWHO5JTeNfa3cz4KQm/HZoD1o2rBV0WVLORLLHnwf82t3nm1k9YJ6ZzXD3zELLrALOcfddZjaI0E3T+xaaP8Ddt0evbBEp7HBeAWM+X8GfPl1O3RrV+MOPezOkd0s1VZMiHTP43X0TsCk8nWNmi4FWQGahZb4u9JDZQOso1ykixVi4bjcjUtNYsjmHwb1a8vDgriTWVVM1KV6JjvGbWTJwMjDnKIvdAnxU6GcHppuZAy+7+9hinns4MBwgKSmpJGWJxKUDh/P5wyfLeOWLlTSpV4NXbkjhwq7Ngi5LKoCIg9/M6gKpwF3uvqeYZQYQCv7+hYb7u/sGM2sKzDCzJe4+68jHhn8hjIXQzdZL8B5E4s7slTsYmZrG6h37uaZPG0YO6kKDWmqqJpGJKPjNLIFQ6L/l7hOLWaYn8CowyN13fD/u7hvC37ea2SSgD/CD4BeRY8s5mMuTHy3hrTlrSWpcm7dv7Uu/DmqqJiUTyVU9BrwGLHb3Z4tZJgmYCFzv7ssKjdcBqoTPDdQBLgJGRaVykTjz6ZIt3D8pgy17DnJr/3b870WdqF1dV2RLyUWy1ZwJXA+km9mC8Nh9QBKAu48BHgJOAF4KX0Xw/WWbzYBJ4bFqwNvu/nFU34FIJbdj7yFGTcnkgwUb6dSsLi9d14+Tk9RUTY5fJFf1fEno+vyjLXMrcGsR4yuBXsddnUgcc3f+kbaJRyYvIudgLr88vyN3DOhA9WpqtyClo8+JIuXQ5uyDPPB+Op8s3kqv1g146uq+dG6upmoSHQp+kXLE3Xn3u3U8/uFicgsKuP+SLtzcvx1V1W5BokjBL1JOrN6+j3snpvPNyh2c3r4xT17Zk+TEOkGXJZWQgl8kYPkFzrgvV/H7GUtJqFKFJ67swbDT2qjdgpQZBb9IgJZuzuGeCQtZuD6bC7o0ZfQVPWjeoGbQZUklp+AXCcDhvAJenJnFS59lUa9mAn+85mQG92yhvXyJCQW/SIwtWLebeyYsZNmWvQzp3ZKHB3ejcZ3qQZclcUTBLxIj+w/n8ez0ZYz7ahVN69XktRtTOL+LmqpJ7Cn4RWLg66ztjJyYztqd+7mubxIjBnWmfk01VZNgKPhFylD2gVyemLqYd79bR/IJtXl3+Omc3v6EoMuSOKfgFykjMzK38MD76WzLOcRtZ7fnrgs6Uat61aDLElHwi0Tb9r2HeGTyIqakbaJz83q8ckMKPVs3DLoskX9T8ItEibvzwYKNPPqPRew9lMf/XtiJn59zopqqSbmj4BeJgo27D3D/pHRmLt1G7zYNefrqnnRqVi/oskSKpOAXKYWCAuetb9fy1EdLyC9wHrysKz/tl6ymalKuHfMzqJm1MbOZZpZpZovM7JdFLGNm9kczyzKzNDM7pdC8G81sefjrxmi/AZGgrNq+j2GvzObB9zPo1aYB0+46m1vUSVMqgEj2+POAX7v7fDOrB8wzsxnunllomUFAx/BXX+DPQF8zaww8DKQAHn7sZHffFdV3IRJDefkFvPrlKp6bsYzq1arw9FU9+VFKa7VbkAojkjtwbQI2hadzzGwx0AooHPxDgPHu7sBsM2toZi2Ac4EZ7r4TwMxmAAOBd6L6LkRiJHPjHkakppG+IZsLuzZj9BXdaVZfTdWkYinRMX4zSwZOBuYcMasVsK7Qz+vDY8WNi1Qoh/LyeeHTLP782Qoa1k7gxWtP4ZIezbWXLxVSxMFvZnWBVOAud98T7ULMbDgwHCApKSnaTy9y3Oat2cWI1DSytu5l6MmteOiyrjRSUzWpwCIKfjNLIBT6b7n7xCIW2QC0KfRz6/DYBkKHewqPf1bUa7j7WGAsQEpKikdSl0hZ2ncoj99NX8obX6+mRf2avH7TaQw4qWnQZYmU2jGD30KfZV8DFrv7s8UsNhm408zeJXRyN9vdN5nZNOBxM2sUXu4i4N4o1C1Spr5Yvo17J6azftcBbjijLfcM7EzdGrr6WSqHSLbkM4HrgXQzWxAeuw9IAnD3McBU4BIgC9gP3BSet9PMHgO+Cz9u1PcnekXKo+z9ufx2aibvzV1Pu8Q6vHfbGfRp1zjoskSiKpKrer4EjnoGK3w1zx3FzBsHjDuu6kRi6OOMzTz4QQY79x3m9nNP5Jfnd6RmgpqqSeWjz64S97blhJqqfZi+iS4t6jPuxtPo0bpB0GWJlBkFv8Qtd2fi/A2MmpLJgcP53H3xSQw/uz0JVdVUTSo3Bb/EpfW79nPfpAxmLdvGqW0b8dRVPenQtG7QZYnEhIJf4kpBgfPXOWt46qMlOPDI4K7ccEYyVdRfR+KIgl/ixoptexmZmsZ3q3dxVsdEHh/agzaNawddlkjMKfil0svNL+CVL1byh0+WU7NaFZ65uidXn6qmahK/FPxSqWVsyGZEahqLNu5hYLfmjLqiG03rqamaxDcFv1RKB3Pz+eM/l/PyrJU0ql2dP193CoN6tAi6LJFyQcEvlc7c1Tu5JzWNldv2cfWprXng0i40rK2maiLfU/BLpbH3UB7PfLyE8bPX0LJBLcbf3IezOzUJuiyRckfBL5XC58u2cd/EdDZmH+DGM5K5++KTqKOmaiJF0v8MqdB27z/MY1MWkzp/Pe2b1OHvt51BSrKaqokcjYJfKqyp6Zt46IMMdu3P5Y4BJ/I/56mpmkgkFPxS4Wzdc5CHPljEx4s2061lfd68uQ/dWqqpmkikFPxSYbg7f5+3ntFTMjmYV8CIgZ352VntqKamaiIlouCXCmHdzv3cNymdL5Zv57TkRjx5VU9ObKKmaiLHI5JbL44DLgO2unv3IubfDVxX6Pm6AE3Cd99aDeQA+UCeu6dEq3CJD/kFzvhvVvPMtKUY8NiQblzXt62aqomUQiR7/G8ALwDji5rp7s8AzwCY2WDgV0fcXnGAu28vZZ0Sh7K25nDPhDTmr93NOZ2a8Nuh3WndSE3VREorklsvzjKz5Aif7xrgndIUJJKbX8DLn6/gj//MonaNqjz7X70YenIrNVUTiZKoHeM3s9rAQODOQsMOTDczB15297HRej2pnNLXZ3P3hIUs2ZzDpT1b8MjgbjSpVyPoskQqlWie3B0MfHXEYZ7+7r7BzJoCM8xsibvPKurBZjYcGA6QlJQUxbKkIjiYm88fPlnOK1+spHGd6rx8/alc3K150GWJVErRDP5hHHGYx903hL9vNbNJQB+gyOAPfxoYC5CSkuJRrEvKuTkrdzByYjqrtu/jxyltuO+SLjSonRB0WSKVVlSC38waAOcAPyk0Vgeo4u454emLgFHReD2pHHIO5vL0x0v5y+w1tG5Ui7/e0pf+HRODLkuk0ovkcs53gHOBRDNbDzwMJAC4+5jwYkOB6e6+r9BDmwGTwifkqgFvu/vH0StdKrKZS7Zy/6R0Nu05yM1ntuM3F3eidnX9WYlILERyVc81ESzzBqHLPguPrQR6HW9hUjnt3HeYx6ZkMulfG+jYtC4Tft6PU9s2CroskbiiXSyJCXfnw/RNPPzBIrIP5PKL8zpwx3kdqFFNTdVEYk3BL2Vuy56DPPB+BjMyt9CjVQP+emtfurSoH3RZInFLwS9lxt15b+46Rn+4mMN5Bdw7qDO39FdTNZGgKfilTKzdsZ+RE9P4esUO+rRrzFNX9aRdYp2gyxIRFPwSZfkFzutfreL305dRtYox+oruXNsnSU3VRMoRBb9EzbItoaZqC9bt5rzOTRl9RXdaNqwVdFkicgQFv5Ta4bwC/vzZCl6YuZy6Narx/LDeXN6rpZqqiZRTCn4plYXrdjMiNY0lm3MY3Ksljwzuygl11VRNpDxT8MtxOXA4n+c+WcarX6ykSb0avHJDChd2bRZ0WSISAQW/lNg3K3Zw78Q0Vu/YzzV92nDvJV2oX1NN1UQqCgW/RGzPwVye/GgJb89ZS1Lj2rx9a1/6dVBTNZGKRsEvEfnn4i3cPymDrTkH+dlZ7fjfC0+iVnW1WxCpiBT8clQ79h7i0X9kMnnhRk5qVo8x159K7zYNgy5LREpBwS9FcncmL9zIo//IJOdgLndd0JH/PrcD1aup3YJIRafglx/YlH2AByZl8M8lW+nVpiFPX9WTk5rXC7osEYkSBb/8W0GB8+5363hi6mJyCwp44NIu3HRmO6qq3YJIpXLMz+1mNs7MtppZRjHzzzWzbDNbEP56qNC8gWa21MyyzGxkNAuX6Fq9fR/Xvjqb+yal071VA6bddTa3ntVeoS9SCUWyx/8G8AIw/ijLfOHulxUeMLOqwIvAhcB64Dszm+zumcdZq5SBvPwCxoWbqlWvWoUnr+zBj09ro3YLIpVYJLdenGVmycfx3H2ArPAtGDGzd4EhgIK/nFiyeQ8jJqSxcH02F3RpyugretC8Qc2gyxKRMhatY/xnmNlCYCPwG3dfBLQC1hVaZj3Qt7gnMLPhwHCApKSkKJUlRTmUl8+LM1fw0swsGtRK4E/XnMxlPVtoL18kTkQj+OcDbd19r5ldArwPdCzpk7j7WGAsQEpKikehLinCv9buYkRqGsu27OWK3i15aHA3GtepHnRZIhJDpQ5+d99TaHqqmb1kZonABqBNoUVbh8ckAPsP5/H76csY99UqmtevybifpnBeZzVVE4lHpQ5+M2sObHF3N7M+hK4U2gHsBjqaWTtCgT8MuLa0rycl91XWdkZOTGPdzgNc1zeJkYM6U09N1UTi1jGD38zeAc4FEs1sPfAwkADg7mOAq4HbzSwPOAAMc3cH8szsTmAaUBUYFz72LzGSfSCXJ6Yu5t3v1pF8Qm3eHX46p7c/IeiyRCRgFsro8iUlJcXnzp0bdBkV2vRFm3ng/Qy27z3Ez85uz68u6ETNBDVVE6mszGyeu6dEsqz+creS2b73EI9MXsSUtE10bl6PV29MoWdrNVUTkf+n4K8k3J33F2zg0X9ksv9QPr++sBO3nXOimqqJyA8o+CuBjbsPcP+kdGYu3cbJSaGmah2bqamaiBRNwV+BFRQ4b327lienLqbA4aHLunJjv2T11xGRo1LwV1Art+1lZGo6367eSf8OiTxxZQ/aNK4ddFkiUgEo+CuYvPwCXv1yFc/NWEb1alV4+qqe/CiltdotiEjEFPwVSObGPdyTupCMDXu4qGszHruiO83qq6maiJSMgr8COJSXzwufZvHnz1bQsHYCL157Cpf0aK69fBE5Lgr+cm7emp2MSE0na+terjylFQ9e2pVGaqomIqWg4C+n9h3K45lpS3nzm9W0bFCLN246jXNPahp0WSJSCSj4y6Evlm/j3onprN91gBvOaMs9AztTt4b+qUQkOpQm5Uj2/lxGf5jJ3+etp31iHd677Qz6tGscdFkiUsko+MuJjzM28+AHGezcd5jbzz2RX57fUU3VRKRMKPgDtjXnII9MXsTU9M10bVGf1396Gt1bNQi6LBGpxBT8AXF3Uudv4LEpmRzIzefui09i+NntSaiqpmoiUrYU/AFYv2s/903KYNaybZzathFPXdWTDk3rBl2WiMSJSO7ANQ64DNjq7t2LmH8dMAIwIAe43d0XhuetDo/lA3mR3iSgsioocP4yew1PfbwEgEcv78b1p7elipqqiUgMRbLH/wbwAjC+mPmrgHPcfZeZDQLGAn0LzR/g7ttLVWUlsGLbXkZMSGPuml2c1TGRx4eqqZqIBOOYwe/us8ws+Sjzvy7042ygdenLqjxy8wsYO2slz/9zObUSqvK7H/XiqlNaqd2CiAQm2sf4bwE+KvSzA9PNzIGX3X1scQ80s+HAcICkpKQolxWMjA3ZjEhNY9HGPVzSozmPXN6NpvXUVE1EghW14DezAYSCv3+h4f7uvsHMmgIzzGyJu88q6vHhXwpjIXSz9WjVFYSDufn88Z/LeXnWShrVrs6Yn5zCwO4tgi5LRASIUvCbWU/gVWCQu+/4ftzdN4S/bzWzSUAfoMjgryy+W72TERPSWLl9Hz86tTUPXNqVBrUTgi5LROTfSh38ZpYETASud/dlhcbrAFXcPSc8fREwqrSvV17tPZTH0x8vYfw3a2jVsBbjb+7D2Z2aBF2WiMgPRHI55zvAuUCima0HHgYSANx9DPAQcALwUviE5feXbTYDJoXHqgFvu/vHZfAeAvf5sm3cNzGdjdkH+Gm/ZO6++CTqqKmaiJRTkVzVc80x5t8K3FrE+Eqg1/GXVv7t3n+YUVMymTh/Ayc2qcPfbzuDlGQ1VROR8k27pcfB3fkoYzMPfZDB7v253DmgA3ee10FN1USkQlDwl9DWPQd58IMMpi3aQvdW9Xnz5j50a6mmaiJScSj4I+Tu/H3eekZPyeRgXgEjBnbmZ2e1o5qaqolIBaPgj8C6nfsH9TOrAAAH90lEQVS5d2I6X2Ztp09yY568qgftm6ipmohUTAr+o8gvcMZ/s5qnP15KFYPHhnTjur5qqiYiFZuCvxhZW3O4Z0Ia89fu5pxOTXj8yh60algr6LJEREpNwX+E3PwCxny2gj99mkXtGlV57se9uKK3mqqJSOWh4C8kfX02d09YyJLNOVzaswWPXt6NxLo1gi5LRCSqFPyEmqo998kyXpm1ksS6NXj5+lO5uFvzoMsSESkTcR/8c1buYOTEdFZt38ePU9pw36VdaFBLTdVEpPKK2+DPOZjLUx8v4a+z19KmcS3eurUvZ3ZIDLosEZEyF5fBP3PJVu6flM6mPQe5pX87fn1RJ2pXj8tVISJxKK7Sbue+wzw2JZNJ/9pAx6Z1Sb29H6ckNQq6LBGRmIqL4Hd3pqRt4pHJi8g+kMsvzu/IHQNOpEY1NVUTkfhT6YN/y56D3D8pg08Wb6Fn6wb89da+dGlRP+iyREQCE1GHMTMbZ2ZbzSyjmPlmZn80sywzSzOzUwrNu9HMloe/boxW4cfi7rz77VouePZzvli+jfsu6czE2/sp9EUk7kW6x/8G8AIwvpj5g4CO4a++wJ+BvmbWmNAdu1IAB+aZ2WR331Waoo9l7Y79jJyYxtcrdtC3XWOeuqonyYl1yvIlRUQqjIiC391nmVnyURYZAox3dwdmm1lDM2tB6JaNM9x9J4CZzQAGAu+Upuji5Bc4r3+1it9NX0q1KlX47dDuXHNakpqqiYgUEq1j/K2AdYV+Xh8eK2486rL353Lj69+yYN1uzuvclN8O7U6LBmqqJiJypHJzctfMhgPDAZKSkkr8+Pq1qtH2hNrcdGYyl/dqqaZqIiLFiNbtozYAbQr93Do8Vtz4D7j7WHdPcfeUJk2alLgAM+P5YSczRJ00RUSOKlrBPxm4IXx1z+lAtrtvAqYBF5lZIzNrBFwUHhMRkYBEdKjHzN4hdKI20czWE7pSJwHA3ccAU4FLgCxgP3BTeN5OM3sM+C78VKO+P9ErIiLBiPSqnmuOMd+BO4qZNw4YV/LSRESkLETrUI+IiFQQCn4RkTij4BcRiTMKfhGROKPgFxGJMxa6IKd8MbNtwJrjfHgisD2K5USL6ioZ1VUyqqtkKmNdbd09or9+LZfBXxpmNtfdU4Ku40iqq2RUV8morpKJ97p0qEdEJM4o+EVE4kxlDP6xQRdQDNVVMqqrZFRXycR1XZXuGL+IiBxdZdzjFxGRo6gwwV9eb/geQV3XhetJN7OvzaxXoXmrw+MLzGxujOs618yyw6+9wMweKjRvoJktDa/LkTGu6+5CNWWYWX743s1lvb7amNlMM8s0s0Vm9ssilon5NhZhXTHfxiKsK+bbWIR1xXwbM7OaZvatmS0M1/VoEcvUMLO/hdfJHCt0u1szuzc8vtTMLi51Qe5eIb6As4FTgIxi5l8CfAQYcDowJzzeGFgZ/t4oPN0ohnX1+/71CN2Ufk6heauBxIDW17nAlCLGqwIrgPZAdWAh0DVWdR2x7GDg0xitrxbAKeHpesCyI993ENtYhHXFfBuLsK6Yb2OR1BXENhbeZuqGpxOAOcDpRyzz38CY8PQw4G/h6a7hdVQDaBded1VLU0+F2eN391nA0Xr5//uG7+4+G/j+hu8XE77hu7vvAr6/4XtM6nL3r8OvCzCb0F3IylwE66s4fYAsd1/p7oeBdwmt2yDqugZ4J1qvfTTuvsnd54enc4DF/PD+0DHfxiKpK4htLML1VZwy28aOo66YbGPhbWZv+MeE8NeRJ1iHAG+GpycA55uZhcffdfdD7r6K0H1P+pSmngoT/BEI/IbvEbiF0B7j9xyYbmbzLHTP4Vg7I/zR8yMz6xYeKxfry8xqEwrP1ELDMVlf4Y/YJxPaKyss0G3sKHUVFvNt7Bh1BbaNHWt9xXobM7OqZrYA2EpoR6HY7cvd84Bs4ATKYH2Vm5utV3ZmNoDQf8r+hYb7u/sGM2sKzDCzJeE94liYT+hPvPea2SXA+0DHGL12JAYDX/l/3rGtzNeXmdUlFAR3ufueaD53aURSVxDb2DHqCmwbi/DfMabbmLvnA73NrCEwycy6u3uR57rKWmXa4y/1Dd/Lipn1BF4Fhrj7ju/H3X1D+PtWYBKl/PhWEu6+5/uPnu4+FUgws0TKwfoKG8YRH8HLen2ZWQKhsHjL3ScWsUgg21gEdQWyjR2rrqC2sUjWV1jMt7Hwc+8GZvLDw4H/Xi9mVg1oAOygLNZXNE9glPUXkEzxJysv5T9PvH0bHm8MrCJ00q1ReLpxDOtKInRMrt8R43WAeoWmvwYGxrCu5vz/33H0AdaG1101Qicn2/H/J966xaqu8PwGhM4D1InV+gq/9/HAH46yTMy3sQjrivk2FmFdMd/GIqkriG0MaAI0DE/XAr4ALjtimTv4z5O774Wnu/GfJ3dXUsqTuxXmUI+V0xu+R1DXQ4SO070UOk9DnoeaMDUj9HEPQv8R3nb3j2NY19XA7WaWBxwAhnloK8szszuBaYSuvhjn7otiWBfAUGC6u+8r9NAyXV/AmcD1QHr4OCzAfYRCNchtLJK6gtjGIqkriG0skrog9ttYC+BNM6tK6EjLe+4+xcxGAXPdfTLwGvAXM8si9EtpWLjmRWb2HpAJ5AF3eOiw0XHTX+6KiMSZynSMX0REIqDgFxGJMwp+EZE4o+AXEYkzCn4RkTij4BcRiTMKfhGROKPgFxGJM/8HI2BYU5sKiWAAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "x = [1, 2, 3]\n", "y = [1, 2, 3]\n", "fig = plt.figure()\n", "ax = plt.axes()\n", "plt.plot(x,y)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 円を描く" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "'''\n", "matplotlibの円パッチの使用例\n", "'''\n", "import matplotlib.pyplot as plt\n", "\n", "\n", "def create_circle():\n", " circle = plt.Circle((0, 0), radius=0.5)\n", " return circle\n", "\n", "\n", "def show_shape(patch):\n", " ax = plt.gca()\n", " ax.add_patch(patch)\n", " plt.axis('scaled')\n", " plt.show()\n", "\n", "\n", "if __name__ == '__main__':\n", " c = create_circle()\n", " show_shape(c)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 図形のアニメーションを作る" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "
" ] }, "execution_count": 0, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'''\n", "大きくなる円\n", "'''\n", "\n", "from matplotlib import pyplot as plt\n", "from matplotlib import animation\n", "\n", "\n", "def create_circle():\n", " circle = plt.Circle((0, 0), 0.05)\n", " return circle\n", "\n", "\n", "def update_radius(i, circle):\n", " circle.radius = i * 0.5\n", " return circle\n", "\n", "\n", "def create_animation():\n", " fig = plt.gcf()\n", " ax = plt.axes(xlim=(-10, 10), ylim=(-10, 10))\n", " ax.set_aspect('equal')\n", " circle = create_circle()\n", " ax.add_patch(circle)\n", " anim = animation.FuncAnimation(fig, update_radius, fargs=(circle,), frames=30, interval=50)\n", " plt.title('Simple Circle Animation')\n", " plt.show()\n", "\n", "\n", "if __name__ == '__main__':\n", " create_animation()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 投射軌跡のアニメーション" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "'''\n", "投射運動オブジェクトの軌跡アニメーション\n", "'''\n", "\n", "from matplotlib import pyplot as plt\n", "from matplotlib import animation\n", "import math\n", "\n", "g = 9.8\n", "\n", "\n", "def get_intervals(u, theta):\n", " t_flight = 2 * u * math.sin(theta) / g\n", " intervals = []\n", " start = 0\n", " interval = 0.005\n", " while start < t_flight:\n", " intervals.append(start)\n", " start = start + interval\n", " return intervals\n", "\n", "\n", "def update_position(i, circle, intervals, u, theta):\n", " t = intervals[i]\n", " x = u * math.cos(theta) * t\n", " y = u * math.sin(theta) * t - 0.5 * g * t * t\n", " circle.center = x, y\n", " return circle\n", "\n", "\n", "def create_animation(u, theta):\n", " intervals = get_intervals(u, theta)\n", "\n", " xmin = 0\n", " xmax = u * math.cos(theta) * intervals[-1]\n", " ymin = 0\n", " t_max = u * math.sin(theta) / g\n", " ymax = u * math.sin(theta) * t_max - 0.5 * g * t_max ** 2\n", " fig = plt.gcf()\n", " ax = plt.axes(xlim=(xmin, xmax), ylim=(ymin, ymax))\n", "\n", " circle = plt.Circle((xmin, ymin), 1.0)\n", " ax.add_patch(circle)\n", " anim = animation.FuncAnimation(fig, update_position, fargs=(circle, intervals, u, theta), frames=len(intervals),\n", " interval=1, repeat=False)\n", " plt.title('Projecttitle Motion')\n", " plt.xlabel('X')\n", " plt.ylabel('Y')\n", " plt.show()\n", "\n", "\n", "if __name__ == '__main__':\n", " try:\n", " u = float(1)\n", " theta = float(1)\n", " except ValueError:\n", " print('You entered an invalid input')\n", " else:\n", " theta = math.radians(theta)\n", " create_animation(7, theta)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 平面上の点の変換" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "'''\n", "2つの等確率変換を選ぶ例\n", "'''\n", "import matplotlib.pyplot as plt\n", "import random\n", "\n", "\n", "def transformation_1(p):\n", " x = p[0]\n", " y = p[1]\n", " return x + 1, y - 1\n", "\n", "\n", "def transformation_2(p):\n", " x = p[0]\n", " y = p[1]\n", " return x + 1, y + 1\n", "\n", "\n", "def transform(p):\n", " transformations = [transformation_1, transformation_2]\n", " t = random.choice(transformations)\n", " x, y = t(p)\n", " return x, y\n", "\n", "\n", "def build_trajectory(p, n):\n", " x = [p[0]]\n", " y = [p[1]]\n", " for i in range(n):\n", " p = transform(p)\n", " x.append(p[0])\n", " y.append(p[1])\n", " return x, y\n", "\n", "\n", "if __name__ == '__main__':\n", " p = (1, 1)\n", " n = int(10000)\n", " x, y = build_trajectory(p, n)\n", " plt.plot(x, y)\n", " plt.xlabel('X')\n", " plt.ylabel('Y')\n", " plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### バーンスレイのシダを描く" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "'''\n", "バーンスレイのシダを描く\n", "'''\n", "import random\n", "import matplotlib.pyplot as plt\n", "\n", "\n", "def transformation_1(p):\n", " x = p[0]\n", " y = p[1]\n", " x1 = 0.85 * x + 0.04 * y\n", " y1 = -0.04 * x + 0.85 * y + 1.6\n", " return x1, y1\n", "\n", "\n", "def transformation_2(p):\n", " x = p[0]\n", " y = p[1]\n", " x1 = 0.2 * x + 0.26 * y\n", " y1 = 0.23 * x + 0.22 * y + 1.6\n", " return x1, y1\n", "\n", "\n", "def transformation_3(p):\n", " x = p[0]\n", " y = p[1]\n", " x1 = -0.15 * x + 0.28 * y\n", " y1 = 0.26 * x + 0.24 * y + 0.44\n", " return x1, y1\n", "\n", "\n", "def transformation_4(p):\n", " x = p[0]\n", " y = p[1]\n", " x1 = 0\n", " y1 = 0.16 * y\n", " return x1, y1\n", "\n", "\n", "def get_index(probability):\n", " r = random.random()\n", " c_probability = 0\n", " sum_probability = []\n", " for p in probability:\n", " c_probability += p\n", " sum_probability.append(c_probability)\n", " for item, sp in enumerate(sum_probability):\n", " if r <= sp:\n", " return item\n", " return len(probability) - 1\n", "\n", "\n", "def transform(p):\n", " # 変換関数のリスト\n", " transformations = [transformation_1, transformation_2, transformation_3, transformation_4]\n", " probability = [0.85, 0.07, 0.07, 0.01]\n", " # ランダム変換関数を選ぶ\n", " tindex = get_index(probability)\n", " t = transformations[tindex]\n", " x, y = t(p)\n", " return x, y\n", "\n", "\n", "def draw_fern(n):\n", " # (0, 0)から始める\n", " x = [0]\n", " y = [0]\n", "\n", " x1, y1 = 0, 0\n", " for i in range(n):\n", " x1, y1 = transform((x1, y1))\n", " x.append(x1)\n", " y.append(y1)\n", " return x, y\n", "\n", "\n", "if __name__ == '__main__':\n", " n = int(1000)\n", " x, y = draw_fern(n)\n", " # 点をプロット\n", " plt.plot(x, y, 'o')\n", " plt.title('Fern with {0} points'.format(n))\n", " plt.show()\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "import matplotlib.cm as cm\n", "import random\n", "\n", "\n", "def initialize_image(x_p, y_p):\n", " image = []\n", " for i in range(y_p):\n", " x_colors = []\n", " for j in range(x_p):\n", " x_colors.append(0)\n", " image.append(x_colors)\n", " return image\n", "\n", "\n", "def color_points():\n", " x_p = 20\n", " y_p = 20\n", " image = initialize_image(x_p, y_p)\n", " for i in range(y_p):\n", " for j in range(x_p):\n", " image[i][j] = random.randint(0, 10)\n", " plt.imshow(image, origin='lower', extent=(0, 5, 0, 5),\n", " cmap=cm.Greys_r, interpolation='nearest')\n", " plt.colorbar()\n", " plt.show()\n", "\n", "\n", "if __name__ == '__main__':\n", " color_points()\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 0 }