{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import os\n", "import pandas as pd\n", "import janitor\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "from matplotlib.ticker import MaxNLocator\n", "import math\n" ] }, { "cell_type": "code", "execution_count": 1, "outputs": [ { "data": { "text/html": " \n " }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import os\n", "import numpy as np\n", "import pandas as pd\n", "import janitor\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "from matplotlib.ticker import MaxNLocator\n", "import math\n", "import plotly.express as px\n", "import plotly.graph_objects as go\n", "import plotly.offline as pyo\n", "from plotly.subplots import make_subplots\n", "import plotly.graph_objects as go\n", "pyo.init_notebook_mode()\n", "\n", "import plotly.io as pio\n", "pio.renderers.default = \"plotly_mimetype+notebook\"\n", "\n", "import country_converter as coco\n", "cc = coco.CountryConverter()\n", "\n", "\n", "%matplotlib inline" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 18, "outputs": [], "source": [ "tls_801 = pd.read_csv(r\"./EU_CH_scope/table_tls801.csv\", low_memory=False)\n", "# tls_801.head()\n", "scope_df = tls_801[((tls_801.eu_member==\"Y\")|\n", " (tls_801.ctry_code == 'NO')|\n", " (tls_801.ctry_code == 'CH')|\n", " (tls_801.ctry_code == 'GB'))]\n", "scope_countries = scope_df[\"ctry_code\"].unique()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "outdir=\"raw_files_csv\"" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 9, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\radvanyi\\AppData\\Local\\Temp\\ipykernel_14780\\163466245.py:1: DtypeWarning:\n", "\n", "Columns (2,6,8) have mixed types. Specify dtype option on import or set low_memory=False.\n", "\n" ] }, { "data": { "text/plain": " appln_id appln_auth appln_nr appln_kind appln_filing_date \n5420565 492443204 CN 201710924209 A 2017-09-30 \\\n4123443 476745655 CN 201510575292 A 2015-09-11 \n12669428 584371570 CN 202211359033 A 2022-11-02 \n2837134 447940178 CN 201510724424 A 2015-10-29 \n3917352 474354000 CN 201610699880 A 2016-08-19 \n7083405 510565742 CN 201910024682 A 2019-01-10 \n10061891 549184042 CN 202011496905 A 2020-12-17 \n12187346 578289051 CN 202210716624 A 2022-06-23 \n8750003 533546770 CN 202010149696 A 2020-03-06 \n2150113 439343652 CN 201410639681 A 2014-11-14 \n\n appln_filing_year appln_nr_original ipr_type receiving_office \n5420565 2017 201710924209 PI NaN \\\n4123443 2015 201510575292 PI NaN \n12669428 2022 202211359033 PI NaN \n2837134 2015 2015107244247 PI NaN \n3917352 2016 201610699880 PI NaN \n7083405 2019 201910024682 PI NaN \n10061891 2020 202011496905 PI NaN \n12187346 2022 202210716624 PI NaN \n8750003 2020 202010149696 PI NaN \n2150113 2014 2014106396816 PI NaN \n\n internat_appln_id ... earliest_pat_publn_id granted \n5420565 0 ... 492443205 Y \\\n4123443 0 ... 476745656 N \n12669428 0 ... 584371571 N \n2837134 0 ... 447940179 N \n3917352 0 ... 474354001 N \n7083405 0 ... 510565743 Y \n10061891 0 ... 549184043 Y \n12187346 0 ... 578289052 N \n8750003 0 ... 533546771 Y \n2150113 0 ... 439343653 N \n\n docdb_family_id inpadoc_family_id docdb_family_size \n5420565 61698252 492443204 1 \\\n4123443 58346251 476745655 1 \n12669428 84336840 584371570 1 \n2837134 54942635 447940178 1 \n3917352 57825252 474354000 1 \n7083405 65916569 510565742 1 \n10061891 75448776 549184042 1 \n12187346 82910930 578289051 1 \n8750003 71152278 533546770 1 \n2150113 52882593 439343652 1 \n\n nb_citing_docdb_fam nb_applicants nb_inventors is_prior is_pct \n5420565 1 1 5 1 0 \n4123443 1 4 6 1 0 \n12669428 0 0 0 1 0 \n2837134 0 1 4 1 0 \n3917352 7 1 1 1 0 \n7083405 6 1 9 1 0 \n10061891 1 1 3 1 0 \n12187346 0 1 1 1 0 \n8750003 0 1 1 1 0 \n2150113 0 1 1 1 0 \n\n[10 rows x 28 columns]", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
appln_idappln_authappln_nrappln_kindappln_filing_dateappln_filing_yearappln_nr_originalipr_typereceiving_officeinternat_appln_id...earliest_pat_publn_idgranteddocdb_family_idinpadoc_family_iddocdb_family_sizenb_citing_docdb_famnb_applicantsnb_inventorsis_prioris_pct
5420565492443204CN201710924209A2017-09-302017201710924209PINaN0...492443205Y61698252492443204111510
4123443476745655CN201510575292A2015-09-112015201510575292PINaN0...476745656N58346251476745655114610
12669428584371570CN202211359033A2022-11-022022202211359033PINaN0...584371571N84336840584371570100010
2837134447940178CN201510724424A2015-10-2920152015107244247PINaN0...447940179N54942635447940178101410
3917352474354000CN201610699880A2016-08-192016201610699880PINaN0...474354001N57825252474354000171110
7083405510565742CN201910024682A2019-01-102019201910024682PINaN0...510565743Y65916569510565742161910
10061891549184042CN202011496905A2020-12-172020202011496905PINaN0...549184043Y75448776549184042111310
12187346578289051CN202210716624A2022-06-232022202210716624PINaN0...578289052N82910930578289051101110
8750003533546770CN202010149696A2020-03-062020202010149696PINaN0...533546771Y71152278533546770101110
2150113439343652CN201410639681A2014-11-1420142014106396816PINaN0...439343653N52882593439343652101110
\n

10 rows × 28 columns

\n
" }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln = pd.read_csv(f\"{outdir}/01_patent_subset.csv\", low_memory=False)\n", "appln.sample(10)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 11, "outputs": [ { "data": { "text/plain": "appln_kind\nA 13029613\nW 154696\nName: count, dtype: int64" }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln[\"appln_kind\"].value_counts()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 12, "outputs": [], "source": [ "appln_pers = pd.read_csv(f\"{outdir}/02_persons_2011_2022.csv\",low_memory=False)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 15, "outputs": [ { "data": { "text/plain": "(54368949, 13184309)" }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(appln_pers[\"appln_id\"]), len(appln[\"appln_id\"])" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 16, "outputs": [ { "data": { "text/plain": "(54368949, 12646904)" }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_pers[\"appln_id\"].isin(appln[\"appln_id\"]).sum(), appln[\"appln_id\"].isin(appln_pers[\"appln_id\"]).sum()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 17, "outputs": [ { "data": { "text/plain": " appln_id appln_auth person_id invt_seq_nr applt_seq_nr \n1272384 407289438 CN 19595222 2 0 \\\n3185053 405545436 CN 43675023 0 1 \n46333633 572273359 CN 84986987 0 1 \n30374458 548032681 CN 64435157 0 1 \n38909435 548873284 CN 60805890 1 0 \n30940025 526314971 CN 58196262 0 1 \n33160256 532257650 CN 59633449 1 0 \n36415288 542989931 CN 64932427 1 0 \n12378533 470871991 CN 60097863 6 0 \n28095179 517589803 CN 58759116 2 0 \n\n person_name person_ctry_code \n1272384 LI CHAOYANG NaN \\\n3185053 QINGDAO CREEK NEW ENVIRONMENTAL MATERIALS CO.,... NaN \n46333633 XI'AN PETROLEUM UNIVERSITY NaN \n30374458 SOUTH-CENTRAL UNIVERSITY FOR NATIONALITIES NaN \n38909435 LI HAIYAN NaN \n30940025 ANHUI JIANGHUAI AUTOMOBILE GROUP CORP., LTD. NaN \n33160256 NIE JING NaN \n36415288 LIU BO NaN \n12378533 SHENG LI NaN \n28095179 CAO JINGYUAN NaN \n\n han_id han_name \n1272384 119595222 LI CHAOYANG \n3185053 143675023 QINGDAO CREEK NEW ENVIRONMENTAL MATERIALS CO.,... \n46333633 184986987 XI'AN PETROLEUM UNIVERSITY \n30374458 164435157 SOUTH-CENTRAL UNIVERSITY FOR NATIONALITIES \n38909435 160805890 LI HAIYAN \n30940025 158196262 ANHUI JIANGHUAI AUTOMOBILE GROUP CORP., LTD. \n33160256 159633449 NIE JING \n36415288 164932427 LIU BO \n12378533 160097863 SHENG LI \n28095179 158759116 CAO JINGYUAN ", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
appln_idappln_authperson_idinvt_seq_nrapplt_seq_nrperson_nameperson_ctry_codehan_idhan_name
1272384407289438CN1959522220LI CHAOYANGNaN119595222LI CHAOYANG
3185053405545436CN4367502301QINGDAO CREEK NEW ENVIRONMENTAL MATERIALS CO.,...NaN143675023QINGDAO CREEK NEW ENVIRONMENTAL MATERIALS CO.,...
46333633572273359CN8498698701XI'AN PETROLEUM UNIVERSITYNaN184986987XI'AN PETROLEUM UNIVERSITY
30374458548032681CN6443515701SOUTH-CENTRAL UNIVERSITY FOR NATIONALITIESNaN164435157SOUTH-CENTRAL UNIVERSITY FOR NATIONALITIES
38909435548873284CN6080589010LI HAIYANNaN160805890LI HAIYAN
30940025526314971CN5819626201ANHUI JIANGHUAI AUTOMOBILE GROUP CORP., LTD.NaN158196262ANHUI JIANGHUAI AUTOMOBILE GROUP CORP., LTD.
33160256532257650CN5963344910NIE JINGNaN159633449NIE JING
36415288542989931CN6493242710LIU BONaN164932427LIU BO
12378533470871991CN6009786360SHENG LINaN160097863SHENG LI
28095179517589803CN5875911620CAO JINGYUANNaN158759116CAO JINGYUAN
\n
" }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_pers.sample(10)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 98, "outputs": [ { "data": { "text/plain": "" }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": "
", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiEAAAG6CAYAAADeXpaaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/hElEQVR4nO3dd3RUdf7/8ddMAgQIJYBEwRUVFEJoIUHXNSpLE5ASUFyQpoiA1FVQF1glgvToCokuRaKgIMoCYUVAqgVE0AhkiYYfYV1AigkQSjoh9/cH34wMUzKTCVzK83EO5zCfe9/3fjJz597XrWMxDMMQAADAVWY1uwMAAODmRAgBAACmIIQAAABTEEIAAIApCCEAAMAUhBAAAGAKQggAADAFIQQAAJiCEAIAAEzhb3YHinPy5Dk5e6arxSJVr17J5fDiUE899dRTTz31pV9fNNwT13wIMQy5fZOKG+7r9Kmnnnrqqaee+tKvlzgdAwAATEIIAQAApiCEAAAAUxBCAACAKQghAADAFIQQAABgCkIIAAAwBSEEAACYghACAABMQQgBAACmKHEIyc/PV6dOnbRjxw6X4/z000/q0aOHmjZtqscff1x79+4t6ewAAMANpkQhJC8vTy+++KL279/vcpzs7GwNGjRIERERWrFihcLCwjR48GBlZ2eXuLMAAODG4XUISU1N1ZNPPqlDhw65HW/NmjUqV66cXn75ZdWtW1fjx49XxYoVtW7duhJ3FgAA3Di8DiE7d+7U/fffr08++cTteHv27FF4eLgsFoskyWKxqHnz5tq9e3eJOgoAAG4s/t4WPPXUUx6Nl56ernr16tm1Va9e3e0pHGf+L8O4bHc13NPpUk+9p6xWyyWh+mKbv7/V9lPWhmGosND171pTTz311N8M9d6sV70OIZ7KyclR2bJl7drKli2r/Px8r6ZTvXoln4b7On3qqS9yodCQn9X+21W1akW3w6mnnnrqqXftioWQcuXKOQSO/Px8BQQEeDWdkyfP2ZLWpSyWixsQV8OLQz313tT7+VkVFFRRo5buUmpapsPwejUDNatnmDIysnThQiH11FNP/U1bX7R+9cQVCyHBwcE6ceKEXduJEydUs2ZNr6ZjGHK7kShuuK/Tp576S6WmZSr56Nlip0k99dRTT33xrtjDypo2bapdu3bJ+L8eGYahH3/8UU2bNr1SswQAANeRUg0h6enpys3NlSS1b99eZ8+e1eTJk5WamqrJkycrJydHHTp0KM1ZAgCA61SphpDIyEitWbNGkhQYGKi5c+cqMTFR3bt31549ezRv3jxVqFChNGcJAACuUz5dE7Jv3z63r5s0aaKVK1f6MgsAAHCD4gfsAACAKQghAADAFIQQAABgCkIIAAAwBSEEAACYghACAABMQQgBAACmIIQAAABTEEIAAIApCCEAAMAUhBAAAGAKQggAADAFIQQAAJiCEAIAAExBCAEAAKYghAAAAFMQQgAAgCkIIQAAwBT+ZncA8JTVapHVarFr8/P7PUcXFhoqLDSuWD0AoHQRQnBdsFotqlK1gvz97A/eBQVVtP2/4EKhzpzOdhokfK0HAJQ+QgiuC1arRf5+Vo1aukupaZkOw+vVDNSsnmGyWi0uQ4gv9QCA0kcIwXUlNS1TyUfPmlYPACg9XJgKAABMQQgBAACmIIQAAABTEEIAAIApCCEAAMAUhBAAAGAKQggAADAFIQQAAJiCEAIAAExBCAEAAKYghAAAAFMQQgAAgCkIIQAAwBSEEAAAYApCCAAAMAUhBAAAmIIQAgAATEEIAQAApiCEAAAAUxBCAACAKQghAADAFIQQAABgCkIIAAAwBSEEAACYghACAABMQQgBAACmIIQAAABTEEIAAIApCCEAAMAUhBAAAGAKQggAADAFIQQAAJiCEAIAAExBCAEAAKYghAAAAFMQQgAAgCkIIQAAwBReh5C8vDyNGzdOERERioyMVHx8vMtxN2zYoA4dOigsLEy9evVScnKyT50FAAA3Dq9DyIwZM7R3714tXLhQEyZMUFxcnNatW+cw3v79+zV69GgNHjxYq1atUkhIiAYPHqycnJxS6TgAALi+eRVCsrOztWzZMo0fP16hoaFq27atBg4cqMWLFzuMu23bNtWrV09RUVG644479OKLLyo9PV2pqaml1nkAAHD98vdm5JSUFBUUFCgsLMzWFh4erjlz5qiwsFBW6++ZpmrVqkpNTVViYqLCwsK0YsUKBQYG6o477vCqgxaL+3ZXwz2dLvXXZ70n06aeeuqpp/7q13szDa9CSHp6uoKCglS2bFlbW40aNZSXl6fTp0+rWrVqtvaOHTtq8+bNeuqpp+Tn5yer1aq5c+eqSpUq3sxS1atX8mm4r9On/tquv1xQUEXqqaeeeuqvk3qvQkhOTo5dAJFke52fn2/XnpGRofT0dL322mtq2rSpPv74Y40dO1YrV65U9erVPZ7nyZPnZBiO7RbLxQ2Yq+HFof76qvfzs3q0gGdkZOnChULqqaeeeupNqi9av3vCqxBSrlw5h7BR9DogIMCuPSYmRvfee6969+4tSZo0aZI6dOig5cuXa9CgQR7P0zDkdiNV3HBfp0/9tV3vaprUU0899dRf+/VeXZgaHBysjIwMFRQU2NrS09MVEBCgypUr242bnJysBg0a/D4jq1UNGjTQ0aNHveshAAC4IXkVQkJCQuTv76/du3fb2hITE9W4cWO7i1IlqWbNmjpw4IBd2y+//KLbb7+95L0FAAA3DK9CSPny5RUVFaXo6GglJSVp48aNio+PV79+/SRdPCqSm5srSXryySf16aefKiEhQQcPHlRMTIyOHj2qbt26lf5fAQAArjteXRMiSWPHjlV0dLT69++vwMBAjRgxQu3atZMkRUZGaurUqerevbs6duyorKwszZ07V8ePH1dISIgWLlzo1UWpAADgxuV1CClfvrymT5+u6dOnOwzbt2+f3esePXqoR48eJe8dAAC4YfEDdgAAwBSEEAAAYAqvT8cAJWW1WmS12j/P18/v9xxcWGiosLCUHxoCALhmEUJwVVitFlWpWkH+fvYH3y59Cl/BhUKdOZ1NEAGAmwQhBFeF1WqRv59Vo5buUmpapsPwejUDNatnmKxWCyEEAG4ShBBcValpmUo+etbsbgAArgFcmAoAAExBCAEAAKYghAAAAFNwTQg8xi22AIDSRAiBR7jFFgBQ2ggh8Ai32AIAShshBF7hFlsAQGnhwlQAAGAKQggAADAFIQQAAJiCEAIAAExBCAEAAKYghAAAAFMQQgAAgCkIIQAAwBSEEAAAYApCCAAAMAUhBAAAmIIQAgAATEEIAQAApiCEAAAAUxBCAACAKQghAADAFIQQAABgCkIIAAAwBSEEAACYghACAABMQQgBAACmIIQAAABTEEIAAIApCCEAAMAUhBAAAGAKQggAADCFv9kdwNVjtVpktVrs2vz8fs+hhYWGCguNq90tAMBNihByk7BaLapStYL8/ewPfgUFVbT9v+BCoc6cziaIAACuCkLITcJqtcjfz6pRS3cpNS3TYXi9moGa1TNMVquFEAIAuCoIITeZ1LRMJR89a3Y3AADgwlQAAGAOQggAADAFIQQAAJiCEAIAAExBCAEAAKYghAAAAFMQQgAAgCkIIQAAwBSEEAAAYApCCAAAMAUhBAAAmIIQAgAATEEIAQAApiCEAAAAUxBCAACAKbwOIXl5eRo3bpwiIiIUGRmp+Ph4l+Pu27dPvXr1UpMmTdS5c2d99913PnUWAADcOLwOITNmzNDevXu1cOFCTZgwQXFxcVq3bp3DeOfOndOAAQNUr149ffbZZ2rbtq2GDx+ukydPlkrHAQDA9c2rEJKdna1ly5Zp/PjxCg0NVdu2bTVw4EAtXrzYYdyVK1eqQoUKio6OVp06dTRy5EjVqVNHe/fuLbXOAwCA65e/NyOnpKSooKBAYWFhtrbw8HDNmTNHhYWFslp/zzQ7d+5U69at5efnZ2tbvnx5KXQZAADcCLw6EpKenq6goCCVLVvW1lajRg3l5eXp9OnTduMePnxY1apV06uvvqoHH3xQTz75pBITE73uoMXi+l9xw4v7dzPV+/qeU0899dRTT72n9Z7y6khITk6OXQCRZHudn59v156dna158+apX79+mj9/vj7//HM9++yzWrt2rW677TaP51m9eiWfhvs6/Ru9/nJBQRWpp5566qmn/qrUexVCypUr5xA2il4HBATYtfv5+SkkJEQjR46UJDVs2FDbtm3TqlWrNGTIEI/nefLkORmGY7vFcnED7Gp4cW62ej8/q0cLSEZGli5cKKSeeuqpp576EtUXbZ884VUICQ4OVkZGhgoKCuTvf7E0PT1dAQEBqly5st24t9xyi+6++267tjvvvFPHjh3zZpYyDLndyBY33Nfp3+j1rqZJPfXUU0899Ve63qtrQkJCQuTv76/du3fb2hITE9W4cWO7i1IlqVmzZtq3b59d23//+1/Vrl3bux4CAIAbklchpHz58oqKilJ0dLSSkpK0ceNGxcfHq1+/fpIuHhXJzc2VJPXs2VP79u1TbGysDh48qFmzZunw4cPq2rVr6f8VAADguuP1w8rGjh2r0NBQ9e/fX6+//rpGjBihdu3aSZIiIyO1Zs0aSVLt2rX13nvvacuWLerUqZO2bNmiefPmKTg4uHT/gpuI1WqRv79V/v5W+fld/Oj8/Ky2NqvVy8uYAQAwkVfXhEgXj4ZMnz5d06dPdxh2+emX8PBwrVixouS9g43ValGVqhXk72efGy+9WKjgQqHOnM5WYWEpXyQCAMAV4HUIgTmsVov8/awatXSXUtMyHYbXqxmoWT3DZLVaCCEAgOsCIeQ6k5qWqeSjZ83uBgAAPvP6mhAAAIDSQAgBAACmIIQAAABTEEIAAIApCCEAAMAUhBAAAGAKQggAADAFIQQAAJiCEAIAAExBCAEAAKYghAAAAFMQQgAAgCkIIQAAwBSEEAAAYApCCAAAMAUhBAAAmIIQAgAATEEIAQAApvA3uwM3E6vVIqvVYtfm5/d7DiwsNFRYaFztbgEAYApCyFVitVpUpWoF+fvZH3wKCqpo+3/BhUKdOZ1NEAEA3BQIIVeJ1WqRv59Vo5buUmpapsPwejUDNatnmKxWCyEEAHBTIIRcZalpmUo+etbsbgAAYDouTAUAAKYghAAAAFMQQgAAgCkIIQAAwBSEEAAAYApCCAAAMAUhBAAAmIIQAgAATEEIAQAApiCEAAAAUxBCAACAKQghAADAFIQQAABgCkIIAAAwBSEEAACYghACAABMQQgBAACmIIQAAABTEEIAAIApCCEAAMAUhBAAAGAKQggAADAFIQQAAJjC3+wOXE+sVousVotdm5/f7zmusNBQYaFxtbsFAMB1iRDiIavVoipVK8jfz/7gUVBQRdv/Cy4U6szpbIIIAAAeIIR4yGq1yN/PqlFLdyk1LdNheL2agZrVM0xWq4UQAgCABwghXkpNy1Ty0bNmdwMAgOseF6YCAABTEEIAAIApCCEAAMAUhBAAAGAKQggAADAFIQQAAJiCEAIAAEzhdQjJy8vTuHHjFBERocjISMXHxxdb8+uvvyosLEw7duwoUScBAMCNx+uHlc2YMUN79+7VwoULdfToUb3yyiuqVauW2rdv77ImOjpa2dnZPnUUAADcWLwKIdnZ2Vq2bJnmz5+v0NBQhYaGav/+/Vq8eLHLEPLvf/9bWVlZpdJZAABw4/DqdExKSooKCgoUFhZmawsPD9eePXtUWFjoMH5GRoZmzpypiRMn+t5TAABwQ/HqSEh6erqCgoJUtmxZW1uNGjWUl5en06dPq1q1anbjT5s2Td26ddM999xT4g5aLO7bXQ33dLolrfdk2tRTTz311FN/s9V7Mw2vQkhOTo5dAJFke52fn2/X/u233yoxMVGrV6/2ZhYOqlev5NNwX6fvraCgitRTTz311FNPvQe8CiHlypVzCBtFrwMCAmxtubm5eu211zRhwgS79pI4efKcDMOx3WK5GCBcDS+Ot/V+flaP3uCMjCxduOB4aop66qmnnnrqb4b6ou2rJ7wKIcHBwcrIyFBBQYH8/S+WpqenKyAgQJUrV7aNl5SUpMOHD2vkyJF29c8995yioqK8ukbEMOQ2JBQ33Nfpl3Sa1FNPPfXUU0+9e16FkJCQEPn7+2v37t2KiIiQJCUmJqpx48ayWn+/xrVJkyZav369XW27du30xhtv6MEHH/SuhwAA4IbkVQgpX768oqKiFB0drSlTpigtLU3x8fGaOnWqpItHRSpVqqSAgADVqVPHoT44OFjVq1cvnZ4DAIDrmtdPTB07dqxCQ0PVv39/vf766xoxYoTatWsnSYqMjNSaNWtKvZMAAODG4/UTU8uXL6/p06dr+vTpDsP27dvnss7dMAAAcPPhB+wAAIApCCEAAMAUhBAAAGAKQggAADAFIQQAAJiCEAIAAExBCAEAAKYghAAAAFMQQgAAgCkIIQAAwBSEEAAAYApCCAAAMAUhBAAAmIIQAgAATEEIAQAApiCEAAAAUxBCAACAKQghAADAFIQQAABgCkIIAAAwBSEEAACYghACAABMQQgBAACmIIQAAABTEEIAAIApCCEAAMAUhBAAAGAKQggAADAFIQQAAJiCEAIAAExBCAEAAKYghAAAAFMQQgAAgCkIIQAAwBSEEAAAYApCCAAAMAUhBAAAmIIQAgAATEEIAQAApiCEAAAAUxBCAACAKQghAADAFIQQAABgCkIIAAAwBSEEAACYghACAABMQQgBAACmIIQAAABTEEIAAIApCCEAAMAUhBAAAGAKQggAADAFIQQAAJiCEAIAAExBCAEAAKYghAAAAFMQQgAAgCkIIQAAwBSEEAAAYAqvQ0heXp7GjRuniIgIRUZGKj4+3uW4X375pbp27aqwsDB17txZmzZt8qmzAADgxuF1CJkxY4b27t2rhQsXasKECYqLi9O6descxktJSdHw4cP1+OOPKyEhQT179tSoUaOUkpJSKh0HAADXN39vRs7OztayZcs0f/58hYaGKjQ0VPv379fixYvVvn17u3FXr16tP/7xj+rXr58kqU6dOtq8ebPWrl2rBg0alN5fAAAArktehZCUlBQVFBQoLCzM1hYeHq45c+aosLBQVuvvB1a6deum8+fPO0zj3LlzXnXQYnHf7mq4p9Mtab0n06aeeuqpp576m63em2l4FULS09MVFBSksmXL2tpq1KihvLw8nT59WtWqVbO1161b1652//792r59u3r27OnNLFW9eiWfhvs6fW8FBVWknnrqqaeeeuo94FUIycnJsQsgkmyv8/PzXdadOnVKI0aMUPPmzdW6dWuvOnjy5DkZhmO7xXIxQLgaXhxv6/38rB69wRkZWbpwoZB66qmnnnrqb8r6ou2rJ7wKIeXKlXMIG0WvAwICnNacOHFCzzzzjAzD0OzZs+1O2XjCMOQ2JBQ33Nfpl3Sa1FNPPfXUU0+9e14lguDgYGVkZKigoMDWlp6eroCAAFWuXNlh/N9++029e/dWfn6+Fi1aZHe6BgAA3Ny8CiEhISHy9/fX7t27bW2JiYlq3LixwxGO7OxsDRw4UFarVR999JGCg4NLpcMAAODG4FUIKV++vKKiohQdHa2kpCRt3LhR8fHxtttw09PTlZubK0maO3euDh06pOnTp9uGpaene313DAAAuDF5dU2IJI0dO1bR0dHq37+/AgMDNWLECLVr106SFBkZqalTp6p79+764osvlJubqx49etjVd+vWTdOmTSud3gMAgOuW1yGkfPnymj59uu0Ix6X27dtn+7+zp6gCAAAU4QfsAACAKQghAADAFIQQAABgCq+vCbmeWa0WWa32D7X38/s9hxUWGiosLOUnlwEAAKdumhBitVpUpWoF+fvZH/y59FG0BRcKdeZ0NkEEAICr4KYKIf5+Vo1aukupaZkOw+vVDNSsnmGyWi2EEAAAroKbJoQUSU3LVPLRs2Z3AwCAmx4XpgIAAFMQQgAAgCkIIQAAwBSEEAAAYApCCAAAMAUhBAAAmIIQAgAATEEIAQAApiCEAAAAUxBCAACAKQghAADAFIQQAABgCkIIAAAwBSEEAACYghACAABMQQgBAACmIIQAAABTEEIAAIApCCEAAMAUhBAAAGAKQggAADAFIQQAAJiCEAIAAExBCAEAAKYghAAAAFMQQgAAgCkIIQAAwBSEEAAAYApCCAAAMAUhBAAAmIIQAgAATEEIAQAApiCEAAAAUxBCAACAKQghAADAFIQQAABgCkIIAAAwBSEEAACYghACAABMQQgBAACmIIQAAABTEEIAAIApCCEAAMAUhBAAAGAKQggAADAFIQQAAJiCEAIAAExBCAEAAKYghAAAAFMQQgAAgCkIIQAAwBReh5C8vDyNGzdOERERioyMVHx8vMtxf/rpJ/Xo0UNNmzbV448/rr179/rUWQAAcOPwOoTMmDFDe/fu1cKFCzVhwgTFxcVp3bp1DuNlZ2dr0KBBioiI0IoVKxQWFqbBgwcrOzu7VDoOAACub16FkOzsbC1btkzjx49XaGio2rZtq4EDB2rx4sUO465Zs0blypXTyy+/rLp162r8+PGqWLGi08ACAABuPl6FkJSUFBUUFCgsLMzWFh4erj179qiwsNBu3D179ig8PFwWi0WSZLFY1Lx5c+3evdv3XgMAgOuevzcjp6enKygoSGXLlrW11ahRQ3l5eTp9+rSqVatmN269evXs6qtXr679+/d71UGrVTKMi/+3WCyXhJr/+wP8rbbhhmHIKHrhQmityipf1s+h/e4aFe3mST311FNPPfXUe19ftH32hMUobqt9iYSEBM2aNUtbtmyxtR0+fFht2rTRV199pVtvvdXW3r9/f4WHh2vkyJG2tlmzZmnXrl364IMPPO8hAAC4IXl1OqZcuXLKz8+3ayt6HRAQ4NG4l48HAABuTl6FkODgYGVkZKigoMDWlp6eroCAAFWuXNlh3BMnTti1nThxQjVr1vShuwAA4EbhVQgJCQmRv7+/3cWliYmJaty4sayXnUhq2rSpdu3aZbtGwzAM/fjjj2ratKnvvQYAANc9r0JI+fLlFRUVpejoaCUlJWnjxo2Kj49Xv379JF08KpKbmytJat++vc6ePavJkycrNTVVkydPVk5Ojjp06FD6fwUAALjueHVhqiTl5OQoOjpa69evV2BgoJ599lk9/fTTkqT69etr6tSp6t69uyQpKSlJEyZM0IEDB1S/fn29/vrratiwYan/EQAA4PrjdQgBAAAoDfyAHQAAMAUhBAAAmIIQAgAATEEIAQAApiCEADeouLg45eTkmN0NAHCJEFIK9uzZo+joaI/HP378uI4ePWr7l5WVVaL5pqamat++fSWqvZbk5eXp8OHDpvbhX//6l9P21q1bKyMjw+fpG4ahgwcPas+ePTp48KDDr067cunTid05duyYQ9s777yj7Oxsr/oJXOro0aO6cOGC23HOnz+v77///ir16OYyceJE7dq1y+xuXFFe/YquGRo0aGD75Vx3LBaLfvrpp6vQo4uOHz+uVatWKSEhQb/88otuueUWl0Fk/fr1iouL08KFCxUUFKQOHTrYHuomSfXq1dPy5cvtfp34UmvXrtXatWslSV26dFFkZKQGDRqknTt3ymKxqG7dupozZ45uv/12h9q4uDg9++yzKl++vF3fa9asaXvK7dmzZ/XXv/5V8fHxJXovCgoKlJSUpObNm5eofufOnRo0aJB+/vnnEtW7U1BQoHnz5mnjxo3y8/NT+/btNWDAANsylZSUpEmTJmnv3r164oknHOqPHDnicWBwJicnR3FxcVqxYoVOnz4twzBksVhUtWpVde/eXSNGjHD7e0pDhgzRO++8o3LlyrkcZ+nSpYqJidEPP/xg114ad9/37dvXo++fJC1atMih7Wosf6UhMzNTgYGBpT7duLg4p+1lypRRpUqV1LBhQzVr1sxl/dixYzV+/Pgr0rdLZWRkKCgoyKG9VatWatiwoWbOnKm6des6rT1z5oz69etX7PfXMAwdOnRIp0+fVtWqVfWHP/zB4Unbpc3T7YekEq9/Dh48qISEBI0aNapE9e788ssv6tOnj2699VY99thj6ty5s+65555Sn09xMjMz5efnZ/c9LpKenq6ZM2dqxowZJZr2NR9CnK3YiqSlpekf//iHjhw5oo4dOzodJyQkRFu3blX16tV97ktubq6++OILJSQkaMeOHTIMQxERERo1apTatGnjtGbLli0aM2aMnn/+ebsNyaJFi1SrVi0dP35cgwYN0rJly9S7d2+H+gULFujdd99Vp06dVKFCBU2cOFG33367cnNztXTpUhUWFiomJkb/+Mc/9OabbzrUv/POO+rVq5fdwtOxY0etWrVKf/jDHyRd/GHB7du3O+2/s/cvOjpaI0eOVLVq1SRJp0+fVu/eva9IiJCk7Oxsffnll3rkkUdUseLFn4xeuHChtm/frqCgIPXr108hISFOa6dNm6ZPP/1UXbt2VdmyZTV37lzl5uZqyJAhmjZtmhYvXqy77777imwAc3Jy1Lt3b2VkZGjQoEEKDw9X5cqVlZaWpv/85z96//339d1332nx4sUug8j/+3//TwMGDNDcuXMdNkTHjh3T+PHj9e233+qxxx5zWn/8+HHl5eUV29datWo5bb///vuLrXXH1+UvKytLU6ZM0YYNG1SmTBm1bt1aL730kipVquTR/MePH6833njD7Ybom2++0WuvvWb36+BFWrVq5bTW399flStXVkhIiHr37q369es7nfaOHTucthuGobNnz+qXX35R48aNNXfuXKd/U0JCgsaMGeNTCDl8+LC+/PJL+fn5qWXLlnaftWEYWrx4sWJjY132VZK6d++uF154wfZgSmd/jyu+BHFX778zmzZtcmi7fPthGIYGDRqkN954Q8HBwR5NtziHDh3SnDlznIaQhIQEdezY0eUOpnRxAz99+nRNmjTJYdj777+vjIwMffHFF1q3bp0WLFigunXrqlOnTurUqZPL720RX3cCjh8/rr/97W+2ZePhhx/WjBkzVKVKFV24cEEffPCB3nnnHZUpU8ZtP9y55kPIfffd59BmGIY+/PBDzZ49W7fccovef/99PfDAA07rS2NvcOfOnVq5cqXWr1+vnJwcNWvWTC+99JJiYmI0YcIE1atXz2VtfHy8hg8frkGDBtnaLBaLbr31VtWuXVu1a9fWoEGDtGrVKqchZMmSJZo5c6ZatWolSXr88cfVqVMnxcfH2/agxo0bp2effdbp/J39/d68J87G/fe//61nn33WFkK8naY3Dh06pD59+igrK0sJCQmqWLGiJk2apCVLlqhDhw4qW7as+vTpo/nz5zs9EvPFF19o4sSJioqKkiS1a9dOL7/8sv773/9q8+bNeumll9SvXz/5+fm57MOCBQtUoUKFYvs6fPhwu9fz5s3ThQsX9Nlnn9ltRO68807dd999+stf/qJ+/fpp/vz5GjFihNNpLl26VM8++6z69eunBQsW2PZWP/nkE9vKYN68eXr44Yed1js7unOpog2CqwBZ9DedOHFCVatWlb//xVXGTz/9pO+++07VqlVTu3btXL4/vi5///jHP/TNN99o4MCB8vPz05IlS5SRkaHY2FiP6tetW6esrCzFxMTY+l4kMzNT06ZN07/+9S+XR/FcfS6FhYU6d+6c9uzZo549e+q9995TeHi4w3gffvih2/6dPXtWI0aM0MyZMzVx4kSH4b5+rzZs2KAXX3xR/v7+8vf314wZM/Tee+8pIiJCSUlJevXVV7Vv3z516dLFab3FYtGcOXP08ccfa+bMmfryyy81ffp0hw24q6DgaxB39f57ytn2w2q1qlmzZrYQfCWNHTtWDz30kN1OXPPmze1CeG5urv71r385DSGSFBQUpJ49e6pnz546deqU1q1bp3Xr1mnWrFlq2rSpOnXqpA4dOjg9kuXrTsDEiRN15MgRzZgxQ2XKlNG8efM0depUvfDCC3r++eeVkpKiJ554Qi+88EKJ3yMZ15ndu3cbUVFRRtOmTY13333XyM/Pdzt+/fr1jZMnT5Z4fn/+85+N8PBwY+jQocann35qpKen24Y1bNjQ2L9/v9v6sLAw45dffrFra9asmXHo0CHb69TUVKNZs2ZO6xs2bGgcO3bMrq1x48Z200xPTzdCQkKc1tevX984ceKE2/mnp6cbDRo0uCL1nvj6669d1o8aNcoYPny4kZeXZxiGYfz2229Gw4YNjdGjR9vGef/9941+/fo5rQ8NDTWOHDni0NaxY0e7v8GV+vXrG3/5y1+MPn36uP3Xt29fh9p27doZX375pdvpb9261WjXrp3bcTIyMowePXoY7du3N3744Qfj6aefNkJCQowpU6YY2dnZbvuelJRk/Prrr8X+cyUrK8sYPHiw0aBBAyM1NdUwDMNYvny5ERISYrRs2dJo37690apVK4dl9NI++LL8PPjgg8b3339ve52cnGyEhobalofiJCcnGw8++KAxcOBAIzc319b+zTffGC1btjTCw8ONJUuWeDQtV2JjY40+ffqUuH7nzp1GZGSk02H169c3NmzYYOzcubPYf8507tzZeOmll4z8/HyjoKDAeOutt4wnnnjC+Pzzz43Q0FAjKirKSExMdNm3Sz+/xMREo02bNkaLFi2Mzz77zDaOu8/v7bffNrp06WKcO3fO6fBz584Z3bp1M2bPnu10+FNPPWWcOXPGri0nJ8dlfz1x+fLnK3frryu5/jxx4oTxySefGFFRUUajRo2uyPzvu+8+49tvv7W9PnjwoNG8eXOja9euRpcuXYykpCSv+325a/5ISJGzZ88qJiZGy5Yt0yOPPKLY2Fin10A488Ybb7g9p15k6tSpTtvLlSsnf39/5eXlKT8/36t+WywWh73sHTt22B2es1qtLg/XXbhwweFQl5+fn8M0jWv06fueXLDm7uLa7du364MPPrC9P1999ZUKCwvVrVs32zgPPvigZs+e7bS+oKDA4bMvU6aMXnvtNY/3hN55550Snc47duxYsedv7777bv32229ux6lataoWLlyokSNHqk+fPqpbt66WLl2qJk2auK2zWCyqVatWsX1PS0tzOWz27Nk6cuSIPvroI919993Kzs7W5MmT1aRJE3344YcqU6aMJkyYoJiYGMXExLidT0mcOnVKderUsb0uOu128uRJ3XbbbcXWN2zYUEuWLNHAgQM1YMAAxcTEKDY2VitWrFCbNm306quv+nxYvl27dvrggw9KXF+7dm2dPXvW5fDLj7A54+po1qFDh/TWW2/Z1iFDhgzR/PnzbadUBw4c6PF1GUV78FOmTNGYMWO0efNmvf76625r1qxZo3Hjxrk8nRQYGKjRo0dr4sSJTo96/Pjjjzp//rxd25/+9Ce7PfmbUXJystavX69Nmzbp6NGjevTRR6/IfM6ePWt3LdAdd9yh8+fPq3bt2nr77bd9Og1T5LoIIStWrFBMTIwCAgIUGxvr8voLV3zZQG/evFm7d+/W6tWrNWfOHE2ePFn169e39aG485V169bV1q1b1atXL1vb5YFj27ZtLs8pWywWh3l4eo7UVf3V1LdvX4/Gc3c499Jz5du3b1dAQIBatGhha7v8MLsnijuXWly/PFGjRg3973//czuvX375RTVr1ix2WuXLl9ecOXM0duxYbdu2ze055iLulvv8/Hxt2LBBK1eu1Pbt25WcnOx0vPXr12vKlCm2Uw1bt25VVlaW+vbta1sBde/eXYMHD3Za7+vyV1hYaLeRtFgsKlOmjMd3DUkXV5xLlizRc889pzZt2qh69eqaPXu22rVrV+J+XSogIMCndcz+/ft16623uhy+bdu2El/Tlpuba3eYvnz58ipXrpwt0Bbn8s+uQoUKeuONN9SqVSu9+uqr6ty5s1566SWX9b4GcWfv69Xc4Ro7dmyx4xS3E1FafvzxR61fv14bNmxQenq6IiMjNXToULVq1crtxe2+MAzDYYfXz89PI0aMKJUAIl0HIaR379768ccfVbt2bQ0YMECZmZlKSEhwOm7Ref/L/f3vf/fpwtRmzZqpWbNmGj9+vL777jutXr1aH374oS5cuKCRI0eqR48e6tKli901EkV69OihadOmKTQ01Ome688//6zY2Fin54OliwvBgw8+6NB26QrU+L/z+q7qLz8SdP78ec2cOdN2kWdxFy46u7jxt99+sy2cJ0+edFmbkpLidtrFqVevnpKSknT77bcrOztbX3/9tSIjI+02whs3bnR55b4n/S/iLCx4ssLLy8tTWlqaw57Zo48+qjfffFPh4eFOj8Tl5OTorbfecnlRqeR4d8Udd9yhb7/9Vn379lWfPn3s/obL95inTp3qcLFjYmKi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zmnw4MF68MEHtXr1ai1YsECHDh3SvHnzJEn/+c9/9PPPP+uTTz7R8OHD9frrr2vr1q22+rlz5+rRRx/VihUrFBwcrEGDBik/P9/pvGJjYzV+/HitWLFCGRkZevvttz3qY0JCghYuXKjJkydr3bp1GjZsmGJjY5WcnFxs7fjx4xUWFqYBAwbYBZWVK1fqrbfe0qJFi5ScnKz58+d71BcAVw4hBLjJ5ObmaujQoRo2bJj+8Ic/KDw8XO3atdP+/fslXfxF0xkzZujee+/VE088occee0yffvqprf7hhx/W008/rbp162rSpEk6deqUtm3b5nRezzzzjB544AHde++96tWrl/bu3etRH2+77TZNnTpVDzzwgG6//Xb16tVLt9xyi62P7lSqVEllypRRhQoVVLVqVVv7Sy+9pCZNmqhp06bq0KGDUlJSPOoLgCuH344BbjK33HKLoqKi9MEHH+jnn39Wamqq9u3bp+bNm0uS6tSpo+rVq9vGb9SokZYuXWp7XTSeJAUGBuquu+7SgQMHdM899zjMq06dOnbjnj9/3qM+/vGPf9SePXv05ptv6sCBA/r555+Vnp6uwsJCr//eInfccYft/5UqVVJeXl6JpwWgdHAkBLjJ/Pbbb+rSpYu+++47hYaGaty4cXrmmWdsw/397fdNLly4IKvV6vHwS5X0R/uWLVump59+Wnl5eWrXrp0++OAD3XrrrS7Hv3DhQrHTdNVHAObhSAhwk9mwYYOqVKmiuXPn2to+/PBDFf2W5cGDB5WVlaWKFStKkvbu3at7773XNu6lpzHOnTunQ4cOqX79+qXax48//ljDhg3TwIEDJUlnz57VyZMnbX0sW7assrKybON7esErgGsLuwbATaZq1ao6evSotm/frsOHD2vevHlav3697eLS7OxsTZgwQQcOHNCnn36qdevW6amnnrLVf/bZZ0pISNCBAwc0fvx41apVS/fff3+p9jEoKEjbt2/XL7/8or179+qFF17Q+fPnbX1s1KiR1q5dq6SkJCUlJWn27Nl29RUqVND//vc/nTx5slT7BaB0EUKAm0yHDh3UpUsXjRw5Uo8//rh27NihV155RQcOHFB+fr5uu+023XLLLXriiSf03nvvaebMmQoPD7fVd+7cWUuXLlX37t2VlZWl+fPnO5yi8dW4ceOUmZmprl27asSIEapfv77atm2rn3/+WdLFC14bNmyoPn36aPTo0Ro6dKhdfY8ePfTNN9/YjqQAuDZZjKLjmwBueitWrFBcXJw2b97sdHjfvn113333acSIEVe5ZwBuRBwJAQAApuDCVABX1RdffKG//e1vLoeHh4frvffeu4o9AmAWTscAuKqysrJ04sQJl8MDAgIUHBx8FXsEwCyEEAAAYAquCQEAAKYghAAAAFMQQgAAgCkIIQAAwBSEEAAAYApCCAAAMAUhBAAAmOL/A7VvEZGEiodNAAAAAElFTkSuQmCC\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "appln_pers.groupby('appln_auth')[\"person_ctry_code\"].apply(lambda x: 1-(x.isnull().sum()/len(x))).sort_values().plot(kind=\"bar\",)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 101, "outputs": [ { "ename": "TypeError", "evalue": "no numeric data to plot", "output_type": "error", "traceback": [ "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", "\u001B[1;31mTypeError\u001B[0m Traceback (most recent call last)", "Cell \u001B[1;32mIn[101], line 1\u001B[0m\n\u001B[1;32m----> 1\u001B[0m \u001B[43mappln_pers\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mquery\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mappln_auth==\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43mIC\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m)\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mmerge\u001B[49m\u001B[43m(\u001B[49m\u001B[43mappln\u001B[49m\u001B[43m[\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mappln_filing_year\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m,\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mappln_id\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m]\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdrop_duplicates\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mon\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43mappln_id\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m)\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mgroupby\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43mappln_filing_year\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m)\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mperson_ctry_code\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m]\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mapply\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43;01mlambda\u001B[39;49;00m\u001B[43m \u001B[49m\u001B[43mx\u001B[49m\u001B[43m:\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mround\u001B[39;49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m100\u001B[39;49m\u001B[38;5;241;43m-\u001B[39;49m\u001B[43m(\u001B[49m\u001B[43mx\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43misnull\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43msum\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\u001B[38;5;241;43m/\u001B[39;49m\u001B[38;5;28;43mlen\u001B[39;49m\u001B[43m(\u001B[49m\u001B[43mx\u001B[49m\u001B[43m)\u001B[49m\u001B[43m)\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m100\u001B[39;49m\u001B[43m,\u001B[49m\u001B[38;5;241;43m3\u001B[39;49m\u001B[43m)\u001B[49m\u001B[43m)\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mplot\u001B[49m\u001B[43m(\u001B[49m\u001B[43mkind\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mline\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mtitle\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m)\u001B[49m\n", "File \u001B[1;32m~\\.conda\\envs\\MOME_BIGDATA\\lib\\site-packages\\pandas\\plotting\\_core.py:975\u001B[0m, in \u001B[0;36mPlotAccessor.__call__\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 972\u001B[0m label_name \u001B[38;5;241m=\u001B[39m label_kw \u001B[38;5;129;01mor\u001B[39;00m data\u001B[38;5;241m.\u001B[39mcolumns\n\u001B[0;32m 973\u001B[0m data\u001B[38;5;241m.\u001B[39mcolumns \u001B[38;5;241m=\u001B[39m label_name\n\u001B[1;32m--> 975\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m plot_backend\u001B[38;5;241m.\u001B[39mplot(data, kind\u001B[38;5;241m=\u001B[39mkind, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n", "File \u001B[1;32m~\\.conda\\envs\\MOME_BIGDATA\\lib\\site-packages\\pandas\\plotting\\_matplotlib\\__init__.py:71\u001B[0m, in \u001B[0;36mplot\u001B[1;34m(data, kind, **kwargs)\u001B[0m\n\u001B[0;32m 69\u001B[0m kwargs[\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124max\u001B[39m\u001B[38;5;124m\"\u001B[39m] \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mgetattr\u001B[39m(ax, \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mleft_ax\u001B[39m\u001B[38;5;124m\"\u001B[39m, ax)\n\u001B[0;32m 70\u001B[0m plot_obj \u001B[38;5;241m=\u001B[39m PLOT_CLASSES[kind](data, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n\u001B[1;32m---> 71\u001B[0m \u001B[43mplot_obj\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mgenerate\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 72\u001B[0m plot_obj\u001B[38;5;241m.\u001B[39mdraw()\n\u001B[0;32m 73\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m plot_obj\u001B[38;5;241m.\u001B[39mresult\n", "File \u001B[1;32m~\\.conda\\envs\\MOME_BIGDATA\\lib\\site-packages\\pandas\\plotting\\_matplotlib\\core.py:446\u001B[0m, in \u001B[0;36mMPLPlot.generate\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m 444\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mgenerate\u001B[39m(\u001B[38;5;28mself\u001B[39m) \u001B[38;5;241m-\u001B[39m\u001B[38;5;241m>\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[0;32m 445\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_args_adjust()\n\u001B[1;32m--> 446\u001B[0m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_compute_plot_data\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 447\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_setup_subplots()\n\u001B[0;32m 448\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_make_plot()\n", "File \u001B[1;32m~\\.conda\\envs\\MOME_BIGDATA\\lib\\site-packages\\pandas\\plotting\\_matplotlib\\core.py:632\u001B[0m, in \u001B[0;36mMPLPlot._compute_plot_data\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m 630\u001B[0m \u001B[38;5;66;03m# no non-numeric frames or series allowed\u001B[39;00m\n\u001B[0;32m 631\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m is_empty:\n\u001B[1;32m--> 632\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mTypeError\u001B[39;00m(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mno numeric data to plot\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[0;32m 634\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mdata \u001B[38;5;241m=\u001B[39m numeric_data\u001B[38;5;241m.\u001B[39mapply(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_convert_to_ndarray)\n", "\u001B[1;31mTypeError\u001B[0m: no numeric data to plot" ] } ], "source": [ "appln_pers.query(\"appln_auth=='IC'\").merge(appln[[\"appln_filing_year\",\"appln_id\"]].drop_duplicates(), on='appln_id').groupby('appln_filing_year')[\"person_ctry_code\"].apply(lambda x: round(100-(x.isnull().sum()/len(x))*100,3)).plot(kind=\"line\", title=\"\")" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 115, "outputs": [ { "data": { "text/plain": "
", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjgAAAHWCAYAAAB60/OZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB0oklEQVR4nO3de3zO9f/H8ce1zc4Os4NDFiJznpnIqZBj0g+pbyoip69Gh281sb45U6i+SSWiiEpKlMqxg0LKsCXmMMnZNjbDTrZdvz/m+uQyYxfXXNu15/12282uz+d9fa73+7XLruc+78/BZDabzYiIiIg4ERdHd0BERETE3hRwRERExOko4IiIiIjTUcARERERp6OAIyIiIk5HAUdEREScjgKOiIiIOB0FHBEREXE6Cjgi4hBFeY3Rknj90pLYZ5HiTAFHSp0XX3yRkJCQq37169cPgH79+hnf21t2djYvvvgiYWFhNG3alF9//bVQz+vQoQMvvvgiAFu2bCEkJIQtW7Y4pC/Xa/369YwaNapIth0dHc3QoUOLZNvX6/L3UUhICG+99RYAWVlZTJkyha+//vqGXuPFF1+kQ4cON7SNS23evJkRI0bQtm1bQkND6dKlC6+++iqnTp2yanfpWApSlP+PRAri5ugOiNxsTz75JA8//LDx+J133mHXrl3MmjXLWObr61vk/fj555/58ssvefLJJ2nVqhX169cv8tcsLn358MMPi2zbS5cuJT4+vsi2bw9LliyhcuXKACQkJLBgwQKmTp16Q9t88skn6d+/vz26x4wZM3j//ffp2rUrUVFRVKhQgT179jB37lzWrFnDokWLqFKlSqG3N3bsWLv0S8QWCjhS6tx6663ceuutxuOKFSvi7u5OkyZNbmo/UlJSAOjduzfBwcE39bWLc19Kg6J4r136nr4R33zzDXPnzmX06NEMGDDAWH7nnXdy991306tXLyZPnmz1B8G11K5d2y59E7GFpqhErsFsNjN37lzatWtH48aN+de//kVsbKxVm7179zJs2DCaNm1K06ZNiYiI4PDhwwVu88UXXzSmmTp27Gjsvj99+jTjx4+nffv2NGzYkObNmxMREcGRI0euu/85OTksXryYHj160LhxY9q1a8eMGTPIzMy8al8ut2zZMkJCQoiJiaFXr140btyYHj16sGrVKqt2R44cITIykjZt2tCg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u3bF29ub2NhYPvjgA/z8/Jg0aVKR9qFmzZr4+voye/Zs3NzccHNzY/Xq1Xz++edAwccQiVxKe3BEblDdunVZvHgxJpOJyMhInnrqKRITE3n77bfp3LlzobfTokULXn75ZbZv386QIUN45ZVXqFq1qnEa8fVOU02ePJmIiAi+/vprhg4dyuLFi+nfvz9z584t1N6Oy40bN47PPvuMESNGkJiYyPz5842zvnr16kVERATfffcdQ4YMYebMmTRr1owJEyaQkpJi7P149NFHKVOmDEOGDGHDhg14e3uzePFiwsPDmT59OkOGDGHNmjU899xzjB492qb+9e7dm1tuuYWIiAiWL19+xTY1atRg8eLFlClThmeeeYa3334739lurq6uzJw5k4CAAP7zn/8wefJkunfvbvUzrV69Oq+99honT55k+PDhvPzyywB89NFHmEwmtm7des3++vr6MnDgQNatW8eQIUO4cOGCsc5ymnvv3r1tqsGNmjRpEjNmzODkyZO8/PLLDB8+nBUrVvDggw/y+eefX/XMMHsoW7Ys77zzDmazmaeffprIyEiOHTvGokWL8PHxKVRdRUxmHa0lIoWwbNkyRo8ezfr16+1+TExxERISwogRIxg5cqSjuwLkXTMoJiamwKAmIgXTFJWISDFjuUDfZ599xvTp0x3dHZESSQFHRKSY2bp1Kz///DOPP/449913n6O7I1IiaYpKREREnI4OMhYRERGno4AjUspop23xUdx+FkXZn+I2VnF+Cjgil5k/fz7PP/+8o7thdydOnGDo0KFXvQx/Ye3Zs4eePXvSsGFD4yaTl+vXr5/VjRKv5K233iIkJMSm176e5zhChw4dePHFFwE4cuQIISEhLFu2DMi7YWtkZGSxOd05KyuLKVOm8PXXXxfJ9t955x3mzZtX6PYHDhygQ4cO17yflcjVKOCIXCI+Pp733nvP5rtKlwSbNm265h2eC+vtt9/m2LFjvP3227z66qvXvZ0HH3zwuu+UXpIEBQWxZMkS47o2u3fvZsWKFcXmirwJCQksWLCA7OzsItn+m2++adPF+W677TbuueeeIr+goDg3nUUlconp06dz33332XxTw9ImOTmZOnXqcPfdd9/QdipXrmzc4dqZubu757t7tlzd0KFDadeuHY8//niBN2EVuRrtwRG5aO/evfz4449Wp+UuW7aMkJAQYmJi6NWrF40bN6ZHjx6sWrXK6rmZmZlMmzaNu+++m4YNG9KjR498dxfv0KEDU6ZM4fHHH6dx48ZERUUBeX89jxo1ipYtWxIWFsZjjz3G9u3bjefl5uYyZ84cOnXqRMOGDenSpQsfffSR1bb79etHVFQUc+bMoV27djRq1IiHH36Y2NhYYxyWKwLfc889xtTJlSQkJDB69GjuvvtuGjduTJ8+fVi/fr2xPiQkhN9++43ff//datrlSsxmM3PnzqVdu3Y0btyYf/3rX0af4MrTTfPmzeOee+6hcePGPPzww3z//feEhISwZcsWq3Y//vgj999/P40aNaJLly6FuhjeqlWr6NGjB40bN6ZXr15s376d+vXrG2Ow/LyPHDli9bxLp5sATp8+zfjx42nfvj0NGzakefPmRERE5HuexaVTVFu2bKF///4A9O/fn379+rF48WJCQkL466+/rJ63YsUK6tWrx/Hjx6+43X79+vHiiy8ye/ZsWrVqRXh4OE8++WS+ach169bxyCOPEBYWRsOGDenatSuLFy82+nbPPfcAMHr0aDp06GA8b+vWrTz22GOEhobSvHlzRo0axenTp431y5Yto379+sTExPCvf/2LRo0a0b59e6vpKMvPd9asWcb3GRkZjBs3jrvuusvoz+VTWIGBgdx555289957Vxy7yLUo4Ihc9PXXXxMYGHjFv7SHDRvGPffcw6xZs6hZsybPPPOMMd1jNpuJiIjg008/ZeDAgbz77ruEhYXx7LPP5vvQXbx4MY0aNeKdd96hT58+nD9/nr59+7JlyxZeeOEFZs2ahYeHB0888QQHDx4E8m6NMHPmTO6//35mz55N165dmTJlCm+//bbVtlevXs369et56aWXeP3110lKSmLkyJHk5OTQrl07hg8fDuR90Dz55JNXrEFSUhJ9+vRh69atPPvss7z11lvGbQ+++uorAJYsWUL9+vWpX7++1bTLlURHR7N27Vr++9//Mn36dBISEhg+fHiBUyGzZs1ixowZdOvWjXfeeYfQ0FCeeeaZK7Z9+eWXGTBgAO+++y6VK1fmxRdfNO7bdSXr16/n6aefpk6dOsyaNYtOnToxfPhwm6eJzGYzw4YNY+PGjTz//PPMmzePESNGsHnzZsaOHXvN5zdo0MC4pcPLL7/M2LFj6dGjBx4eHqxYscKq7fLly2nZsiVVqlS56riWLVvGSy+9xPjx49m9ezf9+vUzpoR+/PFHIiIiaNCgAe+88w5vvfUWwcHBTJgwgZiYGIKCgozbgQwfPtz4/vfff2fAgAF4enryv//9jzFjxvDbb7/Rv39/q5uS5ubm8swzz3DvvfcyZ84cmjZtyrRp04wbjlqmIPv06WN8P2XKFDZs2MCoUaOMQDtt2jS++OILq7F17dqV77//nvPnz1+zriKX0xSVyEW//vorjRo1Mu4Ifal+/foREREBQNu2benVqxdvv/02d999N5s2beLnn3/mjTfeMA64bdu2Lenp6cyYMYP77rsPN7e8/2pVq1a1OoB50aJFHD16lC+//JJ69eoB0LRpU3r27Mnvv/+O2Wzms88+4z//+Q9Dhw4FoE2bNsaNHx955BH8/PwAyM7OZt68ecYNOc+fP8+oUaPYvXs3DRs25NZbbwWgXr16Bd5q4YMPPuD06dOsXr2aW265BYC7776bAQMGMG3aNO677z6aNGlivMa1pl3c3d2ZM2cOFSpUAPIOrn3ppZfYv38/devWtWqblpbG3LlzefTRR40atWnThvT09CsepzNp0iTuuusuAG699VY6derEb7/9lm+7Fm+//TYNGzbktddeA+Cuu+7CZDLxv//976pjuFxCQgJeXl6MGjXKuAdXixYtOHToUKGOJ/L19aV27dpA3s1QLd936tSJr776iqeffhqTycSJEyf49ddfr3kl4/T0dJYtW0ZwcDCQd/xKr169WL58OX379mX//v306tXL2GMIEBYWRosWLdiyZQuhoaHGe+/WW2+lfv36ALz22mvUrFmT9957z7jjeWhoKN27d+eLL77g0UcfBfIC35NPPsmDDz4IQHh4OGvXruXHH3+kbdu2xnukcuXKxve//fYbrVu3pnv37kb9vL298ff3txpbo0aNuHDhAlu3br3h6VApfbQHR+Siw4cPF/jB36tXL+N7k8lEp06diI2NJSMjg82bN2Mymbj77rvJzs42vjp06EBiYiL79u0znmv5ILGIjo6mWrVqVsu9vLxYvXo1Dz74IL/++itms5kOHTrk23ZmZqbVDThr165tdbdxy3FEthzc+dtvvxEWFmaEG4v777+fxMREDhw4UOhtWfpkCTeAUd+zZ8/ma7tjxw4yMjLo2rWr1fKCruRrCReXbregs27S09P5888/jakYi/vvv//ag7hM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/v7+1KlTh99//93qg/euu+5iwIABAEycOJG2bduyceNGbr/99nyvNXDgQFq2bAlA3759CxUo3N3dKV++PMB1TT899dRTNG7cGIAePXrwxx9/ALB06VIaN27Mk08+CcDTTz/Npk2bCrVNHx8f2rdvz6pVq2jTpg3p6en89NNPfPTRR6Snp7No0SK++OILY2/StGnTaNGiBXv27KFixYoF1tvCZDIxfPhwPD09bR6viCjgiAh5oaFnz558+OGH7N69m/3797Nnzx6aNm0KQPXq1fH39zfaN2zYkE8//dR4bGkH4OvrS82aNYmPj79iwKlevbpV2wsXLhTFkAr1mnv27KFRo0ZWbZs0acKZM2cKtd377ruPl156iXHjxvHjjz8SFBREw4YN2bt3LxcuXODhhx+2ap+bm8vBgwcJCQm5ar0B/P39FW5EboACjohw8uRJHnjgARo0aECrVq146KGH+PHHH4mJiQHAzc36V0VOTg4uLv/McF9r/aXKlClj595fW0Gv6erqitlstlp2+eOrueuuu8jJyeH3339n9erVdOvWDcgbP8DHH3+Mt7e31XP8/f2vWW8ADw+PQvdDRPJTwBER1q5dS/ny5XnvvfeMZR999JHxYf/3339z/vx5fHx8ANi5cyd16tQx2sbFxRnfnz17lkOHDpWIa9HcfvvtREdHWy37888/CQ4OLtTz3d3d6dSpE2vXrmXjxo1EREQAEBwcjKurKykpKdSrVw+AU6dOERUVxejRo/n555+vWm8RuXE6yFhEqFChAseOHWPz5s0cPnyYOXPmsGbNGuNA4bS0NMaOHUt8fDyfffYZq1at4pFHHjGe//XXX7N8+XLi4+OJioqiatWqtGjRwlHDKbSHHnqIHTt2MGfOHP766y9mz57N1q1br3oa+uXuu+8+Pv/8cypXrmxMyfn6+vLggw8ybtw4tmzZwv79+4mMjOTvv/+mWrVq16y3iNw4BRwRoVu3btx///089dRTPPDAA2zZsoVRo0YRHx9PVlYWVapUITAwkD59+vD+++8zffp0wsPDjef36NGDTz/9lN69e3P+/Hnmzp2bb9qqOLrllluYOXMmX3zxBT169GD79u3cc889Nk2jtWjRAh8fH+69916r5S+++CItW7bkqaee4qGHHsLNzY05c+bg6up6zXqLyI0zmbVPVESuYtmyZcyaNYvvv//+iuv79etH8+bNGTly5E3u2Y3bu3cv2dnZ1K9f31g2dOhQGjVqVOjxnDt3zjjdu7BTWyJS9LQHR0RKrUOHDjFw4EA2btzI0aNHWbp0KZs3b6ZTp07XfK7ZbGbVqlW8/PLLhIWFKdyIFDPFfx+yiDi91atXX/XqweHh4bz//vt2f92OHTuyb98+oqKiOHXqFDVr1uSNN96gbt26REREXPWaOOPHj+fNN9/E1dWVd9991+59E5EboykqEXG48+fPk5SUVOB6T09PKlWqdBN7BAkJCaSnpxe43t/fH19f35vYIxGxhQKOiIiIOB0dgyMiIiJORwFHREREnI4CjoiIiDgdBRwRERFxOgo4IiIi4nQUcERERMTpKOCIiIiI0/l/v8WShpCTfWYAAAAASUVORK5CYII=\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ds3 = appln_pers.query(\"appln_auth=='CN'\").merge(appln[[\"appln_filing_year\",\"appln_id\"]].drop_duplicates(), on='appln_id').groupby('appln_filing_year')[\"person_ctry_code\"].apply(lambda x: (100-(x.isnull().sum()/len(x))*100)).plot(kind=\"line\", title=\"The fall of patent quality in China\\n(percent of high quality patents)\", ylim=[-0.0001,0.003])" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ " # appln_pers.query(\"appln_auth=='CN'\").merge(appln[[\"appln_filing_year\",\"appln_id\"]].drop_duplicates(), on='appln_id').groupby('appln_filing_year')[\"person_ctry_code\"].apply(lambda x: (100-(x.isnull().sum()/len(x))*100))" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 125, "outputs": [], "source": [ "appln_pers.query(\"appln_auth=='CN'\").merge(appln[[\"appln_filing_year\",\"appln_id\"]].drop_duplicates(), on='appln_id').groupby('appln_filing_year')[\"person_ctry_code\"].apply(lambda x: 100-((x.isnull().sum()/len(x))*100)).reset_index().to_excel(\"ds3.xlsx\", index=False)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 123, "outputs": [], "source": [ "appln.query(\"appln_auth=='CN'\").groupby(\"appln_filing_year\")[\"appln_id\"].nunique().cumsum().reset_index().to_excel(\"ds2.xlsx\", index=False)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 113, "outputs": [ { "data": { "text/plain": "
", "image/png": "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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ds2 = appln.query(\"appln_auth=='CN'\").groupby(\"appln_filing_year\")[\"appln_id\"].nunique().cumsum().plot(kind=\"line\", title=\"Number of patents submitted in China (in TEN millions)\")" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 117, "outputs": [ { "data": { "text/plain": "
", "image/png": "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r7/+Os899xwjRozQZ5PrJH3W8cCBA5w6dYrJkycbqrl1lj7raGFRcXB84sSJ9OnTh9DQUObNm8dvv/1GamqqQdpfV+izjnl5eYSHh/Pmm28SFhZGt27dmD9/Pt999x1paWmG6kKdcL91vHLlCs8//zw+Pj689957AFhZWWm3v/X5NjY2BuyFcemzhjczte8YfZOgVUvmzp3L2rVrWbRoEQMGDADA3d2d9PR0ne3S09NvO9T7V7Zv385rr73GM888w1tvvaXXNtdF+q7jTz/9REpKCl26dCEkJIRZs2aRlJRESEgIf/zxh0H6UBfou46urq4ANGvWTLusadOmAPVuqOZm+q7j5cuXKSgoICAgQLusdevWlJeXSx25vY6XLl3iueeew8PDg9WrV2sDhJOTE1ZWVjrPLy0tJSsrS/terW/0XcMqpvYdYwgStGrBsmXL2LBhAx999BFPPPGEdnlQUBDnzp3THuYGiIiIICgoqFr7PXLkCDNmzODvf/87b7/9tt7bXdcYoo7Tp09n+/btbN26la1btzJt2jTc3NzYunUrbdu2NUg/jM0QdfTy8sLNzU1nonFsbCwqlQovLy/9dqCOMEQdq74AY2JitMsuX74MgLe3t76aXqfcbx3T0tIYP348vr6+fP7559jb22u3MzMzIzAwUOeaUKdOncLCwkInxNYXhqghmN53jKHIZHgDi42N5dNPP2XixImEhoai0Wi06zp16oSnpyczZ87k1Vdf5bfffuP06dMsWLDgnvstLS3lrbfeomPHjrz00ks6+23YsGG9G0M3VB3VajVqtVrnsYWFBb6+vgbph7EZqo4qlYqxY8eyZMkSvL29UavVzJ49m759+9bLIwiGqqOHhwc9evTg7bff5t1330VRFGbNmsUTTzyBs7OzIbtkFA9Sxw8++IDy8nLmzZtHQUGB9qKutra22NnZMXr0aN555x38/Pxwc3Nj9uzZjBw5st4NHRqqhlZWVib1HWNIErQM7JdffqGsrIzPPvvstjOHoqOj+fTTTwkPD2fYsGH4+vryn//8p1pHAM6ePUtSUhJJSUl0795dZ926deu0ZyzVF4aqo6kxZB3Hjx9PcXExM2bMoKCggN69ezN79mwD9ML4DFnHDz/8kPfff5+JEyeiUqno06cPb775piG6YXT3W0dFUdizZw9FRUUMHDhQ53lTpkxh6tSp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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "\n", "ax = appln.query(\"appln_auth=='CN'\").groupby(\"appln_filing_year\")[\"appln_id\"].nunique().cumsum().plot(kind=\"line\")\n", "ax2 = ax.twinx()\n", "appln_pers.query(\"appln_auth=='CN'\").merge(appln[[\"appln_filing_year\",\"appln_id\"]].drop_duplicates(), on='appln_id').groupby('appln_filing_year')[\"person_ctry_code\"].apply(lambda x: (100-(x.isnull().sum()/len(x))*100)).plot(kind=\"line\", ylim=[-0.0001,0.003])\n", "# df.plot(x=\"date\", y=\"column2\", ax=ax2, legend=False, color=\"r\")\n", "ax.figure.legend()\n", "plt.show()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 83, "outputs": [ { "data": { "text/plain": "" }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": "
", "image/png": "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0dHRREdHt/nZz8+Pvn37uuU4zOauPlosFq6++moef/xxkpOTiY6OZv78+Zx55pnd8m/E7upjQkICkyZN4s477+Tee+/FMAzuvvtupk2bRlRUlDsPyRQn0sd//OMfOBwOHnjgAerq6pyLD4aEhBAaGspll13GXXfdxeDBg4mLi2P+/PnMnDmzWw45uauPgYGBbv+eUaDxIF988QV2u52nn376sCsVtm/fzlNPPcW8efO48MIL6du3L08++WS7/ka7efNmCgoKKCgoYOLEiW22vfLKK84rJLoLd/XR27izj9deey2NjY3cdttt1NXVcfrppzN//nw3HIX53NnHf/7zn/z973/nhhtuwGKxcMYZZ3D77be74zBMd7x9NAyDzz//nIaGBs4999w2r7v55pu55ZZbmDZtGvv37+euu+7CarVy9tlnc+utt3bm4XUad/Vx0qRJbv+esRiGYZzwXkRERERMpDk0IiIi4vEUaERERMTjKdCIiIiIx1OgEREREY+nQCMiIiIeT4FGREREPJ4CjYiIiHg8BRoRERHxeAo0IuIy+/btY8iQIezbt++E92UYBnfeeSejRo3ijDPO4IknnuCKK64A4J133uH0008HYPXq1QwZMuSE309EPJtufSAiXVJ2djZvvvkmixcvZsiQIYSHhzsDzaHS09NZsWKFCRWKSFeiQCMiXVJ1dTUAkydPxmKx/OLzAgICuuVNK0WkYzTkJOKl1q1bx6WXXkpaWhqjRo3i+uuvp6SkhHfeeYdLL72Uhx9+mPT0dE477TSWLVvmfN0VV1zBokWLnK+97LLL2Llz5xHfY8iQIbz33ntMnz6d4cOHc9lll5Gfn3/M2lavXu08GzN06FCeeOKJNkNOP39u65BT65DXp59+yplnnsmIESO48cYbqaysdD5/xYoVnH/++YwcOZJZs2Zx33338X//93/HrOn9998nMzMTm83mfOyTTz7htNNOwzAMrFYr999/P5mZmWRmZvLXv/61zfv+Ur+heQjtkksuYfbs2WRkZPD+++8fsx4RaUuBRsQLVVdXc+ONNzJhwgQ+/PBDlixZQl5eHosXLwZg06ZNbNu2jTfeeIObb76Ze+65p82wzrPPPss555zDO++8Q3x8PDfccANWq/WI7/XEE08wb9483nnnHQ4cOMC//vWvY9aXnp7OE088ATQHkGuvvbZDx/fMM8/wyCOP8Oqrr7Jp0yZefPFFAPLz8/n973/P1KlTeffddxkxYgRLly5t1z7POOMMGhoa+P77752P/fe//2Xq1KlYLBYeeeQRNm/ezHPPPccrr7xCTU0Nf/jDH4Bj9xtg/fr1DBo0iDfffPOwuxGLyLFpyEnECzU0NHDTTTdxzTXXYLFY6N27N2effTYbN24kJSUFi8XCggULiI6OZvDgwaxdu7bNF+3kyZO5+uqrAbjvvvuYNGkSK1eu5KSTTjrsva655hrGjx8PwKWXXtquABEQEECPHj0Ajms4ac6cOYwcORKA888/n02bNgGwbNkyRo4cyU033QTAH/7wB7777rt27TM0NJQpU6awfPlyJk6cSH19PV9//TX//ve/qa+v59VXX+Xtt992ni1asGABmZmZbN++naioqF/sdyuLxcLvf/97goKCOny8IqJAI+KVYmNjueCCC3jppZfYtm0bubm5bN++ndGjRwPQt29foqOjnc8fPnw4r7/+uvPn1ucBhIWF0b9/f3bu3HnEQNO3b982z21qanLHIbXrPbdv386IESPaPHfUqFEcPHiwXfudPn06f/vb35g/fz5fffUVcXFxDB8+nB07dtDU1MQll1zS5vkOh4M9e/YwZMiQo/YbIDo6WmFG5AQo0Ih4oeLiYmbMmEFqaiqnnHIKM2fO5KuvviIrKwsAP7+2vxrsdjs+Pj+NUB9r+6H8/f1dXP2x/dJ7+vr6YhhGm8d+/vPRTJ48Gbvdztq1a/nkk0+YOnUq0Hz8AP/5z38ICQlp85ro6Ohj9hsgMDCw3XWIyOEUaES80GeffUaPHj149tlnnY/9+9//dn657927l9raWkJDQwHYvHkzgwcPdj43Ozvb+e/V1dXk5eV5xFowJ510EuvWrWvz2JYtW+jdu3e7Xh8QEMBZZ53FZ599xsqVK5k9ezYAvXv3xtfXl8rKSoYNGwZAeXk58+bNY+7cuXz77bdH7beInDhNChbxQpGRkRQUFLBq1Sry8/NZvHgxn376qXNib11dHXfffTc7d+7kzTffZPny5Vx22WXO13/wwQe8++677Ny5k3nz5pGUlERmZqZZh9NuM2fOZMOGDSxevJjdu3fzzDPP8MMPPxz1svCfmz59Om+99RYJCQnOIbawsDAuvvhi5s+fz+rVq8nNzeW2225j7969JCcnH7PfInLiFGhEvNDUqVP51a9+xZw5c5gxYwarV6/m9ttvZ+fOnVitVhITE4mNjeWiiy7i+eefZ+HChWRkZDhff/755/P6669z4YUXUltby3PPPXfYMFRX1KtXLx5//HHefvttzj//fNavX88ZZ5zRoWGxzMxMQkNDOe+889o8/n//93+MHz+eOXPmMHPmTPz8/Fi8eDG+vr7H7LeInDiLoXOeInKId955h0WLFvG///3viNuvuOIKxo4dyy233NLJlZ24HTt2YLPZSElJcT52ww03MGLEiHYfT01NjfPy6/YOVYmI++kMjYh4jby8PK655hpWrlzJ/v37WbZsGatWreKss8465msNw2D58uXcddddpKenK8yIdDFd/xyxiHQ7n3zyyVFX583IyOD55593+fueeeaZ5OTkMG/ePMrLy+nfvz+PPvooQ4cOZfbs2Uddk+aee+7hsccew9fXl6efftrltYnIidGQk4h0utraWsrKyn5xe1BQEPHx8Z1YEZSUlFBfX/+L26OjowkLC+vEikSkIxRoRERExONpDo2IiIh4PAUaERER8XgKNCIiIuLxFGhERETE4ynQiIiIiMdToBERERGPp0AjIiIiHk+BRkRERDze/w9EuucK2jUdaQAAAABJRU5ErkJggg==\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "appln.query(\"appln_auth=='WO'\").groupby(\"appln_filing_year\")[\"appln_id\"].nunique().plot(kind=\"line\")" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 54, "outputs": [], "source": [ "ch_auth_pers = appln_pers.query(\"appln_auth=='CN'\")[\"person_ctry_code\"].value_counts(dropna=False).reset_index()\n" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 56, "outputs": [ { "data": { "text/plain": " person_ctry_code count\n0 UNKNOWN 50476312\n1 CN 79\n2 JP 8\n3 TW 4\n4 DE 4\n5 FR 2", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
person_ctry_codecount
0UNKNOWN50476312
1CN79
2JP8
3TW4
4DE4
5FR2
\n
" }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ch_auth_pers.fillna(\"UNKNOWN\")" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 49, "outputs": [], "source": [ "# appln_ch = appln_pers.groupby(\"appln_id\").filter(lambda gr: (gr[\"person_ctry_code\"] == \"CN\").any())\n", "# appln_scope = appln_ch.groupby(\"appln_id\").filter(lambda gr: (gr[\"person_ctry_code\"].isin(scope_countries)).any())\n", "# appln_scope.sample(100)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 20, "outputs": [], "source": [ "import numpy as np" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 23, "outputs": [], "source": [ "appln_ch_ids = appln_pers[appln_pers[\"person_ctry_code\"] == \"CN\"][\"appln_id\"].unique()\n", "appln_eu_ids = appln_pers[appln_pers[\"person_ctry_code\"].isin(scope_countries)][\"appln_id\"].unique()\n", "\n", "appln_scope_ids = np.intersect1d(appln_ch_ids, appln_eu_ids, assume_unique=False)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 37, "outputs": [], "source": [ "appln_scope = appln_pers[((appln_pers[\"appln_id\"].isin(appln_scope_ids))&\n", " (appln_pers[\"person_ctry_code\"].isin(list(scope_countries)+[\"CN\"])))]" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 45, "outputs": [], "source": [ "appln_pers_haninfo = pd.read_csv(f\"first_round/tls_206_scope_v2.csv\", usecols=[\"person_id\",\"han_id\",\"han_name\",\"psn_sector\"])" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 46, "outputs": [ { "data": { "text/plain": "(6584667, 18789)" }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "appln_pers_haninfo[\"han_id\"].nunique(), appln_scope[\"han_id\"].nunique()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 53, "outputs": [], "source": [ "han_sect = appln_pers_haninfo[[\"han_id\",\"psn_sector\"]].groupby(['han_id'])['psn_sector'].agg(pd.Series.mode)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 59, "outputs": [], "source": [ "han_sect = han_sect.reset_index()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 62, "outputs": [], "source": [ "han_sect[\"psn_sector\"] = han_sect[\"psn_sector\"].apply(lambda y: \"UNKNOWN\" if len(y)==0 else y)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 63, "outputs": [ { "data": { "text/plain": " han_id psn_sector\n3976016 167526859 UNKNOWN\n1544707 150315846 UNKNOWN\n1031384 144076709 UNKNOWN\n251660 114916086 COMPANY\n4256551 170565063 UNKNOWN\n5436213 179983755 UNKNOWN\n2686293 159907707 UNKNOWN\n3568687 164831483 UNKNOWN\n5139105 177983993 UNKNOWN\n968579 143805259 UNKNOWN", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
han_idpsn_sector
3976016167526859UNKNOWN
1544707150315846UNKNOWN
1031384144076709UNKNOWN
251660114916086COMPANY
4256551170565063UNKNOWN
5436213179983755UNKNOWN
2686293159907707UNKNOWN
3568687164831483UNKNOWN
5139105177983993UNKNOWN
968579143805259UNKNOWN
\n
" }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "han_sect.sample(10)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 64, "outputs": [], "source": [ "appln_scope = appln_scope.merge(han_sect, on=\"han_id\")" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 38, "outputs": [ { "data": { "text/plain": "(53909, 9)" }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_scope.shape" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 65, "outputs": [ { "data": { "text/plain": " appln_id appln_auth person_id invt_seq_nr applt_seq_nr \n11387 507242787 WO 5262071 0 1 \\\n8226 552675100 WO 5318110 0 1 \n22721 376063059 WO 25690230 3 4 \n48806 540543104 WO 51860538 2 3 \n52709 575543924 WO 63630536 2 0 \n42582 533357722 WO 47722168 3 0 \n15378 576018852 WO 50069447 0 3 \n42176 528369260 WO 50255341 3 4 \n46235 524262213 WO 73281459 5 0 \n51521 567061143 WO 71117487 3 0 \n\n person_name person_ctry_code han_id \n11387 Telefonaktiebolaget LM Ericsson (publ) SE 13378 \\\n8226 Huawei Technologies Co., Ltd. CN 1337324 \n22721 ZOU, YANMING CN 125690230 \n48806 XIE, JIEWEI CN 151860538 \n52709 LI, Xiangyang CN 163630536 \n42582 YANG, WENLONG CN 147722168 \n15378 NOKIA TECHNOLOGIES OY FI 2562294 \n42176 TIAN, KAI CN 150255341 \n46235 FAN, Cunfei CN 173281459 \n51521 Lin, Shengdie CN 171117487 \n\n han_name psn_sector \n11387 TELEFON AB LM ERICSSON PUBL COMPANY \n8226 HUAWEI TECH CO LTD COMPANY \n22721 ZOU, YANMING INDIVIDUAL \n48806 XIE, JIEWEI INDIVIDUAL \n52709 LI, Xiangyang INDIVIDUAL \n42582 YANG, WENLONG INDIVIDUAL \n15378 NOKIA TECH LTD COMPANY \n42176 TIAN, KAI INDIVIDUAL \n46235 FAN, Cunfei UNKNOWN \n51521 Lin, Shengdie UNKNOWN ", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
appln_idappln_authperson_idinvt_seq_nrapplt_seq_nrperson_nameperson_ctry_codehan_idhan_namepsn_sector
11387507242787WO526207101Telefonaktiebolaget LM Ericsson (publ)SE13378TELEFON AB LM ERICSSON PUBLCOMPANY
8226552675100WO531811001Huawei Technologies Co., Ltd.CN1337324HUAWEI TECH CO LTDCOMPANY
22721376063059WO2569023034ZOU, YANMINGCN125690230ZOU, YANMINGINDIVIDUAL
48806540543104WO5186053823XIE, JIEWEICN151860538XIE, JIEWEIINDIVIDUAL
52709575543924WO6363053620LI, XiangyangCN163630536LI, XiangyangINDIVIDUAL
42582533357722WO4772216830YANG, WENLONGCN147722168YANG, WENLONGINDIVIDUAL
15378576018852WO5006944703NOKIA TECHNOLOGIES OYFI2562294NOKIA TECH LTDCOMPANY
42176528369260WO5025534134TIAN, KAICN150255341TIAN, KAIINDIVIDUAL
46235524262213WO7328145950FAN, CunfeiCN173281459FAN, CunfeiUNKNOWN
51521567061143WO7111748730Lin, ShengdieCN171117487Lin, ShengdieUNKNOWN
\n
" }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_scope.sample(10)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 111, "outputs": [ { "data": { "text/plain": " appln_id appln_auth person_id invt_seq_nr applt_seq_nr \n124 419052362 CN 5361204 0 1 \\\n137 419052362 CN 51988464 1 0 \n\n person_name person_ctry_code han_id \n124 Schneider Electric Industries SAS FR 808003 \\\n137 JUZHONG SONG CN 151988464 \n\n han_name psn_sector \n124 SCHNEIDER ELECT IND SAS COMPANY \n137 JUZHONG SONG UNKNOWN ", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
appln_idappln_authperson_idinvt_seq_nrapplt_seq_nrperson_nameperson_ctry_codehan_idhan_namepsn_sector
124419052362CN536120401Schneider Electric Industries SASFR808003SCHNEIDER ELECT IND SASCOMPANY
137419052362CN5198846410JUZHONG SONGCN151988464JUZHONG SONGUNKNOWN
\n
" }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_scope.query(\"appln_auth=='CN'\")" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 112, "outputs": [ { "data": { "text/plain": " appln_id appln_auth appln_nr appln_kind appln_filing_date \n1568550 419052362 CN 201210551425 A 2012-12-18 \\\n\n appln_filing_year appln_nr_original ipr_type receiving_office \n1568550 2012 2012105514252 PI NaN \\\n\n internat_appln_id ... earliest_pat_publn_id granted docdb_family_id \n1568550 0 ... 419052363 Y 49886800 \\\n\n inpadoc_family_id docdb_family_size nb_citing_docdb_fam \n1568550 413446088 4 15 \\\n\n nb_applicants nb_inventors is_prior is_pct \n1568550 1 1 1 0 \n\n[1 rows x 28 columns]", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
appln_idappln_authappln_nrappln_kindappln_filing_dateappln_filing_yearappln_nr_originalipr_typereceiving_officeinternat_appln_id...earliest_pat_publn_idgranteddocdb_family_idinpadoc_family_iddocdb_family_sizenb_citing_docdb_famnb_applicantsnb_inventorsis_prioris_pct
1568550419052362CN201210551425A2012-12-1820122012105514252PINaN0...419052363Y498868004134460884151110
\n

1 rows × 28 columns

\n
" }, "execution_count": 112, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln.query('appln_id==419052362')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 85, "outputs": [ { "data": { "text/plain": " appln_id appln_auth person_id invt_seq_nr applt_seq_nr \n11387 507242787 WO 5262071 0 1 \\\n22810 507242787 WO 43700357 1 2 \n\n person_name person_ctry_code han_id \n11387 Telefonaktiebolaget LM Ericsson (publ) SE 13378 \\\n22810 WEN, GAN CN 143700357 \n\n han_name psn_sector \n11387 TELEFON AB LM ERICSSON PUBL COMPANY \n22810 WEN, GAN INDIVIDUAL ", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
appln_idappln_authperson_idinvt_seq_nrapplt_seq_nrperson_nameperson_ctry_codehan_idhan_namepsn_sector
11387507242787WO526207101Telefonaktiebolaget LM Ericsson (publ)SE13378TELEFON AB LM ERICSSON PUBLCOMPANY
22810507242787WO4370035712WEN, GANCN143700357WEN, GANINDIVIDUAL
\n
" }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_scope.query('appln_id==507242787')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 95, "outputs": [ { "data": { "text/plain": "" }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": "
", "image/png": "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YFmIHywsJCxyyKhMrsgpTr9+/RAaGopbt27pve3rKVnIzi3Qe7tERERkXKIoct58800AwI0bN4wcCRERaUM5oF9p9i1NG2RchsihNm2JoshRPmuTk1M4tPeaNWuwcePGIttdunSpTOMiIqKS6et5KBcX7Z+3JNNirByKosjJzs4GADg4FM5CGxISgrCwMGOGREREryGT5UAuV+i8v0RS+MsxPT2L0zqIlCFyqGxTE6Iocv766y8AQN26dQEAjo6O8PLyMmZIRESkAX38YhME/bRDxmOsHIqiyNm1axcaNmwIT09Pvbddr6qUvauIiPSojruDsUMgAmCCRU5WVhZSU1MhCAJkMhl27tyJgwcPqj2D8/TpU6SmphbZ187OTnVLS1M7R7YudcxERKSuQK5g93EyOokgmM5FwJdHPK5cuTIaNGiAkSNHokWLFgBePeJxnz59MG/ePK2OKZPllC7oEjg72xusbSobzKH4MYfGo48RjyUSwNVVirQ0PpMjVobIobJNTZjUlZykpKTXbpOQkKDXY8rlCr1/eJTd2wzRNpUN5lD8mEMi4qQuREREZJZY5BAREZFZYpFDREREZolFDhEREZklFjlERERklkyqdxVQOAbO2rVrcejQIdy/fx92dnYICAhAZGQk6tati+TkZISHh6u2t7S0RJUqVTBgwAAMGzZM6+NZWhquzjNk21Q2mEPxYw7V6aNrN5FYmFSRk5OTgwEDBuDp06eYMmUK6tWrB5lMhq1btyIkJAR79+5VbXvq1CkAQH5+Pq5du4ZJkyahWrVqCA4O1uqY+ppArqzbprLBHIofc6iuQK5AZsZTFjpULphUkbNy5Uqkp6fj4MGDqFSpEgCgevXqiImJQUpKCjZv3oygoCAAgJubm2q/atWqoWvXrjh48KDWRU6f+DOc1oGIyoU67g5YFuIHCwsJixwqF0ymyFEoFNizZw+GDRumKnBetGjRIlSqVAmXL18udv+KFSvi8ePHWh/3ekoWsnMLtN6PiIiITJvJFDm3b9/G48ePVdM3vMzd3b3EfW/cuIHExETMmDHDUOEREZkV5YjQpkwZoxhipeIZIofatGUyRY5MJgMAODo6qpadOXMGY8aMUf1crVo1zJw5EwDg5+cHACgoKEBeXh78/PzQtm3bMoyYiEicxPackouLZvMUkekyVg5NpshR3qJ68uSJapmf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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "appln_scope.groupby(\"appln_auth\")[\"appln_id\"].nunique().sort_values(ascending=True).plot(kind=\"barh\", logx=True, title='Number of patents produced in EU-China collaborations\\n(by location, 2011-2022)')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 124, "outputs": [], "source": [ "appln_scope.groupby(\"appln_auth\")[\"appln_id\"].nunique().sort_values(ascending=True).reset_index().merge(tls_801, left_on=\"appln_auth\",right_on=\"ctry_code\").to_excel(\"ds1.xlsx\", index=False)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 119, "outputs": [ { "data": { "text/plain": " ctry_code iso_alpha3 st3_name organisation_flag \n0 AD AND Andorra \\\n1 AE ARE United Arab Emirates \n2 AF AFG Afghanistan \n3 AG ATG Antigua and Barbuda \n4 AI AIA Anguilla \n.. ... ... ... ... \n235 YE YEM Yemen \n236 YU YUG Yugoslavia/Serbia and Montenegro \n237 ZA ZAF South Africa \n238 ZM ZMB Zambia \n239 ZW ZWE Zimbabwe \n\n continent eu_member epo_member oecd_member discontinued \n0 Europe \n1 Asia \n2 Asia \n3 North America \n4 North America \n.. ... ... ... ... ... \n235 Asia \n236 Europe Y \n237 Africa \n238 Africa \n239 Africa \n\n[240 rows x 9 columns]", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
ctry_codeiso_alpha3st3_nameorganisation_flagcontinenteu_memberepo_memberoecd_memberdiscontinued
0ADANDAndorraEurope
1AEAREUnited Arab EmiratesAsia
2AFAFGAfghanistanAsia
3AGATGAntigua and BarbudaNorth America
4AIAIAAnguillaNorth America
..............................
235YEYEMYemenAsia
236YUYUGYugoslavia/Serbia and MontenegroEuropeY
237ZAZAFSouth AfricaAfrica
238ZMZMBZambiaAfrica
239ZWZWEZimbabweAfrica
\n

240 rows × 9 columns

\n
" }, "execution_count": 119, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tls_801" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 40, "outputs": [ { "data": { "text/plain": "appln_auth\nWO 43113\nEP 4340\nDE 3189\nGB 1375\nFR 1042\nNL 167\nES 165\nLU 98\nFI 69\nRO 53\nPL 49\nMA 42\nCZ 40\nCH 38\nSE 33\nAT 27\nDK 21\nBE 19\nLT 15\nPT 9\nIE 3\nCN 2\nName: count, dtype: int64" }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_scope[\"appln_auth\"].value_counts()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 3, "outputs": [], "source": [ "outdir=\"EU_CH_scope\"\n", "\n", "appln = pd.read_csv(f\"{outdir}/tls_201_scope.csv\")" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 4, "outputs": [ { "data": { "text/plain": "65136" }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(appln)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 5, "outputs": [ { "data": { "text/plain": "24638" }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(appln[appln[\"appln_nr\"]==appln[\"appln_nr_original\"]])" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 6, "outputs": [ { "data": { "text/plain": " appln_id appln_auth appln_nr appln_kind appln_filing_date \n59726 568635720 DE 102021125268 A 2021-09-29 \\\n12204 421520760 WO 2013071985 W 2013-02-28 \n41470 519271319 US 201729627257 F 2017-11-24 \n21565 456717830 TW 103144389 A 2014-12-18 \n39245 513507702 TW 107123773 A 2018-07-10 \n15067 437950387 CA 2882927 A 2013-09-11 \n2331 365201373 US 201113309201 A 2011-12-01 \n42558 521483818 WO 2019079482 W 2019-10-29 \n54938 552149434 WO 2021065120 W 2021-06-07 \n63211 580342075 CO 2022012975 A 2022-09-13 \n\n appln_filing_year appln_nr_original ipr_type receiving_office \n59726 2021 102021125268 PI \\\n12204 2013 CN2013/071985 PI CN \n41470 2017 29627257 DP \n21565 2014 103144389 PI \n39245 2018 107123773 PI \n15067 2013 2882927 PI \n2331 2011 13309201 PI \n42558 2019 EP2019/079482 PI EP \n54938 2021 EP2021/065120 PI EP \n63211 2022 NC2022/0012975 PI \n\n internat_appln_id ... earliest_publn_date earliest_publn_year \n59726 0 ... 2022-03-31 2022 \\\n12204 0 ... 2014-09-04 2014 \n41470 0 ... 2019-09-17 2019 \n21565 0 ... 2016-03-16 2016 \n39245 0 ... 2019-03-01 2019 \n15067 410236729 ... 2014-03-20 2014 \n2331 332837342 ... 2012-07-19 2012 \n42558 0 ... 2021-05-06 2021 \n54938 0 ... 2022-12-15 2022 \n63211 901633858 ... 2022-09-30 2022 \n\n earliest_pat_publn_id granted docdb_family_id inpadoc_family_id \n59726 568635721 N 80624731 568635720 \\\n12204 421520761 N 51427475 421502712 \n41470 519271320 Y 67875052 519271319 \n21565 456717831 Y 52302387 425594478 \n39245 513507703 N 59501519 481695409 \n15067 437950388 Y 49165740 378704661 \n2331 365309255 Y 46490250 332836199 \n42558 550107980 N 68468669 521483818 \n54938 584644443 N 76355503 552149434 \n63211 580342076 N 74870863 547347540 \n\n docdb_family_size nb_citing_docdb_fam nb_applicants nb_inventors \n59726 3 0 1 6 \n12204 5 0 2 1 \n41470 1 0 1 2 \n21565 46 6 1 7 \n39245 2 0 1 6 \n15067 35 2 2 8 \n2331 1 3 7 6 \n42558 1 0 2 2 \n54938 1 0 2 2 \n63211 14 0 1 19 \n\n[10 rows x 26 columns]", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
appln_idappln_authappln_nrappln_kindappln_filing_dateappln_filing_yearappln_nr_originalipr_typereceiving_officeinternat_appln_id...earliest_publn_dateearliest_publn_yearearliest_pat_publn_idgranteddocdb_family_idinpadoc_family_iddocdb_family_sizenb_citing_docdb_famnb_applicantsnb_inventors
59726568635720DE102021125268A2021-09-292021102021125268PI0...2022-03-312022568635721N806247315686357203016
12204421520760WO2013071985W2013-02-282013CN2013/071985PICN0...2014-09-042014421520761N514274754215027125021
41470519271319US201729627257F2017-11-24201729627257DP0...2019-09-172019519271320Y678750525192713191012
21565456717830TW103144389A2014-12-182014103144389PI0...2016-03-162016456717831Y5230238742559447846617
39245513507702TW107123773A2018-07-102018107123773PI0...2019-03-012019513507703N595015194816954092016
15067437950387CA2882927A2013-09-1120132882927PI410236729...2014-03-202014437950388Y4916574037870466135228
2331365201373US201113309201A2011-12-01201113309201PI332837342...2012-07-192012365309255Y464902503328361991376
42558521483818WO2019079482W2019-10-292019EP2019/079482PIEP0...2021-05-062021550107980N684686695214838181022
54938552149434WO2021065120W2021-06-072021EP2021/065120PIEP0...2022-12-152022584644443N763555035521494341022
63211580342075CO2022012975A2022-09-132022NC2022/0012975PI901633858...2022-09-302022580342076N74870863547347540140119
\n

10 rows × 26 columns

\n
" }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln.sample(10)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 7, "outputs": [ { "data": { "text/plain": " appln_id appln_auth appln_nr appln_kind appln_filing_date \n24368 472782127 EP 16808728 A 2016-11-15 \\\n21272 456135686 EP 14905672 A 2014-11-15 \n21690 456935297 CA 2932236 A 2014-12-17 \n23267 469974134 TW 104128490 A 2015-08-28 \n24227 472426897 TW 105101423 A 2016-01-18 \n... ... ... ... ... ... \n5372 405824062 TW 101108520 A 2012-03-13 \n15441 438564193 EP 14847669 A 2014-09-18 \n27761 481859764 TW 105133993 A 2016-10-21 \n23898 471377037 CL 2015002557 A 2015-09-09 \n20776 451149018 TW 104112868 A 2015-04-22 \n\n appln_filing_year appln_nr_original ipr_type receiving_office \n24368 2016 16808728 PI \\\n21272 2014 14905672 PI \n21690 2014 2932236 PI \n23267 2015 104128490 PI \n24227 2016 105101423 PI \n... ... ... ... ... \n5372 2012 101108520 PI \n15441 2014 14847669 PI \n27761 2016 105133993 PI \n23898 2015 2015002557 PI \n20776 2015 104112868 PI \n\n internat_appln_id ... earliest_publn_date earliest_publn_year \n24368 471904726 ... 2018-09-26 2018 \\\n21272 456128773 ... 2017-09-20 2017 \n21690 424542770 ... 2015-07-09 2015 \n23267 0 ... 2016-07-16 2016 \n24227 0 ... 2016-09-01 2016 \n... ... ... ... ... \n5372 0 ... 2013-01-01 2013 \n15441 438547499 ... 2016-08-03 2016 \n27761 0 ... 2017-05-01 2017 \n23898 0 ... 2016-08-26 2016 \n20776 0 ... 2016-01-16 2016 \n\n earliest_pat_publn_id granted docdb_family_id inpadoc_family_id \n24368 498806476 N 57517914 471904726 \\\n21272 482714919 Y 55953638 456128773 \n21690 456935298 N 49876509 424542770 \n23267 469974135 Y 54238507 444673843 \n24227 472426898 Y 52358602 447591949 \n... ... ... ... ... \n5372 405856720 N 45937460 352022356 \n15441 457602632 N 52742141 438547499 \n27761 481859765 Y 58562247 471178388 \n23898 471377038 N 51537508 421989017 \n20776 451149019 N 54147239 444402812 \n\n docdb_family_size nb_citing_docdb_fam nb_applicants nb_inventors \n24368 3 7 1 4 \n21272 17 35 1 6 \n21690 5 6 2 4 \n23267 49 51 1 13 \n24227 8 11 1 7 \n... ... ... ... ... \n5372 12 13 1 5 \n15441 4 1 1 4 \n27761 22 24 1 4 \n23898 22 9 3 10 \n20776 5 6 1 2 \n\n[100 rows x 26 columns]", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
appln_idappln_authappln_nrappln_kindappln_filing_dateappln_filing_yearappln_nr_originalipr_typereceiving_officeinternat_appln_id...earliest_publn_dateearliest_publn_yearearliest_pat_publn_idgranteddocdb_family_idinpadoc_family_iddocdb_family_sizenb_citing_docdb_famnb_applicantsnb_inventors
24368472782127EP16808728A2016-11-15201616808728PI471904726...2018-09-262018498806476N575179144719047263714
21272456135686EP14905672A2014-11-15201414905672PI456128773...2017-09-202017482714919Y55953638456128773173516
21690456935297CA2932236A2014-12-1720142932236PI424542770...2015-07-092015456935298N498765094245427705624
23267469974134TW104128490A2015-08-282015104128490PI0...2016-07-162016469974135Y542385074446738434951113
24227472426897TW105101423A2016-01-182016105101423PI0...2016-09-012016472426898Y5235860244759194981117
..................................................................
5372405824062TW101108520A2012-03-132012101108520PI0...2013-01-012013405856720N45937460352022356121315
15441438564193EP14847669A2014-09-18201414847669PI438547499...2016-08-032016457602632N527421414385474994114
27761481859764TW105133993A2016-10-212016105133993PI0...2017-05-012017481859765Y58562247471178388222414
23898471377037CL2015002557A2015-09-0920152015002557PI0...2016-08-262016471377038N51537508421989017229310
20776451149018TW104112868A2015-04-222015104112868PI0...2016-01-162016451149019N541472394444028125612
\n

100 rows × 26 columns

\n
" }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln[appln[\"appln_nr\"]==appln[\"appln_nr_original\"]].sample(100)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 8, "outputs": [], "source": [ "\n", "appln_title = pd.read_csv(f\"{outdir}/tls_202_scope.csv\")\n", "\n", "pers = pd.read_csv(f\"{outdir}/tls_206_scope.csv\")\n", "pers['psn_sector'] = pers['psn_sector'].fillna(\"UNKNOWN\")\n", "\n", "appln_pers = pd.read_csv(f\"{outdir}/tls_207_scope.csv\")\n", "\n", "appln_cpc = pd.read_csv(f\"{outdir}/tls_224_scope.csv\")\n", "\n", "cpc_def = pd.read_csv(\"CPC_data/cpc_defs.csv\", low_memory=False)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 9, "outputs": [ { "data": { "text/plain": " person_id person_name person_name_orig_lg \n70690 54633600 LONG, HUOJUN LONG, HUOJUN \\\n67675 53995974 ACCOU, BRUNO ACCOU, BRUNO \n116777 81591947 RAMOS, Rita RAMOS, Rita \n94905 71114319 VERSALIS S.P.A. VERSALIS S.P.A. \n104848 74737285 ISAKSSON, Björn ISAKSSON, Björn \n123893 83424775 LIU, Qian LIU, Qian \n29588 40825214 MELEY, JEAN-PIERRE MELEY, JEAN-PIERRE \n106912 76993952 PENG-POEHLER, Xuyuan PENG-POEHLER, Xuyuan \n78798 56657638 TONG, Zhaoyang TONG, Zhaoyang \n10578 11967242 Dai, Chenglong Dai, Chenglong \n\n person_address person_ctry_code \n70690 SHANGHAI CN \\\n67675 Sint Truidensestwg 263A B-3350 Linter BE BE \n116777 Novartis Pharma AG, Postfach, 4002 Basel, SUIZA PT \n94905 IT IT \n104848 Mölndal SE \n123893 Otelfingen CH \n29588 NaN FR \n106912 NaN DE \n78798 Tyco Electronics (Shanghai) Co., Ltd.,F/G Sect... CN \n10578 Shenzhen CN \n\n nuts nuts_level doc_std_name_id doc_std_name psn_id \n70690 NaN 9 1937752 SUN XIAO 19885311 \\\n67675 BE 0 2145736 ACCOU BRUNO 245616 \n116777 PT 0 1921587 RAMOS RITA 26605720 \n94905 IT 0 255948 VERSALIS SPA 34028198 \n104848 SE 0 21757791 ISAKSSON BJÖRN 14166564 \n123893 CH 0 18631517 QIAO NING 183424775 \n29588 FR 0 178196 MELEY JEAN-PIERRE 21635951 \n106912 DE 0 34255238 PENG-POEHLER XUYUAN 25270057 \n78798 NaN 9 2067106 TONG ZHAOYANG 32942098 \n10578 NaN 9 4323331 DAI CHENGLONG 6018020 \n\n psn_name psn_level psn_sector han_id \n70690 LONG, HUOJUN 0 UNKNOWN 154633600 \\\n67675 ACCOU, BRUNO 0 UNKNOWN 153995974 \n116777 RAMOS, RITA 0 UNKNOWN 181591947 \n94905 VERSALIS 1 COMPANY 3508224 \n104848 ISAKSSON, BJÖRN 0 UNKNOWN 174737285 \n123893 LIU, Qian 0 UNKNOWN 183424775 \n29588 MELEY, JEAN-PIERRE 0 UNKNOWN 140825214 \n106912 PENG-POEHLER, XUYUAN 0 UNKNOWN 176993952 \n78798 TONG, ZHAOYANG 0 UNKNOWN 156657638 \n10578 DAI, CHENGLONG 1 INDIVIDUAL 111967242 \n\n han_name han_harmonized \n70690 LONG, HUOJUN 0 \n67675 ACCOU, BRUNO 0 \n116777 RAMOS, Rita 0 \n94905 VERSALIS SPA 2 \n104848 ISAKSSON, Björn 0 \n123893 LIU, Qian 0 \n29588 MELEY, JEAN-PIERRE 0 \n106912 PENG-POEHLER, Xuyuan 0 \n78798 TONG, Zhaoyang 0 \n10578 Dai, Chenglong 0 ", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
person_idperson_nameperson_name_orig_lgperson_addressperson_ctry_codenutsnuts_leveldoc_std_name_iddoc_std_namepsn_idpsn_namepsn_levelpsn_sectorhan_idhan_namehan_harmonized
7069054633600LONG, HUOJUNLONG, HUOJUNSHANGHAICNNaN91937752SUN XIAO19885311LONG, HUOJUN0UNKNOWN154633600LONG, HUOJUN0
6767553995974ACCOU, BRUNOACCOU, BRUNOSint Truidensestwg 263A B-3350 Linter BEBEBE02145736ACCOU BRUNO245616ACCOU, BRUNO0UNKNOWN153995974ACCOU, BRUNO0
11677781591947RAMOS, RitaRAMOS, RitaNovartis Pharma AG, Postfach, 4002 Basel, SUIZAPTPT01921587RAMOS RITA26605720RAMOS, RITA0UNKNOWN181591947RAMOS, Rita0
9490571114319VERSALIS S.P.A.VERSALIS S.P.A.ITITIT0255948VERSALIS SPA34028198VERSALIS1COMPANY3508224VERSALIS SPA2
10484874737285ISAKSSON, BjörnISAKSSON, BjörnMölndalSESE021757791ISAKSSON BJÖRN14166564ISAKSSON, BJÖRN0UNKNOWN174737285ISAKSSON, Björn0
12389383424775LIU, QianLIU, QianOtelfingenCHCH018631517QIAO NING183424775LIU, Qian0UNKNOWN183424775LIU, Qian0
2958840825214MELEY, JEAN-PIERREMELEY, JEAN-PIERRENaNFRFR0178196MELEY JEAN-PIERRE21635951MELEY, JEAN-PIERRE0UNKNOWN140825214MELEY, JEAN-PIERRE0
10691276993952PENG-POEHLER, XuyuanPENG-POEHLER, XuyuanNaNDEDE034255238PENG-POEHLER XUYUAN25270057PENG-POEHLER, XUYUAN0UNKNOWN176993952PENG-POEHLER, Xuyuan0
7879856657638TONG, ZhaoyangTONG, ZhaoyangTyco Electronics (Shanghai) Co., Ltd.,F/G Sect...CNNaN92067106TONG ZHAOYANG32942098TONG, ZHAOYANG0UNKNOWN156657638TONG, Zhaoyang0
1057811967242Dai, ChenglongDai, ChenglongShenzhenCNNaN94323331DAI CHENGLONG6018020DAI, CHENGLONG1INDIVIDUAL111967242Dai, Chenglong0
\n
" }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pers.sample(10)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 10, "outputs": [ { "data": { "text/plain": " cpc_id cpc_name \n0 A HUMAN NECESSITIES \\\n1 A01 AGRICULTURE; FORESTRY; ANIMAL HUSBANDRY; HUNTI... \n2 A01B SOIL WORKING IN AGRICULTURE OR FORESTRY; PARTS... \n3 A01B1/00 Hand tools (edge trimmers for lawns A01G3/06 ... \n4 A01B1/02 Spades; Shovels {(hand-operated dredgers E02F3... \n... ... ... \n260486 Y10T483/1873 Indexing matrix \n260487 Y10T483/1882 Rotary disc \n260488 Y10T483/1891 Chain or belt \n260489 Y10T483/19 Miscellaneous \n260490 NaN NaN \n\n section class subclass group main_group cpc_version \n0 A NaN NaN NaN NaN 2023 \\\n1 A 1.0 NaN NaN NaN 2023 \n2 A 1.0 B NaN NaN 2023 \n3 A 1.0 B 1.0 0.0 2023 \n4 A 1.0 B 1.0 2.0 2023 \n... ... ... ... ... ... ... \n260486 Y 10.0 T 483.0 1873.0 2023 \n260487 Y 10.0 T 483.0 1882.0 2023 \n260488 Y 10.0 T 483.0 1891.0 2023 \n260489 Y 10.0 T 483.0 19.0 2023 \n260490 NaN NaN NaN NaN NaN 2022 \n\n version https://git-lfs.github.com/spec/v1 \n0 NaN \\\n1 NaN \n2 NaN \n3 NaN \n4 NaN \n... ... \n260486 NaN \n260487 NaN \n260488 NaN \n260489 NaN \n260490 oid sha256:f138d6bdf2939ba576b96b633d81366123b... \n\n cpc_taxonomy \n0 [('A', 'HUMAN NECESSITIES')] \\\n1 [('A', 'HUMAN NECESSITIES'), ('A01', 'AGRICULT... \n2 [('A', 'HUMAN NECESSITIES'), ('A01', 'AGRICULT... \n3 [('A', 'HUMAN NECESSITIES'), ('A01', 'AGRICULT... \n4 [('A', 'HUMAN NECESSITIES'), ('A01', 'AGRICULT... \n... ... \n260486 [('Y', 'GENERAL TAGGING OF NEW TECHNOLOGICAL D... \n260487 [('Y', 'GENERAL TAGGING OF NEW TECHNOLOGICAL D... \n260488 [('Y', 'GENERAL TAGGING OF NEW TECHNOLOGICAL D... \n260489 [('Y', 'GENERAL TAGGING OF NEW TECHNOLOGICAL D... \n260490 [] \n\n cpc_fullname \n0 HUMAN NECESSITIES \\\n1 HUMAN NECESSITIES<>AGRICULTURE; FORESTRY; ANIM... \n2 HUMAN NECESSITIES<>AGRICULTURE; FORESTRY; ANIM... \n3 HUMAN NECESSITIES<>AGRICULTURE; FORESTRY; ANIM... \n4 HUMAN NECESSITIES<>AGRICULTURE; FORESTRY; ANIM... \n... ... \n260486 GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPME... \n260487 GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPME... \n260488 GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPME... \n260489 GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPME... \n260490 NaN \n\n tax_level_0 \n0 HUMAN NECESSITIES \\\n1 HUMAN NECESSITIES \n2 HUMAN NECESSITIES \n3 HUMAN NECESSITIES \n4 HUMAN NECESSITIES \n... ... \n260486 GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPME... \n260487 GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPME... \n260488 GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPME... \n260489 GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPME... \n260490 NaN \n\n tax_level_1 \n0 NaN \\\n1 AGRICULTURE; FORESTRY; ANIMAL HUSBANDRY; HUNTI... \n2 AGRICULTURE; FORESTRY; ANIMAL HUSBANDRY; HUNTI... \n3 AGRICULTURE; FORESTRY; ANIMAL HUSBANDRY; HUNTI... \n4 AGRICULTURE; FORESTRY; ANIMAL HUSBANDRY; HUNTI... \n... ... \n260486 TECHNICAL SUBJECTS COVERED BY FORMER USPC \n260487 TECHNICAL SUBJECTS COVERED BY FORMER USPC \n260488 TECHNICAL SUBJECTS COVERED BY FORMER USPC \n260489 TECHNICAL SUBJECTS COVERED BY FORMER USPC \n260490 NaN \n\n tax_level_2 \n0 NaN \\\n1 NaN \n2 SOIL WORKING IN AGRICULTURE OR FORESTRY; PARTS... \n3 SOIL WORKING IN AGRICULTURE OR FORESTRY; PARTS... \n4 SOIL WORKING IN AGRICULTURE OR FORESTRY; PARTS... \n... ... \n260486 TECHNICAL SUBJECTS COVERED BY FORMER US CLASSI... \n260487 TECHNICAL SUBJECTS COVERED BY FORMER US CLASSI... \n260488 TECHNICAL SUBJECTS COVERED BY FORMER US CLASSI... \n260489 TECHNICAL SUBJECTS COVERED BY FORMER US CLASSI... \n260490 NaN \n\n tax_level_3 tax_level_4 \n0 NaN NaN \\\n1 NaN NaN \n2 NaN NaN \n3 Hand tools (edge trimmers for lawns A01G3/06 ... NaN \n4 Spades; Shovels {(hand-operated dredgers E02F3... NaN \n... ... ... \n260486 Tool transfer to or from matrix Indexing matrix \n260487 Tool transfer to or from matrix Rotary disc \n260488 Tool transfer to or from matrix Chain or belt \n260489 Miscellaneous NaN \n260490 NaN NaN \n\n tax_level_5 tax_level_6 tax_level_7 data_scope \n0 NaN NaN NaN False \n1 NaN NaN NaN False \n2 NaN NaN NaN False \n3 NaN NaN NaN False \n4 NaN NaN NaN False \n... ... ... ... ... \n260486 NaN NaN NaN False \n260487 NaN NaN NaN False \n260488 NaN NaN NaN False \n260489 NaN NaN NaN False \n260490 NaN NaN NaN False \n\n[260491 rows x 20 columns]", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
cpc_idcpc_namesectionclasssubclassgroupmain_groupcpc_versionversion https://git-lfs.github.com/spec/v1cpc_taxonomycpc_fullnametax_level_0tax_level_1tax_level_2tax_level_3tax_level_4tax_level_5tax_level_6tax_level_7data_scope
0AHUMAN NECESSITIESANaNNaNNaNNaN2023NaN[('A', 'HUMAN NECESSITIES')]HUMAN NECESSITIESHUMAN NECESSITIESNaNNaNNaNNaNNaNNaNNaNFalse
1A01AGRICULTURE; FORESTRY; ANIMAL HUSBANDRY; HUNTI...A1.0NaNNaNNaN2023NaN[('A', 'HUMAN NECESSITIES'), ('A01', 'AGRICULT...HUMAN NECESSITIES<>AGRICULTURE; FORESTRY; ANIM...HUMAN NECESSITIESAGRICULTURE; FORESTRY; ANIMAL HUSBANDRY; HUNTI...NaNNaNNaNNaNNaNNaNFalse
2A01BSOIL WORKING IN AGRICULTURE OR FORESTRY; PARTS...A1.0BNaNNaN2023NaN[('A', 'HUMAN NECESSITIES'), ('A01', 'AGRICULT...HUMAN NECESSITIES<>AGRICULTURE; FORESTRY; ANIM...HUMAN NECESSITIESAGRICULTURE; FORESTRY; ANIMAL HUSBANDRY; HUNTI...SOIL WORKING IN AGRICULTURE OR FORESTRY; PARTS...NaNNaNNaNNaNNaNFalse
3A01B1/00Hand tools (edge trimmers for lawns A01G3/06 ...A1.0B1.00.02023NaN[('A', 'HUMAN NECESSITIES'), ('A01', 'AGRICULT...HUMAN NECESSITIES<>AGRICULTURE; FORESTRY; ANIM...HUMAN NECESSITIESAGRICULTURE; FORESTRY; ANIMAL HUSBANDRY; HUNTI...SOIL WORKING IN AGRICULTURE OR FORESTRY; PARTS...Hand tools (edge trimmers for lawns A01G3/06 ...NaNNaNNaNNaNFalse
4A01B1/02Spades; Shovels {(hand-operated dredgers E02F3...A1.0B1.02.02023NaN[('A', 'HUMAN NECESSITIES'), ('A01', 'AGRICULT...HUMAN NECESSITIES<>AGRICULTURE; FORESTRY; ANIM...HUMAN NECESSITIESAGRICULTURE; FORESTRY; ANIMAL HUSBANDRY; HUNTI...SOIL WORKING IN AGRICULTURE OR FORESTRY; PARTS...Spades; Shovels {(hand-operated dredgers E02F3...NaNNaNNaNNaNFalse
...............................................................
260486Y10T483/1873Indexing matrixY10.0T483.01873.02023NaN[('Y', 'GENERAL TAGGING OF NEW TECHNOLOGICAL D...GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPME...GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPME...TECHNICAL SUBJECTS COVERED BY FORMER USPCTECHNICAL SUBJECTS COVERED BY FORMER US CLASSI...Tool transfer to or from matrixIndexing matrixNaNNaNNaNFalse
260487Y10T483/1882Rotary discY10.0T483.01882.02023NaN[('Y', 'GENERAL TAGGING OF NEW TECHNOLOGICAL D...GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPME...GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPME...TECHNICAL SUBJECTS COVERED BY FORMER USPCTECHNICAL SUBJECTS COVERED BY FORMER US CLASSI...Tool transfer to or from matrixRotary discNaNNaNNaNFalse
260488Y10T483/1891Chain or beltY10.0T483.01891.02023NaN[('Y', 'GENERAL TAGGING OF NEW TECHNOLOGICAL D...GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPME...GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPME...TECHNICAL SUBJECTS COVERED BY FORMER USPCTECHNICAL SUBJECTS COVERED BY FORMER US CLASSI...Tool transfer to or from matrixChain or beltNaNNaNNaNFalse
260489Y10T483/19MiscellaneousY10.0T483.019.02023NaN[('Y', 'GENERAL TAGGING OF NEW TECHNOLOGICAL D...GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPME...GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPME...TECHNICAL SUBJECTS COVERED BY FORMER USPCTECHNICAL SUBJECTS COVERED BY FORMER US CLASSI...MiscellaneousNaNNaNNaNNaNFalse
260490NaNNaNNaNNaNNaNNaNNaN2022oid sha256:f138d6bdf2939ba576b96b633d81366123b...[]NaNNaNNaNNaNNaNNaNNaNNaNNaNFalse
\n

260491 rows × 20 columns

\n
" }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cpc_def" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 11, "outputs": [ { "data": { "text/plain": " appln_id cpc_class_symbol\n48451 408996326 B01J 35/1019\n361399 521927284 H04M 15/785\n410341 535434338 H04L 5/0048\n447944 546323648 H04L 5/005\n128095 441829683 H01L2924/12041\n183546 470030298 H04L 1/0005\n74962 416447093 B65H2404/1119\n382818 527400811 A61P 21/00\n411680 535860118 A61K 8/365\n289902 500408460 A61K 8/87", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
appln_idcpc_class_symbol
48451408996326B01J 35/1019
361399521927284H04M 15/785
410341535434338H04L 5/0048
447944546323648H04L 5/005
128095441829683H01L2924/12041
183546470030298H04L 1/0005
74962416447093B65H2404/1119
382818527400811A61P 21/00
411680535860118A61K 8/365
289902500408460A61K 8/87
\n
" }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_cpc.sample(10)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 12, "outputs": [ { "data": { "text/plain": "325243" }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(appln_pers)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 13, "outputs": [ { "data": { "text/plain": "65136" }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(appln)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 14, "outputs": [], "source": [ "# Number of collaborative applications\n" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 15, "outputs": [], "source": [ "record_col = \"appln_id\"" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 16, "outputs": [ { "data": { "text/plain": "'C:\\\\Users\\\\radvanyi\\\\PycharmProjects\\\\ZSI_analytics\\\\PATSTAT'" }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os.getcwd()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 17, "outputs": [], "source": [ "fromdir=\"first_round\"\n", "\n", "os.makedirs(fr'{fromdir}/plots', exist_ok=True)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 18, "outputs": [ { "data": { "text/plain": " 0 1 2 3 4 5\n0 43250057 SE A 1964 1 2\n1 43265240 SE A 1969 1 2\n2 365294032 DE A 2009 1 1\n3 353426804 DE A 2009 1 1\n4 335924788 DE U 2010 1 0\n... ... .. .. ... .. ..\n773112 577173906 CN A 2022 2 11\n773113 580290535 CN A 2022 1 1\n773114 573161360 CN A 2022 1 2\n773115 576722128 CN A 2022 2 9\n773116 574827324 CN A 2022 1 9\n\n[773117 rows x 6 columns]", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
012345
043250057SEA196412
143265240SEA196912
2365294032DEA200911
3353426804DEA200911
4335924788DEU201010
.....................
773112577173906CNA2022211
773113580290535CNA202211
773114573161360CNA202212
773115576722128CNA202229
773116574827324CNA202219
\n

773117 rows × 6 columns

\n
" }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_misc = pd.read_csv(f\"{fromdir}/first-filings-raw.csv\", header=None)#,\n", " #names=[\"appln_id\",\"appln_auth\",\"person_id\",\"invt_seq_nr\",\"applt_seq_nr\",'person_name',\"person_ctry_code\"])\n", "appln_misc" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 20, "outputs": [ { "data": { "text/plain": " 0 1 2 3 4 5 6 7\n0 43250057 SE A 1964 1 2 B21B 37/16 A\n1 43250057 SE A 1964 1 2 B21B 37/58 A\n2 43250057 SE A 1964 1 2 B21B 37/64 A\n3 43265240 SE A 1969 1 2 B65D 50/04 A\n4 365294032 DE A 2009 1 1 C10B 49/06 A\n... ... .. .. ... .. .. ... ..\n1719607 574827324 CN A 2022 1 9 B01J 27/138 A\n1719608 574827324 CN A 2022 1 9 B01J 37/00 A\n1719609 574827324 CN A 2022 1 9 B01J 37/02 A\n1719610 574827324 CN A 2022 1 9 B01J 37/08 A\n1719611 574827324 CN A 2022 1 9 C01G 13/04 A\n\n[1719612 rows x 8 columns]", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
01234567
043250057SEA196412B21B 37/16A
143250057SEA196412B21B 37/58A
243250057SEA196412B21B 37/64A
343265240SEA196912B65D 50/04A
4365294032DEA200911C10B 49/06A
...........................
1719607574827324CNA202219B01J 27/138A
1719608574827324CNA202219B01J 37/00A
1719609574827324CNA202219B01J 37/02A
1719610574827324CNA202219B01J 37/08A
1719611574827324CNA202219C01G 13/04A
\n

1719612 rows × 8 columns

\n
" }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_misc = pd.read_csv(f\"{fromdir}/first-filings-with-IPC-raw.csv\", header=None)#,\n", " #names=[\"appln_id\",\"appln_auth\",\"person_id\",\"invt_seq_nr\",\"applt_seq_nr\",'person_name',\"person_ctry_code\"])\n", "appln_misc" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 21, "outputs": [ { "data": { "text/plain": "2\nA 1643149\nU 76458\nD 5\nName: count, dtype: int64" }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_misc[2].value_counts()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 144, "outputs": [ { "data": { "text/plain": " appln_id appln_auth person_id invt_seq_nr applt_seq_nr \n25 375269300 CN 41022193 0 1 \\\n26 375269300 CN 43986391 1 0 \n64 336321508 CN 13960267 4 0 \n65 336321508 CN 20214523 3 0 \n66 336321508 CN 20440543 1 0 \n... ... ... ... ... ... \n2418562 563162779 CN 65016826 1 0 \n2418563 563162779 CN 65604326 3 0 \n2418564 563162779 CN 69335326 4 0 \n2418565 563162779 CN 78241111 5 0 \n2418566 563162779 CN 79926327 7 0 \n\n person_name person_ctry_code \n25 LU WATA ESPOO COMPANY NaN \n26 DENG WENJIA NaN \n64 LI JIANGUO NaN \n65 YU YUEMING NaN \n66 CHEN XUEMIN NaN \n... ... ... \n2418562 GUO HONGYU NaN \n2418563 ZHAO SHUFENG NaN \n2418564 LI BING NaN \n2418565 XU XIAOKAI NaN \n2418566 LYU JINGHUI NaN \n\n[1295204 rows x 7 columns]", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
appln_idappln_authperson_idinvt_seq_nrapplt_seq_nrperson_nameperson_ctry_code
25375269300CN4102219301LU WATA ESPOO COMPANYNaN
26375269300CN4398639110DENG WENJIANaN
64336321508CN1396026740LI JIANGUONaN
65336321508CN2021452330YU YUEMINGNaN
66336321508CN2044054310CHEN XUEMINNaN
........................
2418562563162779CN6501682610GUO HONGYUNaN
2418563563162779CN6560432630ZHAO SHUFENGNaN
2418564563162779CN6933532640LI BINGNaN
2418565563162779CN7824111150XU XIAOKAINaN
2418566563162779CN7992632770LYU JINGHUINaN
\n

1295204 rows × 7 columns

\n
" }, "execution_count": 144, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_colab = pd.read_csv(f\"{fromdir}/first-filings-with-persons-raw.csv\", header=None,\n", " names=[\"appln_id\",\"appln_auth\",\"person_id\",\"invt_seq_nr\",\"applt_seq_nr\",'person_name',\"person_ctry_code\"])\n", "\n", "\n", "# appln_colab[appln_colab[\"appln_auth\"]==\"CN\"]#.merge(appln_pers_haninfo, on=\"person_id\")" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 157, "outputs": [ { "data": { "text/plain": " appln_id appln_auth person_id invt_seq_nr applt_seq_nr \n1354 333078581 EP 4914457 1 0 \\\n1355 333078581 EP 49302649 0 1 \n1659 365282689 DE 5567000 0 1 \n1660 365282689 DE 40342643 2 0 \n1661 365282689 DE 43139037 1 0 \n... ... ... ... ... ... \n2396509 557244566 EP 83213913 1 0 \n2396510 557244566 EP 83239836 2 0 \n2396534 557244564 EP 83170367 0 1 \n2396535 557244564 EP 83213913 2 0 \n2396536 557244564 EP 83239836 1 0 \n\n person_name person_ctry_code \n1354 Collins, Tom BE \n1355 Huawei Technologies Co., Ltd. CN \n1659 Bayerische Motoren Werke Aktiengesellschaft DE \n1660 MOELLMANN, JOERG DE \n1661 JOHN, CHRISTOPH DE \n... ... ... \n2396509 LASSERRE, SEBASTIEN FR \n2396510 TAQUET, JONATHAN FR \n2396534 Beijing Xiaomi Mobile Software Co., Ltd. CN \n2396535 LASSERRE, SEBASTIEN FR \n2396536 TAQUET, JONATHAN FR \n\n[4963 rows x 7 columns]", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
appln_idappln_authperson_idinvt_seq_nrapplt_seq_nrperson_nameperson_ctry_code
1354333078581EP491445710Collins, TomBE
1355333078581EP4930264901Huawei Technologies Co., Ltd.CN
1659365282689DE556700001Bayerische Motoren Werke AktiengesellschaftDE
1660365282689DE4034264320MOELLMANN, JOERGDE
1661365282689DE4313903710JOHN, CHRISTOPHDE
........................
2396509557244566EP8321391310LASSERRE, SEBASTIENFR
2396510557244566EP8323983620TAQUET, JONATHANFR
2396534557244564EP8317036701Beijing Xiaomi Mobile Software Co., Ltd.CN
2396535557244564EP8321391320LASSERRE, SEBASTIENFR
2396536557244564EP8323983610TAQUET, JONATHANFR
\n

4963 rows × 7 columns

\n
" }, "execution_count": 157, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_ch = appln_colab.groupby(\"appln_id\").filter(lambda gr: (gr[\"person_ctry_code\"]==\"CN\").any())\n", "appln_scope = appln_ch.groupby(\"appln_id\").filter(lambda gr: (gr[\"person_ctry_code\"].isin(scope_countries)).any())\n", "appln_scope" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 161, "outputs": [ { "data": { "text/plain": " appln_id appln_auth person_id invt_seq_nr applt_seq_nr \n0 333078581 EP 4914457 1 0 \\\n1 365149571 EP 4914457 1 0 \n2 379191760 EP 4914457 1 0 \n3 333078581 EP 49302649 0 1 \n4 339456534 EP 49302649 0 1 \n... ... ... ... ... ... \n4436 549690891 EP 85841201 1 0 \n4437 549690895 EP 85841201 1 0 \n4438 549690901 EP 85841201 1 0 \n4439 549690897 EP 85841201 1 0 \n4440 549788919 EP 85774895 2 0 \n\n person_name person_ctry_code psn_sector han_id \n0 Collins, Tom BE NaN 104914457 \\\n1 Collins, Tom BE NaN 104914457 \n2 Collins, Tom BE NaN 104914457 \n3 Huawei Technologies Co., Ltd. CN COMPANY 1337324 \n4 Huawei Technologies Co., Ltd. CN COMPANY 1337324 \n... ... ... ... ... \n4436 JONSSON, Tony SE UNKNOWN 185841201 \n4437 JONSSON, Tony SE UNKNOWN 185841201 \n4438 JONSSON, Tony SE UNKNOWN 185841201 \n4439 JONSSON, Tony SE UNKNOWN 185841201 \n4440 TRAN NGUYEN, Johnny SE UNKNOWN 185774895 \n\n han_name \n0 Collins, Tom \n1 Collins, Tom \n2 Collins, Tom \n3 HUAWEI TECH CO LTD \n4 HUAWEI TECH CO LTD \n... ... \n4436 JONSSON, Tony \n4437 JONSSON, Tony \n4438 JONSSON, Tony \n4439 JONSSON, Tony \n4440 TRAN NGUYEN, Johnny \n\n[4441 rows x 10 columns]", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
appln_idappln_authperson_idinvt_seq_nrapplt_seq_nrperson_nameperson_ctry_codepsn_sectorhan_idhan_name
0333078581EP491445710Collins, TomBENaN104914457Collins, Tom
1365149571EP491445710Collins, TomBENaN104914457Collins, Tom
2379191760EP491445710Collins, TomBENaN104914457Collins, Tom
3333078581EP4930264901Huawei Technologies Co., Ltd.CNCOMPANY1337324HUAWEI TECH CO LTD
4339456534EP4930264901Huawei Technologies Co., Ltd.CNCOMPANY1337324HUAWEI TECH CO LTD
.................................
4436549690891EP8584120110JONSSON, TonySEUNKNOWN185841201JONSSON, Tony
4437549690895EP8584120110JONSSON, TonySEUNKNOWN185841201JONSSON, Tony
4438549690901EP8584120110JONSSON, TonySEUNKNOWN185841201JONSSON, Tony
4439549690897EP8584120110JONSSON, TonySEUNKNOWN185841201JONSSON, Tony
4440549788919EP8577489520TRAN NGUYEN, JohnnySEUNKNOWN185774895TRAN NGUYEN, Johnny
\n

4441 rows × 10 columns

\n
" }, "execution_count": 161, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_scope.merge(appln_pers_haninfo, on=\"person_id\")" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 160, "outputs": [ { "data": { "text/plain": "1155" }, "execution_count": 160, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_scope[\"appln_id\"].nunique()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 162, "outputs": [ { "data": { "text/plain": "Empty DataFrame\nColumns: [appln_id_x, appln_auth_x, person_id, invt_seq_nr_x, applt_seq_nr_x, person_name_x, person_ctry_code_x, appln_id_y, appln_auth_y, invt_seq_nr_y, applt_seq_nr_y, person_name_y, person_ctry_code_y, psn_sector, han_id, han_name, psn_sector_primary, person_ctry_code_fullname, appln_auth_fullname, person_ctry_ISO3, person_ctry_type, auth_ISO3, auth_ctry_type]\nIndex: []\n\n[0 rows x 23 columns]", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
appln_id_xappln_auth_xperson_idinvt_seq_nr_xapplt_seq_nr_xperson_name_xperson_ctry_code_xappln_id_yappln_auth_yinvt_seq_nr_y...psn_sectorhan_idhan_namepsn_sector_primaryperson_ctry_code_fullnameappln_auth_fullnameperson_ctry_ISO3person_ctry_typeauth_ISO3auth_ctry_type
\n

0 rows × 23 columns

\n
" }, "execution_count": 162, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_scope[appln_scope[\"person_ctry_code\"]==\"GB\"].merge(appln_pers_f, on=\"person_id\")" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 153, "outputs": [ { "data": { "text/plain": " appln_id appln_auth person_id invt_seq_nr applt_seq_nr \n6810 333031060 GB 42380482 1 0 \\\n27291 334469711 GB 42552873 0 1 \n31935 336159242 GB 5318110 0 1 \n55322 333031012 GB 42013453 1 1 \n128151 337007702 GB 5318110 0 1 \n... ... ... ... ... ... \n2130509 546501618 GB 87463236 1 0 \n2135530 546434937 GB 20149035 3 0 \n2135533 546434937 GB 88227411 0 2 \n2210955 550995729 GB 17999648 2 0 \n2210971 550995769 GB 17999648 2 0 \n\n person_name person_ctry_code \n6810 KA-SHUN CARRISON TONG CN \n27291 LE GROUP OF COMPANIES LIMITED CN \n31935 Huawei Technologies Co., Ltd. CN \n55322 BENJAMINO KAH HUNG LEE CN \n128151 Huawei Technologies Co., Ltd. CN \n... ... ... \n2130509 Santiago Ramon Alvarez Fernandez CN \n2135530 YU HUAI CN \n2135533 PICOCOM (HANGZHOU) CO., LTD. CN \n2210955 ZHANG LIN CN \n2210971 ZHANG LIN CN \n\n[278 rows x 7 columns]", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
appln_idappln_authperson_idinvt_seq_nrapplt_seq_nrperson_nameperson_ctry_code
6810333031060GB4238048210KA-SHUN CARRISON TONGCN
27291334469711GB4255287301LE GROUP OF COMPANIES LIMITEDCN
31935336159242GB531811001Huawei Technologies Co., Ltd.CN
55322333031012GB4201345311BENJAMINO KAH HUNG LEECN
128151337007702GB531811001Huawei Technologies Co., Ltd.CN
........................
2130509546501618GB8746323610Santiago Ramon Alvarez FernandezCN
2135530546434937GB2014903530YU HUAICN
2135533546434937GB8822741102PICOCOM (HANGZHOU) CO., LTD.CN
2210955550995729GB1799964820ZHANG LINCN
2210971550995769GB1799964820ZHANG LINCN
\n

278 rows × 7 columns

\n
" }, "execution_count": 153, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_colab[((appln_colab[\"appln_auth\"]==\"GB\")&(appln_colab[\"person_ctry_code\"]==\"CN\"))]" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 163, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1155\n" ] } ], "source": [ "appln_ch = appln_colab.groupby(\"appln_id\").filter(lambda gr: (gr[\"person_ctry_code\"]==\"CN\").any())\n", "appln_scope = appln_ch.groupby(\"appln_id\").filter(lambda gr: (gr[\"person_ctry_code\"].isin(scope_countries)).any())\n", "\n", "print(appln_scope[\"appln_id\"].nunique())\n" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 241, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 242, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1155\n" ] } ], "source": [ "appln_pers_f = pd.read_csv(f\"{fromdir}/first-filings-with-persons-raw.csv\", header=None,\n", " names=[\"appln_id\",\"appln_auth\",\"person_id\",\"invt_seq_nr\",\"applt_seq_nr\",'person_name',\"person_ctry_code\"])\n", "\n", "\n", "appln_ch = appln_pers_f.groupby(\"appln_id\").filter(lambda gr: (gr[\"person_ctry_code\"]==\"CN\").any())\n", "appln_scope = appln_ch.groupby(\"appln_id\").filter(lambda gr: (gr[\"person_ctry_code\"].isin(scope_countries)).any())\n", "\n", "print(appln_scope[\"appln_id\"].nunique())" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 243, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1155\n" ] } ], "source": [ "appln_pers_haninfo = pd.read_csv(f\"{fromdir}/tls_206_scope.csv\", usecols=[\"person_id\",\"han_id\",\"han_name\",\"psn_sector\"])\n", "\n", "appln_pers_haninfo[\"han_name\"] = appln_pers_haninfo[\"han_name\"].str.replace(\"Zhejiang Geely Holding Group Co., Ltd.\",\n", " \"ZHEJIANG GEELY HOLDINGGROUP CO LTD\")\n", "\n", "\n", "appln_pers_haninfo.loc[appln_pers_haninfo[\"han_name\"]==\"ZHEJIANG GEELY HOLDINGGROUP CO LTD\",\"han_id\"] = 3345915\n", "\n", "appln_pers_f = appln_scope.merge(appln_pers_haninfo[[\"person_id\",\"han_id\",\"han_name\"]].drop_duplicates(), on=\"person_id\")\n", "print(appln_pers_f[\"appln_id\"].nunique())" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 243, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 244, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1155\n" ] } ], "source": [ "pers_sector_primary = pers.groupby(\"han_id\", as_index=False)[\"psn_sector\"].agg(\n", " lambda x: pd.Series.mode(x)[0]).rename(columns={\"psn_sector\":\"psn_sector_primary\"})\n", "appln_pers_f = appln_pers_f.merge(pers_sector_primary, on='han_id', how=\"left\")\n", "appln_pers_f[\"psn_sector_primary\"] = appln_pers_f[\"psn_sector_primary\"].fillna(\"UNKNOWN\")\n", "print(appln_pers_f[\"appln_id\"].nunique())" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 244, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 245, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1155 1155\n" ] } ], "source": [ "print(appln_pers_f[\"appln_id\"].nunique(), appln_scope[\"appln_id\"].nunique())" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 246, "outputs": [], "source": [ "tls_801 = pd.read_csv(r\"./EU_CH_scope/table_tls801.csv\", low_memory=False)\n", "# tls_801.head()\n", "scope_df = tls_801[((tls_801.eu_member==\"Y\")|\n", " (tls_801.ctry_code == 'NO')|\n", " (tls_801.ctry_code == 'CH')|\n", " (tls_801.ctry_code == 'GB'))]\n", "scope_countries = scope_df[\"ctry_code\"].unique()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 247, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1155 1155\n" ] } ], "source": [ "appln_pers_f = appln_pers_f[appln_pers_f[\"person_ctry_code\"].isin(list(scope_countries)+[\"CN\"])]\n", "print(appln_pers_f[\"appln_id\"].nunique(), appln_scope[\"appln_id\"].nunique())" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 248, "outputs": [ { "data": { "text/plain": "['AT',\n 'BE',\n 'BG',\n 'CH',\n 'CY',\n 'CZ',\n 'DE',\n 'DK',\n 'EE',\n 'ES',\n 'FI',\n 'FR',\n 'GB',\n 'GR',\n 'HR',\n 'HU',\n 'IE',\n 'IT',\n 'LT',\n 'LU',\n 'LV',\n 'MT',\n 'NL',\n 'NO',\n 'PL',\n 'PT',\n 'RO',\n 'SE',\n 'SI',\n 'SK',\n 'CN']" }, "execution_count": 248, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(scope_countries)+[\"CN\"]" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 248, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 249, "outputs": [ { "data": { "text/plain": " appln_id appln_auth person_id invt_seq_nr applt_seq_nr \n0 333078581 EP 4914457 1 0 \\\n1 365149571 EP 4914457 1 0 \n2 379191760 EP 4914457 1 0 \n3 333078581 EP 49302649 0 1 \n4 339456534 EP 49302649 0 1 \n... ... ... ... ... ... \n4958 549690891 EP 85841201 1 0 \n4959 549690895 EP 85841201 1 0 \n4960 549690901 EP 85841201 1 0 \n4961 549690897 EP 85841201 1 0 \n4962 549788919 EP 85774895 2 0 \n\n person_name person_ctry_code han_id \n0 Collins, Tom BE 104914457 \\\n1 Collins, Tom BE 104914457 \n2 Collins, Tom BE 104914457 \n3 Huawei Technologies Co., Ltd. CN 1337324 \n4 Huawei Technologies Co., Ltd. CN 1337324 \n... ... ... ... \n4958 JONSSON, Tony SE 185841201 \n4959 JONSSON, Tony SE 185841201 \n4960 JONSSON, Tony SE 185841201 \n4961 JONSSON, Tony SE 185841201 \n4962 TRAN NGUYEN, Johnny SE 185774895 \n\n han_name psn_sector_primary \n0 Collins, Tom UNKNOWN \n1 Collins, Tom UNKNOWN \n2 Collins, Tom UNKNOWN \n3 HUAWEI TECH CO LTD COMPANY \n4 HUAWEI TECH CO LTD COMPANY \n... ... ... \n4958 JONSSON, Tony UNKNOWN \n4959 JONSSON, Tony UNKNOWN \n4960 JONSSON, Tony UNKNOWN \n4961 JONSSON, Tony UNKNOWN \n4962 TRAN NGUYEN, Johnny UNKNOWN \n\n[4814 rows x 10 columns]", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
appln_idappln_authperson_idinvt_seq_nrapplt_seq_nrperson_nameperson_ctry_codehan_idhan_namepsn_sector_primary
0333078581EP491445710Collins, TomBE104914457Collins, TomUNKNOWN
1365149571EP491445710Collins, TomBE104914457Collins, TomUNKNOWN
2379191760EP491445710Collins, TomBE104914457Collins, TomUNKNOWN
3333078581EP4930264901Huawei Technologies Co., Ltd.CN1337324HUAWEI TECH CO LTDCOMPANY
4339456534EP4930264901Huawei Technologies Co., Ltd.CN1337324HUAWEI TECH CO LTDCOMPANY
.................................
4958549690891EP8584120110JONSSON, TonySE185841201JONSSON, TonyUNKNOWN
4959549690895EP8584120110JONSSON, TonySE185841201JONSSON, TonyUNKNOWN
4960549690901EP8584120110JONSSON, TonySE185841201JONSSON, TonyUNKNOWN
4961549690897EP8584120110JONSSON, TonySE185841201JONSSON, TonyUNKNOWN
4962549788919EP8577489520TRAN NGUYEN, JohnnySE185774895TRAN NGUYEN, JohnnyUNKNOWN
\n

4814 rows × 10 columns

\n
" }, "execution_count": 249, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_pers_f" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 250, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1155\n" ] }, { "data": { "text/plain": " appln_id appln_auth appln_kind filing_year nb_applicants \n3246 331546756 EP A 2011 1 \\\n194962 448860230 DE A 2014 1 \n588485 513966940 EP A 2019 1 \n206034 416859711 EP A 2014 1 \n670021 532224185 EP A 2020 2 \n... ... ... ... ... ... \n460742 491633486 EP A 2018 1 \n275339 446738785 FR A 2015 1 \n505075 504869364 EP A 2018 1 \n474988 524089197 DE A 2018 1 \n567305 509177273 EP A 2019 1 \n\n nb_inventors \n3246 1 \n194962 3 \n588485 1 \n206034 2 \n670021 2 \n... ... \n460742 3 \n275339 3 \n505075 4 \n474988 6 \n567305 1 \n\n[100 rows x 6 columns]", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
appln_idappln_authappln_kindfiling_yearnb_applicantsnb_inventors
3246331546756EPA201111
194962448860230DEA201413
588485513966940EPA201911
206034416859711EPA201412
670021532224185EPA202022
.....................
460742491633486EPA201813
275339446738785FRA201513
505075504869364EPA201814
474988524089197DEA201816
567305509177273EPA201911
\n

100 rows × 6 columns

\n
" }, "execution_count": 250, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_f = pd.read_csv(f\"{fromdir}/first-filings-raw.csv\", header=None,\n", " names=[\"appln_id\",\"appln_auth\",\"appln_kind\",\"filing_year\",\"nb_applicants\",'nb_inventors'])\n", "\n", "appln_f[\"filing_year\"] = appln_f[\"filing_year\"].astype(int)\n", "\n", "appln_f = appln_f[appln_f[\"filing_year\"]>2010]\n", "\n", "appln_f[\"appln_auth\"] = appln_f[\"appln_auth\"].str.replace(\"MA\",\"CN\")\n", "\n", "appln_f = appln_f[appln_f[\"appln_id\"].isin(appln_scope['appln_id'])]\n", "print(appln_f[\"appln_id\"].nunique())\n", "\n", "appln_f.sample(100)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 250, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 250, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 251, "outputs": [ { "data": { "text/plain": "appln_kind\nA 1164\nU 7\nName: count, dtype: int64" }, "execution_count": 251, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_f[\"appln_kind\"].value_counts()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 251, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 252, "outputs": [], "source": [ "# Co-patents per year" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 253, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "hovertemplate": "Year:%{x:d}
Number of co-publications:%{y:d}", "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+text+lines", "name": "", "orientation": "v", "showlegend": false, "text": [ 54.0, 49.0, 69.0, 64.0, 94.0, 103.0, 158.0, 184.0, 170.0, 146.0, 64.0 ], "textfont": { "size": 12 }, "textposition": "top center", "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x", "y": [ 54, 49, 69, 64, 94, 103, 158, 184, 170, 146, 64 ], "yaxis": "y", "type": "scatter" }, { "hovertemplate": "Year:%{x:d}
Rel.growth in co-publications:%{y:.0%}", "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+text+lines", "name": "", "orientation": "v", "showlegend": false, "text": [ 0.0, -0.09259259259259259, 0.2777777777777778, 0.18518518518518517, 0.7407407407407407, 0.9074074074074074, 1.9259259259259258, 2.4074074074074074, 2.1481481481481484, 1.7037037037037037, 0.18518518518518517 ], "textfont": { "size": 12 }, "textposition": "top center", "texttemplate": "%{y:.0%}", "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x2", "y": [ 0.0, -0.09259259259259259, 0.2777777777777778, 0.18518518518518517, 0.7407407407407407, 0.9074074074074074, 1.9259259259259258, 2.4074074074074074, 2.1481481481481484, 1.7037037037037037, 0.18518518518518517 ], "yaxis": "y2", "type": "scatter" } ], "layout": { "template": { "data": { "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmapgl" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "xaxis": { "anchor": "y", "domain": [ 0.0, 1.0 ], "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis": { "anchor": "x", "domain": [ 0.625, 1.0 ], "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "range": [ 0, 250 ] }, "xaxis2": { "anchor": "y2", "domain": [ 0.0, 1.0 ], "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis2": { "anchor": "x2", "domain": [ 0.0, 0.375 ], "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "zerolinecolor": "grey", "tickformat": ".0%", "range": [ -1, 3.5 ] }, "annotations": [ { "font": { "size": 16 }, "showarrow": false, "text": "Co-patents per year", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 1.0, "yanchor": "bottom", "yref": "paper" }, { "font": { "size": 16 }, "showarrow": false, "text": "Relative growth of co-patents", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 0.375, "yanchor": "bottom", "yref": "paper" } ], "barmode": "relative", "font": { "family": "Montserrat" } }, "config": { "displayModeBar": false, "responsive": true, "plotlyServerURL": "https://plotly.com" } }, "text/html": "
" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data = (appln_f.groupby(['filing_year'])[record_col].nunique(dropna=False)\n", " .reset_index()\n", " .rename(columns={0:record_col}))\n", "data[record_col+\"_relative_growth\"] = data[data[record_col]>0].sort_values(by=[\"filing_year\"], ascending=True)[record_col][0]\n", "data[record_col+\"_relative_growth\"] = (data[record_col]-data[record_col+\"_relative_growth\"])/data[record_col+\"_relative_growth\"]\n", "\n", "data = data.sort_values(by =[\"filing_year\"], ascending=[True])\n", "data[record_col+\"_cumsum\"] = (data[record_col].cumsum())\n", "\n", "year_output = px.line(data,x=\"filing_year\", y=record_col, markers=True, text=record_col)\n", "year_output.update_traces(textposition='top center',textfont_size=12)\n", "year_output.update_traces(hovertemplate='Year:%{x:d}
Number of co-publications:%{y:d}')\n", "\n", "year_rel_output = px.line(data,x=\"filing_year\", y=record_col+\"_relative_growth\", markers=True, text=record_col+\"_relative_growth\")\n", "year_rel_output.update_traces(textposition='top center',textfont_size=12, texttemplate='%{y:.0%}')\n", "year_rel_output.update_traces(hovertemplate='Year:%{x:d}
Rel.growth in co-publications:%{y:.0%}')\n", "\n", "figsuper = make_subplots(rows=2, cols=1, subplot_titles=[\"Co-patents per year\",\"Relative growth of co-patents\"],\n", " specs=[\n", " [{\"type\": \"xy\"}],\n", " [{\"type\": \"xy\"}]\n", " ])\n", "\n", "for trace in list(year_output.select_traces()):\n", " figsuper.add_trace(trace,\n", " row=1, col=1\n", " )\n", "\n", "for trace in list(year_rel_output.select_traces()):\n", " figsuper.add_trace(trace,\n", " row=2, col=1\n", " )\n", "\n", "figsuper.update_layout(yaxis={'categoryorder':'total ascending'}, barmode='relative')\n", "figsuper.update_yaxes(\n", " showgrid=True,showline=True, linewidth=1, linecolor='black', mirror=True,\n", " ticks=\"outside\")\n", "figsuper.update_xaxes(\n", " showgrid=True,showline=True, linewidth=1, linecolor='black', mirror=True,\n", " ticks=\"outside\")\n", "figsuper.update_layout({'template':\"plotly\",\"font_family\":\"Montserrat\"})\n", "figsuper['layout']['yaxis2'].update(zerolinecolor='grey',tickformat=\".0%\")\n", "# for i in[\"xaxis\",\"xaxis2\"]:\n", "# figsuper['layout'][f'{i}'][\"range\"] = [2010.8,2022.5]\n", "#\n", "figsuper['layout'][\"yaxis\"][\"range\"] = [0,250]\n", "figsuper['layout'][\"yaxis2\"][\"range\"] = [-1,3.5]\n", "#\n", "# figsuper['layout']['yaxis'].update(tickformat=\".0f\")\n", "# figsuper['layout']['yaxis3'].update(tickformat=\".0f\")\n", "\n", "figsuper.show(config= dict(displayModeBar = False, responsive = True),height=800,width=1600,scale = 4)\n", "\n", "figsuper.write_image(f\"{fromdir}/plots/overall_distr&trends.png\",height=900,width=900,scale = 4)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 254, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "EP not found in ISO2\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Austria", "Austria", "Austria", "Austria", "Austria", "Austria", "Austria", "Austria", "Austria", "Austria", "Austria" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x11", "y": [ 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 2.0, 2.0, 0.0 ], "yaxis": "y11", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Belgium", "Belgium", "Belgium", "Belgium", "Belgium", "Belgium", "Belgium", "Belgium", "Belgium", "Belgium", "Belgium" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x12", "y": [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0 ], "yaxis": "y12", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Czech Republic", "Czech Republic", "Czech Republic", "Czech Republic", "Czech Republic", "Czech Republic", "Czech Republic", "Czech Republic", "Czech Republic", "Czech Republic", "Czech Republic" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x13", "y": [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 1.0, 0.0 ], "yaxis": "y13", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Denmark", "Denmark", "Denmark", "Denmark", "Denmark", "Denmark", "Denmark", "Denmark", "Denmark", "Denmark", "Denmark" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x14", "y": [ 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0 ], "yaxis": "y14", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "European Patent Office", "European Patent Office", "European Patent Office", "European Patent Office", "European Patent Office", "European Patent Office", "European Patent Office", "European Patent Office", "European Patent Office", "European Patent Office", "European Patent Office" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x15", "y": [ 21.0, 16.0, 16.0, 21.0, 28.0, 36.0, 57.0, 104.0, 114.0, 90.0, 35.0 ], "yaxis": "y15", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Finland", "Finland", "Finland", "Finland", "Finland", "Finland", "Finland", "Finland", "Finland", "Finland", "Finland" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x6", "y": [ 3.0, 2.0, 1.0, 1.0, 3.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "yaxis": "y6", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "France", "France", "France", "France", "France", "France", "France", "France", "France", "France", "France" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x7", "y": [ 10.0, 9.0, 14.0, 5.0, 13.0, 12.0, 13.0, 6.0, 11.0, 14.0, 6.0 ], "yaxis": "y7", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Germany", "Germany", "Germany", "Germany", "Germany", "Germany", "Germany", "Germany", "Germany", "Germany", "Germany" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x8", "y": [ 14.0, 14.0, 31.0, 29.0, 24.0, 18.0, 30.0, 29.0, 19.0, 19.0, 15.0 ], "yaxis": "y8", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Luxembourg", "Luxembourg", "Luxembourg", "Luxembourg", "Luxembourg", "Luxembourg", "Luxembourg", "Luxembourg", "Luxembourg", "Luxembourg", "Luxembourg" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x9", "y": [ 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.0 ], "yaxis": "y9", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Netherlands", "Netherlands", "Netherlands", "Netherlands", "Netherlands", "Netherlands", "Netherlands", "Netherlands", "Netherlands", "Netherlands", "Netherlands" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x10", "y": [ 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 7.0, 7.0, 1.0, 8.0, 1.0 ], "yaxis": "y10", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Portugal", "Portugal", "Portugal", "Portugal", "Portugal", "Portugal", "Portugal", "Portugal", "Portugal", "Portugal", "Portugal" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x", "y": [ 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "yaxis": "y", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Spain", "Spain", "Spain", "Spain", "Spain", "Spain", "Spain", "Spain", "Spain", "Spain", "Spain" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x2", "y": [ 4.0, 1.0, 0.0, 1.0, 3.0, 2.0, 3.0, 0.0, 1.0, 0.0, 0.0 ], "yaxis": "y2", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Sweden", "Sweden", "Sweden", "Sweden", "Sweden", "Sweden", "Sweden", "Sweden", "Sweden", "Sweden", "Sweden" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x3", "y": [ 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 3.0, 1.0, 0.0, 1.0, 0.0 ], "yaxis": "y3", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Switzerland", "Switzerland", "Switzerland", "Switzerland", "Switzerland", "Switzerland", "Switzerland", "Switzerland", "Switzerland", "Switzerland", "Switzerland" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x4", "y": [ 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "yaxis": "y4", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "United Kingdom", "United Kingdom", "United Kingdom", "United Kingdom", "United Kingdom", "United Kingdom", "United Kingdom", "United Kingdom", "United Kingdom", "United Kingdom", "United Kingdom" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x5", "y": [ 2.0, 6.0, 6.0, 4.0, 19.0, 31.0, 45.0, 36.0, 18.0, 8.0, 4.0 ], "yaxis": "y5", "type": "scatter" } ], "layout": { "annotations": [ { "showarrow": false, "text": "Portugal", "x": 0.09200000000000001, "xanchor": "center", "xref": "paper", "y": 0.2866666666666666, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Spain", "x": 0.29600000000000004, "xanchor": "center", "xref": "paper", "y": 0.2866666666666666, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Sweden", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 0.2866666666666666, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Switzerland", "x": 0.7040000000000002, "xanchor": "center", "xref": "paper", "y": 0.2866666666666666, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "United Kingdom", "x": 0.908, "xanchor": "center", "xref": "paper", "y": 0.2866666666666666, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Finland", "x": 0.09200000000000001, "xanchor": "center", "xref": "paper", "y": 0.6433333333333333, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "France", "x": 0.29600000000000004, "xanchor": "center", "xref": "paper", "y": 0.6433333333333333, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Germany", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 0.6433333333333333, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Luxembourg", "x": 0.7040000000000002, "xanchor": "center", "xref": "paper", "y": 0.6433333333333333, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Netherlands", "x": 0.908, "xanchor": "center", "xref": "paper", "y": 0.6433333333333333, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Austria", "x": 0.09200000000000001, "xanchor": "center", "xref": "paper", "y": 0.9999999999999999, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Belgium", "x": 0.29600000000000004, "xanchor": "center", "xref": "paper", "y": 0.9999999999999999, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Czech Republic", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 0.9999999999999999, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Denmark", "x": 0.7040000000000002, "xanchor": "center", "xref": "paper", "y": 0.9999999999999999, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "European Patent Office", "x": 0.908, "xanchor": "center", "xref": "paper", "y": 0.9999999999999999, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } } ], "font": { "family": "Montserrat", "size": 22 }, "legend": { "tracegroupgap": 0 }, "template": { "data": { "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmapgl" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Yearly output of co-patents by patent authority" }, "xaxis": { "anchor": "y", "domain": [ 0.0, 0.18400000000000002 ], "linecolor": "black", "linewidth": 1, "mirror": true, "showgrid": true, "showline": true, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis": { "anchor": "x", "domain": [ 0.0, 0.2866666666666666 ], "linecolor": "black", "linewidth": 1, "mirror": true, "showgrid": true, "showline": true, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 } }, "xaxis2": { "anchor": "y2", "domain": [ 0.20400000000000001, 0.388 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis2": { "anchor": "x2", "domain": [ 0.0, 0.2866666666666666 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 } }, "xaxis3": { "anchor": "y3", "domain": [ 0.40800000000000003, 0.5920000000000001 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis3": { "anchor": "x3", "domain": [ 0.0, 0.2866666666666666 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 } }, "xaxis4": { "anchor": "y4", "domain": [ 0.6120000000000001, 0.7960000000000002 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis4": { "anchor": "x4", "domain": [ 0.0, 0.2866666666666666 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 } }, "xaxis5": { "anchor": "y5", "domain": [ 0.8160000000000001, 1.0 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis5": { "anchor": "x5", "domain": [ 0.0, 0.2866666666666666 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 } }, "xaxis6": { "anchor": "y6", "domain": [ 0.0, 0.18400000000000002 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis6": { "anchor": "x6", "domain": [ 0.35666666666666663, 0.6433333333333333 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 } }, "xaxis7": { "anchor": "y7", "domain": [ 0.20400000000000001, 0.388 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis7": { "anchor": "x7", "domain": [ 0.35666666666666663, 0.6433333333333333 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 } }, "xaxis8": { "anchor": "y8", "domain": [ 0.40800000000000003, 0.5920000000000001 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis8": { "anchor": "x8", "domain": [ 0.35666666666666663, 0.6433333333333333 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 } }, "xaxis9": { "anchor": "y9", "domain": [ 0.6120000000000001, 0.7960000000000002 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis9": { "anchor": "x9", "domain": [ 0.35666666666666663, 0.6433333333333333 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 } }, "xaxis10": { "anchor": "y10", "domain": [ 0.8160000000000001, 1.0 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis10": { "anchor": "x10", "domain": [ 0.35666666666666663, 0.6433333333333333 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 } }, "xaxis11": { "anchor": "y11", "domain": [ 0.0, 0.18400000000000002 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis11": { "anchor": "x11", "domain": [ 0.7133333333333333, 0.9999999999999999 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 } }, "xaxis12": { "anchor": "y12", "domain": [ 0.20400000000000001, 0.388 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis12": { "anchor": "x12", "domain": [ 0.7133333333333333, 0.9999999999999999 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 } }, "xaxis13": { "anchor": "y13", "domain": [ 0.40800000000000003, 0.5920000000000001 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis13": { "anchor": "x13", "domain": [ 0.7133333333333333, 0.9999999999999999 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 } }, "xaxis14": { "anchor": "y14", "domain": [ 0.6120000000000001, 0.7960000000000002 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis14": { "anchor": "x14", "domain": [ 0.7133333333333333, 0.9999999999999999 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 } }, "xaxis15": { "anchor": "y15", "domain": [ 0.8160000000000001, 1.0 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis15": { "anchor": "x15", "domain": [ 0.7133333333333333, 0.9999999999999999 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 } } }, "config": { "plotlyServerURL": "https://plotly.com" } }, "text/html": "
" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data = (appln_f.groupby(['filing_year',\"appln_auth\"])[record_col]\n", " .nunique(dropna=False).unstack()\n", " .fillna(0)\n", " .stack()\n", " .reset_index()\n", " .rename(columns={0:record_col}))\n", "\n", "data[\"appln_auth\"].str.replace(\"MO\",\"CN\")\n", "\n", "data = data.merge(data[data[record_col]>0].sort_values(by=[\"filing_year\"], ascending=True).drop_duplicates(subset=\"appln_auth\"),\n", " on=[\"appln_auth\"], suffixes=[None,\"_relative_growth\"])\n", "data[record_col+\"_relative_growth\"] = (data[record_col]-data[record_col+\"_relative_growth\"])/data[record_col+\"_relative_growth\"]\n", "data = data.sort_values(by =[\"appln_auth\",\"filing_year\"], ascending=[True,True])\n", "data[record_col+\"_cumsum\"] = (data.groupby('appln_auth',as_index=False)[record_col].cumsum())\n", "data[\"Country\"] = cc.pandas_convert(series=data[\"appln_auth\"], to='name_short')\n", "data[\"Country\"] = data[\"Country\"].str.replace(\"not found\",\"European Patent Office\")\n", "\n", "\n", "fig = px.line(data.sort_values(ascending=True, by='filing_year'),\n", " y=record_col,\n", " x='filing_year'\n", " ,facet_col=\"Country\",facet_col_wrap=5,category_orders={\"Country\": sorted(data[\"Country\"].unique())},\n", " markers=True,\n", " labels={\n", " record_col: 'Number of co-patents',\n", " },\n", " title=\"Yearly output of co-patents by patent authority\",hover_name= \"Country\")\n", "fig.update_traces(hovertemplate='%{hovertext}
%{x}
Co-publications: %{y}')\n", "fig.update_yaxes(\n", " showgrid=True,showline=True, linewidth=1, linecolor='black', mirror=True,\n", " ticks=\"outside\")\n", "fig.update_xaxes(\n", " showgrid=True,showline=True, linewidth=1, linecolor='black', mirror=True,\n", " ticks=\"outside\")\n", "fig.update_layout({'template':\"plotly\"},font_family=\"Montserrat\")\n", "fig.update_yaxes(title='')\n", "fig.update_xaxes(title='')\n", "fig.for_each_annotation(lambda a: a.update(text=a.text.split(\"=\")[-1]))\n", "# fig.show(config= dict(displayModeBar = False, responsive = True))\n", "figsuper_ppt = go.Figure(fig)\n", "\n", "figsuper_ppt['layout'][\"font\"][\"size\"]=22\n", "# figsuper['layout'][\"xaxis\"][\"range\"] = [20,2022.5]\n", "for a in figsuper_ppt['layout'][\"annotations\"]:\n", " a[\"font\"][\"size\"] = 22\n", "\n", "s=16\n", "figsuper_ppt.update_yaxes(tickfont=dict(size=s))\n", "figsuper_ppt.update_xaxes(tickfont=dict(size=s),tickangle=45)\n", "figsuper_ppt.show(height=800,width=1600,scale = 4)\n", "figsuper_ppt.write_image(f\"{fromdir}/plots/yearly_outputs.png\",height=800,width=1600,scale = 4)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 254, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 255, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Austria", "Austria", "Austria", "Austria", "Austria", "Austria", "Austria", "Austria", "Austria", "Austria", "Austria" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x11", "y": [ -1.0, 0.0, -1.0, -1.0, 0.0, -1.0, -1.0, -1.0, 1.0, 1.0, -1.0 ], "yaxis": "y11", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Belgium", "Belgium", "Belgium", "Belgium", "Belgium", "Belgium", "Belgium", "Belgium", "Belgium", "Belgium", "Belgium" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x12", "y": [ -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 0.0, 0.0 ], "yaxis": "y12", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Czech Republic", "Czech Republic", "Czech Republic", "Czech Republic", "Czech Republic", "Czech Republic", "Czech Republic", "Czech Republic", "Czech Republic", "Czech Republic", "Czech Republic" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x13", "y": [ -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 0.0, 1.0, 0.0, -1.0 ], "yaxis": "y13", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Denmark", "Denmark", "Denmark", "Denmark", "Denmark", "Denmark", "Denmark", "Denmark", "Denmark", "Denmark", "Denmark" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x14", "y": [ -1.0, -1.0, -1.0, 0.0, -1.0, -1.0, -1.0, -1.0, 1.0, -1.0, -1.0 ], "yaxis": "y14", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "European Patent Office", "European Patent Office", "European Patent Office", "European Patent Office", "European Patent Office", "European Patent Office", "European Patent Office", "European Patent Office", "European Patent Office", "European Patent Office", "European Patent Office" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x15", "y": [ 0.0, -0.23809523809523808, -0.23809523809523808, 0.0, 0.3333333333333333, 0.7142857142857143, 1.7142857142857142, 3.9523809523809526, 4.428571428571429, 3.2857142857142856, 0.6666666666666666 ], "yaxis": "y15", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Finland", "Finland", "Finland", "Finland", "Finland", "Finland", "Finland", "Finland", "Finland", "Finland", "Finland" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x6", "y": [ 0.0, -0.3333333333333333, -0.6666666666666666, -0.6666666666666666, 0.0, -0.6666666666666666, -1.0, -1.0, -1.0, -1.0, -1.0 ], "yaxis": "y6", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "France", "France", "France", "France", "France", "France", "France", "France", "France", "France", "France" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x7", "y": [ 0.0, -0.1, 0.4, -0.5, 0.3, 0.2, 0.3, -0.4, 0.1, 0.4, -0.4 ], "yaxis": "y7", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Germany", "Germany", "Germany", "Germany", "Germany", "Germany", "Germany", "Germany", "Germany", "Germany", "Germany" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x8", "y": [ 0.0, 0.0, 1.2142857142857142, 1.0714285714285714, 0.7142857142857143, 0.2857142857142857, 1.1428571428571428, 1.0714285714285714, 0.35714285714285715, 0.35714285714285715, 0.07142857142857142 ], "yaxis": "y8", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Luxembourg", "Luxembourg", "Luxembourg", "Luxembourg", "Luxembourg", "Luxembourg", "Luxembourg", "Luxembourg", "Luxembourg", "Luxembourg", "Luxembourg" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x9", "y": [ -1.0, -1.0, -1.0, 0.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0 ], "yaxis": "y9", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Netherlands", "Netherlands", "Netherlands", "Netherlands", "Netherlands", "Netherlands", "Netherlands", "Netherlands", "Netherlands", "Netherlands", "Netherlands" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x10", "y": [ -1.0, -1.0, 0.0, 0.0, -1.0, 0.0, 6.0, 6.0, 0.0, 7.0, 0.0 ], "yaxis": "y10", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Portugal", "Portugal", "Portugal", "Portugal", "Portugal", "Portugal", "Portugal", "Portugal", "Portugal", "Portugal", "Portugal" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x", "y": [ -1.0, -1.0, -1.0, -1.0, -1.0, 0.0, -1.0, -1.0, -1.0, -1.0, -1.0 ], "yaxis": "y", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Spain", "Spain", "Spain", "Spain", "Spain", "Spain", "Spain", "Spain", "Spain", "Spain", "Spain" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x2", "y": [ 0.0, -0.75, -1.0, -0.75, -0.25, -0.5, -0.25, -1.0, -0.75, -1.0, -1.0 ], "yaxis": "y2", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Sweden", "Sweden", "Sweden", "Sweden", "Sweden", "Sweden", "Sweden", "Sweden", "Sweden", "Sweden", "Sweden" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x3", "y": [ -1.0, -1.0, -1.0, -1.0, 0.0, 0.0, 2.0, 0.0, -1.0, 0.0, -1.0 ], "yaxis": "y3", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "Switzerland", "Switzerland", "Switzerland", "Switzerland", "Switzerland", "Switzerland", "Switzerland", "Switzerland", "Switzerland", "Switzerland", "Switzerland" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x4", "y": [ -1.0, -1.0, -1.0, -1.0, 0.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0 ], "yaxis": "y4", "type": "scatter" }, { "hovertemplate": "%{hovertext}
%{x}
Co-publications: %{y}", "hovertext": [ "United Kingdom", "United Kingdom", "United Kingdom", "United Kingdom", "United Kingdom", "United Kingdom", "United Kingdom", "United Kingdom", "United Kingdom", "United Kingdom", "United Kingdom" ], "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x5", "y": [ 0.0, 2.0, 2.0, 1.0, 8.5, 14.5, 21.5, 17.0, 8.0, 3.0, 1.0 ], "yaxis": "y5", "type": "scatter" } ], "layout": { "annotations": [ { "showarrow": false, "text": "Portugal", "x": 0.09200000000000001, "xanchor": "center", "xref": "paper", "y": 0.2866666666666666, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Spain", "x": 0.29600000000000004, "xanchor": "center", "xref": "paper", "y": 0.2866666666666666, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Sweden", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 0.2866666666666666, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Switzerland", "x": 0.7040000000000002, "xanchor": "center", "xref": "paper", "y": 0.2866666666666666, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "United Kingdom", "x": 0.908, "xanchor": "center", "xref": "paper", "y": 0.2866666666666666, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Finland", "x": 0.09200000000000001, "xanchor": "center", "xref": "paper", "y": 0.6433333333333333, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "France", "x": 0.29600000000000004, "xanchor": "center", "xref": "paper", "y": 0.6433333333333333, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Germany", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 0.6433333333333333, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Luxembourg", "x": 0.7040000000000002, "xanchor": "center", "xref": "paper", "y": 0.6433333333333333, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Netherlands", "x": 0.908, "xanchor": "center", "xref": "paper", "y": 0.6433333333333333, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Austria", "x": 0.09200000000000001, "xanchor": "center", "xref": "paper", "y": 0.9999999999999999, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Belgium", "x": 0.29600000000000004, "xanchor": "center", "xref": "paper", "y": 0.9999999999999999, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Czech Republic", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 0.9999999999999999, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "Denmark", "x": 0.7040000000000002, "xanchor": "center", "xref": "paper", "y": 0.9999999999999999, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } }, { "showarrow": false, "text": "European Patent Office", "x": 0.908, "xanchor": "center", "xref": "paper", "y": 0.9999999999999999, "yanchor": "bottom", "yref": "paper", "font": { "size": 22 } } ], "font": { "family": "Montserrat", "size": 22 }, "legend": { "tracegroupgap": 0 }, "template": { "data": { "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmapgl" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Yearly rel. output of co-patents by patent authority" }, "xaxis": { "anchor": "y", "domain": [ 0.0, 0.18400000000000002 ], "linecolor": "black", "linewidth": 1, "mirror": true, "showgrid": true, "showline": true, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis": { "anchor": "x", "domain": [ 0.0, 0.2866666666666666 ], "linecolor": "black", "linewidth": 1, "mirror": true, "showgrid": true, "showline": true, "ticks": "outside", "title": { "text": "" }, "zeroline": true, "zerolinewidth": 2, "zerolinecolor": "grey", "tickformat": ".0%", "tickfont": { "size": 16 } }, "xaxis2": { "anchor": "y2", "domain": [ 0.20400000000000001, 0.388 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis2": { "anchor": "x2", "domain": [ 0.0, 0.2866666666666666 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "zeroline": true, "zerolinewidth": 2, "zerolinecolor": "grey", "tickformat": ".0%", "tickfont": { "size": 16 } }, "xaxis3": { "anchor": "y3", "domain": [ 0.40800000000000003, 0.5920000000000001 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis3": { "anchor": "x3", "domain": [ 0.0, 0.2866666666666666 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "zeroline": true, "zerolinewidth": 2, "zerolinecolor": "grey", "tickformat": ".0%", "tickfont": { "size": 16 } }, "xaxis4": { "anchor": "y4", "domain": [ 0.6120000000000001, 0.7960000000000002 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis4": { "anchor": "x4", "domain": [ 0.0, 0.2866666666666666 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "zeroline": true, "zerolinewidth": 2, "zerolinecolor": "grey", "tickformat": ".0%", "tickfont": { "size": 16 } }, "xaxis5": { "anchor": "y5", "domain": [ 0.8160000000000001, 1.0 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis5": { "anchor": "x5", "domain": [ 0.0, 0.2866666666666666 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "zeroline": true, "zerolinewidth": 2, "zerolinecolor": "grey", "tickformat": ".0%", "tickfont": { "size": 16 } }, "xaxis6": { "anchor": "y6", "domain": [ 0.0, 0.18400000000000002 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis6": { "anchor": "x6", "domain": [ 0.35666666666666663, 0.6433333333333333 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "ticks": "outside", "title": { "text": "" }, "zeroline": true, "zerolinewidth": 2, "zerolinecolor": "grey", "tickformat": ".0%", "tickfont": { "size": 16 } }, "xaxis7": { "anchor": "y7", "domain": [ 0.20400000000000001, 0.388 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis7": { "anchor": "x7", "domain": [ 0.35666666666666663, 0.6433333333333333 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "zeroline": true, "zerolinewidth": 2, "zerolinecolor": "grey", "tickformat": ".0%", "tickfont": { "size": 16 } }, "xaxis8": { "anchor": "y8", "domain": [ 0.40800000000000003, 0.5920000000000001 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis8": { "anchor": "x8", "domain": [ 0.35666666666666663, 0.6433333333333333 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "zeroline": true, "zerolinewidth": 2, "zerolinecolor": "grey", "tickformat": ".0%", "tickfont": { "size": 16 } }, "xaxis9": { "anchor": "y9", "domain": [ 0.6120000000000001, 0.7960000000000002 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis9": { "anchor": "x9", "domain": [ 0.35666666666666663, 0.6433333333333333 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "zeroline": true, "zerolinewidth": 2, "zerolinecolor": "grey", "tickformat": ".0%", "tickfont": { "size": 16 } }, "xaxis10": { "anchor": "y10", "domain": [ 0.8160000000000001, 1.0 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis10": { "anchor": "x10", "domain": [ 0.35666666666666663, 0.6433333333333333 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "zeroline": true, "zerolinewidth": 2, "zerolinecolor": "grey", "tickformat": ".0%", "tickfont": { "size": 16 } }, "xaxis11": { "anchor": "y11", "domain": [ 0.0, 0.18400000000000002 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis11": { "anchor": "x11", "domain": [ 0.7133333333333333, 0.9999999999999999 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "ticks": "outside", "title": { "text": "" }, "zeroline": true, "zerolinewidth": 2, "zerolinecolor": "grey", "tickformat": ".0%", "tickfont": { "size": 16 } }, "xaxis12": { "anchor": "y12", "domain": [ 0.20400000000000001, 0.388 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis12": { "anchor": "x12", "domain": [ 0.7133333333333333, 0.9999999999999999 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "zeroline": true, "zerolinewidth": 2, "zerolinecolor": "grey", "tickformat": ".0%", "tickfont": { "size": 16 } }, "xaxis13": { "anchor": "y13", "domain": [ 0.40800000000000003, 0.5920000000000001 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis13": { "anchor": "x13", "domain": [ 0.7133333333333333, 0.9999999999999999 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "zeroline": true, "zerolinewidth": 2, "zerolinecolor": "grey", "tickformat": ".0%", "tickfont": { "size": 16 } }, "xaxis14": { "anchor": "y14", "domain": [ 0.6120000000000001, 0.7960000000000002 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis14": { "anchor": "x14", "domain": [ 0.7133333333333333, 0.9999999999999999 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "zeroline": true, "zerolinewidth": 2, "zerolinecolor": "grey", "tickformat": ".0%", "tickfont": { "size": 16 } }, "xaxis15": { "anchor": "y15", "domain": [ 0.8160000000000001, 1.0 ], "linecolor": "black", "linewidth": 1, "matches": "x", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "tickfont": { "size": 16 }, "tickangle": 45 }, "yaxis15": { "anchor": "x15", "domain": [ 0.7133333333333333, 0.9999999999999999 ], "linecolor": "black", "linewidth": 1, "matches": "y", "mirror": true, "showgrid": true, "showline": true, "showticklabels": false, "ticks": "outside", "title": { "text": "" }, "zeroline": true, "zerolinewidth": 2, "zerolinecolor": "grey", "tickformat": ".0%", "tickfont": { "size": 16 } } }, "config": { "plotlyServerURL": "https://plotly.com" } }, "text/html": "
" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = px.line(data.sort_values(ascending=True, by='filing_year'),\n", " y=record_col+\"_relative_growth\",\n", " x='filing_year'\n", " ,facet_col=\"Country\",facet_col_wrap=5,category_orders={\"Country\": sorted(data[\"Country\"].unique())},\n", " markers=True,\n", " labels={\n", " record_col+\"_relative_growth\": 'Relative growth of co-patents (%)',\n", " },\n", " title=\"Yearly rel. output of co-patents by patent authority\",hover_name= \"Country\")\n", "fig.update_traces(hovertemplate='%{hovertext}
%{x}
Co-publications: %{y}')\n", "fig.update_yaxes(\n", " showgrid=True,showline=True, linewidth=1, linecolor='black', mirror=True,\n", " ticks=\"outside\")\n", "fig.update_xaxes(\n", " showgrid=True,showline=True, linewidth=1, linecolor='black', mirror=True,\n", " ticks=\"outside\")\n", "fig.update_layout({'template':\"plotly\"},font_family=\"Montserrat\")\n", "fig.update_yaxes(title='')\n", "fig.update_xaxes(title='')\n", "fig.for_each_annotation(lambda a: a.update(text=a.text.split(\"=\")[-1]))\n", "# fig.show(config= dict(displayModeBar = False, responsive = True))\n", "\n", "figsuper_ppt = go.Figure(fig)\n", "\n", "figsuper_ppt['layout'][\"font\"][\"size\"]=22\n", "for a in figsuper_ppt['layout'][\"annotations\"]:\n", " a[\"font\"][\"size\"] = 22\n", "\n", "s=16\n", "figsuper_ppt.update_yaxes(title='',zeroline=True, zerolinewidth=2, zerolinecolor='grey',tickformat=\".0%\")\n", "figsuper_ppt.update_yaxes(tickfont=dict(size=s))\n", "figsuper_ppt.update_xaxes(tickfont=dict(size=s),tickangle=45)\n", "figsuper_ppt.show(height=800,width=1600,scale = 4)\n", "figsuper_ppt.write_image(f\"{fromdir}/plots/yearly_rel_outputs.png\",height=800,width=1600,scale = 4)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 255, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 256, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "EP not found in ISO2\n", "European Patent Office not found in regex\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "alignmentgroup": "True", "hovertemplate": "Country type=China
Number of co-patents=%{x}
Name=%{y}", "legendgroup": "China", "marker": { "color": "#EF553B", "pattern": { "shape": "" } }, "name": "China", "offsetgroup": "China", "orientation": "h", "showlegend": true, "textposition": "auto", "texttemplate": "%{x}", "x": [ 252, 89, 83, 78, 13, 10, 9, 8, 8, 7, 7, 6, 5, 4, 3 ], "xaxis": "x", "y": [ "NINGBO GEELY AUTOMOBILE R
D CO LTD (CHN)", "TCL COMM LTD (CHN)", "ZHEJIANG GEELY HOLDINGGROUP CO LTD (CHN)", "HUAWEI TECH CO LTD (CHN)", "CRRC QINGDAO SIFANG CO LTD (CHN)", "BEIJING XIAOMI MOBILE SOFTWARE CO LTD (CHN)", "ZF DRIVETECH SUZHOU CO LTD (CHN)", "ZHANGJIAGANG KANGDE XIN OPTRONICS MATERIAL CO LTD (CHN)", "VENUS MEDTECH HANGZHOU INC (CHN)", "SHENZHEN GOODIX TECH CO LTD (CHN)", "CNBM BENGBU DESIGN
RESEARCH INSTITUTE FOR GLASS IND CO LTD (CHN)", "NOKIA SHANGHAI BELL CO LTD (CHN)", "KEIPER SEATING MECHANISMS CO LTD (CHN)", "GOODIX TECH HK CO LTD (CHN)", "STRIX GUANGZHOU LTD (CHN)" ], "yaxis": "y", "type": "bar" } ], "layout": { "template": { "data": { "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmapgl" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "xaxis": { "anchor": "y", "domain": [ 0.0, 1.0 ], "title": { "text": "Number of co-patents" }, "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis": { "anchor": "x", "domain": [ 0.0, 1.0 ], "title": { "text": "Name" }, "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "tickfont": { "size": 12 } }, "legend": { "title": { "text": "Country type" }, "tracegroupgap": 0 }, "margin": { "t": 60 }, "barmode": "relative", "font": { "family": "Montserrat", "size": 12 }, "yaxis2": { "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis3": { "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "uniformtext": { "minsize": 10 } }, "config": { "displayModeBar": false, "responsive": true, "plotlyServerURL": "https://plotly.com" } }, "text/html": "
" }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "alignmentgroup": "True", "hovertemplate": "Country type=EU
Number of co-patents=%{x}
Name=%{y}", "legendgroup": "EU", "marker": { "color": "#636EFA", "pattern": { "shape": "" } }, "name": "EU", "offsetgroup": "EU", "orientation": "h", "showlegend": true, "textposition": "auto", "texttemplate": "%{x}", "x": [ 39, 24, 23, 14, 13, 13, 12, 11, 9, 9, 9, 8, 6 ], "xaxis": "x", "y": [ "ROBERT BOSCH GMBH (DEU)", "ARKEMA FR (FRA)", "CNRS (FRA)", "ZF FRIEDRICHSHAFEN AG (DEU)", "CG RAIL CHINESISCH DEUTSCHES FORSCHUNGS
ENTWICKLUNGSZENTRUM FUR BAHN
VERKEHRSTECHNIK DRESDEN GMBH (DEU)", "SIEMENS AG (DEU)", "BAYERISCHE MOTOREN WERKE AG (DEU)", "L OREAL (FRA)", "SEW EURODRIVE GMBH
CO KG (DEU)", "SEB SA (FRA)", "SCHAEFFLER TECH AG
CO KG (DEU)", "BOSTIK SA (FRA)", "BSH HAUSGERATE GMBH (DEU)" ], "yaxis": "y", "type": "bar" }, { "alignmentgroup": "True", "hovertemplate": "Country type=Non-EU associate
Number of co-patents=%{x}
Name=%{y}", "legendgroup": "Non-EU associate", "marker": { "color": "#00CC96", "pattern": { "shape": "" } }, "name": "Non-EU associate", "offsetgroup": "Non-EU associate", "orientation": "h", "showlegend": true, "textposition": "auto", "texttemplate": "%{x}", "x": [ 7, 6 ], "xaxis": "x", "y": [ "RECKITT BENCKISER BRANDS LTD (GBR)", "ALSTOM TECH LTD (CHE)" ], "yaxis": "y", "type": "bar" } ], "layout": { "template": { "data": { "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmapgl" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "xaxis": { "anchor": "y", "domain": [ 0.0, 1.0 ], "title": { "text": "Number of co-patents" }, "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis": { "anchor": "x", "domain": [ 0.0, 1.0 ], "title": { "text": "Name" }, "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "tickfont": { "size": 12 } }, "legend": { "title": { "text": "Country type" }, "tracegroupgap": 0 }, "margin": { "t": 60 }, "barmode": "relative", "font": { "family": "Montserrat", "size": 12 }, "yaxis2": { "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis3": { "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "uniformtext": { "minsize": 10 } }, "config": { "displayModeBar": false, "responsive": true, "plotlyServerURL": "https://plotly.com" } }, "text/html": "
" }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "alignmentgroup": "True", "hovertemplate": "Sector=COMPANY
Number of co-patents=%{x}
Name=%{y}", "legendgroup": "COMPANY", "marker": { "color": "#FFA15A", "pattern": { "shape": "" } }, "name": "COMPANY", "offsetgroup": "COMPANY", "orientation": "h", "showlegend": true, "textposition": "auto", "texttemplate": "%{x}", "x": [ 252, 89, 83, 78, 13, 10, 9, 8, 8, 7, 7, 6, 4 ], "xaxis": "x", "y": [ "NINGBO GEELY AUTOMOBILE R
D CO LTD (CHN)", "TCL COMM LTD (CHN)", "ZHEJIANG GEELY HOLDINGGROUP CO LTD (CHN)", "HUAWEI TECH CO LTD (CHN)", "CRRC QINGDAO SIFANG CO LTD (CHN)", "BEIJING XIAOMI MOBILE SOFTWARE CO LTD (CHN)", "ZF DRIVETECH SUZHOU CO LTD (CHN)", "ZHANGJIAGANG KANGDE XIN OPTRONICS MATERIAL CO LTD (CHN)", "VENUS MEDTECH HANGZHOU INC (CHN)", "SHENZHEN GOODIX TECH CO LTD (CHN)", "CNBM BENGBU DESIGN
RESEARCH INSTITUTE FOR GLASS IND CO LTD (CHN)", "NOKIA SHANGHAI BELL CO LTD (CHN)", "GOODIX TECH HK CO LTD (CHN)" ], "yaxis": "y", "type": "bar" }, { "alignmentgroup": "True", "hovertemplate": "Sector=UNKNOWN
Number of co-patents=%{x}
Name=%{y}", "legendgroup": "UNKNOWN", "marker": { "color": "#19d3f3", "pattern": { "shape": "" } }, "name": "UNKNOWN", "offsetgroup": "UNKNOWN", "orientation": "h", "showlegend": true, "textposition": "auto", "texttemplate": "%{x}", "x": [ 5, 3 ], "xaxis": "x", "y": [ "KEIPER SEATING MECHANISMS CO LTD (CHN)", "STRIX GUANGZHOU LTD (CHN)" ], "yaxis": "y", "type": "bar" } ], "layout": { "template": { "data": { "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmapgl" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "xaxis": { "anchor": "y", "domain": [ 0.0, 1.0 ], "title": { "text": "Number of co-patents" }, "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis": { "anchor": "x", "domain": [ 0.0, 1.0 ], "title": { "text": "Name" }, "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "tickfont": { "size": 12 } }, "legend": { "title": { "text": "Sector" }, "tracegroupgap": 0 }, "margin": { "t": 60 }, "barmode": "relative", "font": { "family": "Montserrat", "size": 12 }, "yaxis2": { "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis3": { "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "uniformtext": { "minsize": 10 } }, "config": { "displayModeBar": false, "responsive": true, "plotlyServerURL": "https://plotly.com" } }, "text/html": "
" }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "alignmentgroup": "True", "hovertemplate": "Sector=COMPANY
Number of co-patents=%{x}
Name=%{y}", "legendgroup": "COMPANY", "marker": { "color": "#FFA15A", "pattern": { "shape": "" } }, "name": "COMPANY", "offsetgroup": "COMPANY", "orientation": "h", "showlegend": true, "textposition": "auto", "texttemplate": "%{x}", "x": [ 39, 24, 14, 13, 13, 12, 11, 9, 9, 9, 8, 6, 6 ], "xaxis": "x", "y": [ "ROBERT BOSCH GMBH (DEU)", "ARKEMA FR (FRA)", "ZF FRIEDRICHSHAFEN AG (DEU)", "CG RAIL CHINESISCH DEUTSCHES FORSCHUNGS
ENTWICKLUNGSZENTRUM FUR BAHN
VERKEHRSTECHNIK DRESDEN GMBH (DEU)", "SIEMENS AG (DEU)", "BAYERISCHE MOTOREN WERKE AG (DEU)", "L OREAL (FRA)", "SEW EURODRIVE GMBH
CO KG (DEU)", "SEB SA (FRA)", "SCHAEFFLER TECH AG
CO KG (DEU)", "BOSTIK SA (FRA)", "BSH HAUSGERATE GMBH (DEU)", "ALSTOM TECH LTD (CHE)" ], "yaxis": "y", "type": "bar" }, { "alignmentgroup": "True", "hovertemplate": "Sector=GOV NON-PROFIT
Number of co-patents=%{x}
Name=%{y}", "legendgroup": "GOV NON-PROFIT", "marker": { "color": "#19d3f3", "pattern": { "shape": "" } }, "name": "GOV NON-PROFIT", "offsetgroup": "GOV NON-PROFIT", "orientation": "h", "showlegend": true, "textposition": "auto", "texttemplate": "%{x}", "x": [ 23 ], "xaxis": "x", "y": [ "CNRS (FRA)" ], "yaxis": "y", "type": "bar" }, { "alignmentgroup": "True", "hovertemplate": "Sector=UNKNOWN
Number of co-patents=%{x}
Name=%{y}", "legendgroup": "UNKNOWN", "marker": { "color": "#FF6692", "pattern": { "shape": "" } }, "name": "UNKNOWN", "offsetgroup": "UNKNOWN", "orientation": "h", "showlegend": true, "textposition": "auto", "texttemplate": "%{x}", "x": [ 7 ], "xaxis": "x", "y": [ "RECKITT BENCKISER BRANDS LTD (GBR)" ], "yaxis": "y", "type": "bar" } ], "layout": { "template": { "data": { "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmapgl" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "xaxis": { "anchor": "y", "domain": [ 0.0, 1.0 ], "title": { "text": "Number of co-patents" }, "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis": { "anchor": "x", "domain": [ 0.0, 1.0 ], "title": { "text": "Name" }, "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "tickfont": { "size": 12 } }, "legend": { "title": { "text": "Sector" }, "tracegroupgap": 0 }, "margin": { "t": 60 }, "barmode": "relative", "font": { "family": "Montserrat", "size": 12 }, "yaxis2": { "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis3": { "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "uniformtext": { "minsize": 10 } }, "config": { "displayModeBar": false, "responsive": true, "plotlyServerURL": "https://plotly.com" } }, "text/html": "
" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# appln_pers_f = pd.read_csv(f\"{outdir}/first-filings-with-persons-raw.csv\", header=None,\n", "# names=[\"appln_id\",\"appln_auth\",\"person_id\",\"invt_seq_nr\",\"applt_seq_nr\",'person_name',\"person_ctry_code\"])\n", "\n", "# appln_pers_haninfo = pd.read_csv(f\"{outdir}/tls_206_scope.csv\", usecols=[\"person_id\",\"han_id\",\"han_name\",\"psn_sector\"])\n", "#\n", "# appln_pers_f = appln_pers_f.merge(appln_pers_haninfo, on=\"person_id\")\n", "#\n", "# tls_801 = pd.read_csv(r\"./EU_CH_scope/table_tls801.csv\", low_memory=False)\n", "# # tls_801.head()\n", "# scope_df = tls_801[((tls_801.eu_member==\"Y\")|\n", "# (tls_801.ctry_code == 'CN')|\n", "# (tls_801.ctry_code == 'NO')|\n", "# (tls_801.ctry_code == 'CH')|\n", "# (tls_801.ctry_code == 'UK'))]\n", "# scope_countries = scope_df[\"ctry_code\"].unique()\n", "#\n", "# appln_pers_f = appln_pers_f[appln_pers_f[\"person_ctry_code\"].isin(scope_countries)]\n", "\n", "for c in [\"person_ctry_code\",\"appln_auth\"]:\n", " appln_pers_f[c+\"_fullname\"] = cc.pandas_convert(series=appln_pers_f[c], to='name_short')\n", "\n", "appln_pers_f[\"appln_auth_fullname\"] = appln_pers_f[\"appln_auth_fullname\"].str.replace(\"not found\",\"European Patent Office\")\n", "appln_pers_f[\"person_ctry_ISO3\"] = cc.pandas_convert(series=appln_pers_f[\"person_ctry_code_fullname\"], to='ISO3')\n", "appln_pers_f[\"person_ctry_type\"] = appln_pers_f[\"person_ctry_ISO3\"].apply(lambda x: \"China\" if x == \"CHN\" else \"Non-EU associate\" if x in [\"GBR\",\"CHE\",\"NOR\"] else \"EU\")\n", "\n", "appln_pers_f[\"auth_ISO3\"] = cc.pandas_convert(series=appln_pers_f[\"appln_auth_fullname\"], to='ISO3')\n", "appln_pers_f[\"auth_ctry_type\"] = appln_pers_f[\"auth_ISO3\"].apply(lambda x: \"China\" if x == \"CHN\" else \"Non-EU associate\" if x in [\"GBR\",\"CHE\",\"NOR\"] else \"EU\" if x!='not found' else \"EPO\")\n", "\n", "# top 25\n", "# - inventor\n", "# - applicant\n", "# in china, EU, EUextended\n", "color_discrete_map= {'China': '#EF553B',\n", " 'EU': '#636EFA',\n", " 'Non-EU associate': '#00CC96',\n", " 'EPO':'#9F2B68'}\n", "\n", "labeld_dict = dict({\n", " record_col: 'Number of co-patents',\n", " \"person_ctry_type\": \"Country type\",\n", " \"psn_sector_primary\":\"Sector\",\n", " \"han_label\": \"Name\",\n", " \"Country_Type\":\"Country type\",\n", " \"Eurovoc_Class\":\"Region\"\n", " })\n", "for trait in [\"person_ctry_type\",\"psn_sector_primary\"]:\n", " for ctry in [\"China\",'EU']:\n", " ctry_subset = appln_pers_f[appln_pers_f[\"person_ctry_type\"].str.contains(ctry)]\n", " # for role in [\"invt\",\"applt\"]:\n", " if True:\n", " role = \"applt\"\n", " pers_sub = ctry_subset[ctry_subset[role+\"_seq_nr\"]!=0]\n", " data = (pers_sub\n", " .groupby([\"han_id\",'han_name'],as_index=False)\n", " .agg({'appln_id': 'nunique', 'person_ctry_ISO3': 'first',trait:\"first\"})\n", " .sort_values(by=\"appln_id\", ascending=False)\n", " .head(15))\n", " data[\"han_label\"] = (data[\"han_name\"]\n", " .str.upper()\n", " .str.strip(\".\")\n", " .str.replace(\"&\",\"
\")\n", " + \" (\"+data[\"person_ctry_ISO3\"]+\")\")\n", "\n", " fig = px.bar(data, x=record_col, y=\"han_label\", color=trait,\n", " color_discrete_map=color_discrete_map,text_auto=True,labels=labeld_dict)\n", " fig.update_layout(font_family=\"Montserrat\",\n", " yaxis={'categoryorder':'total ascending'})\n", "\n", " figsuper = fig\n", " figsuper.update_layout(yaxis={'categoryorder':'total ascending'}, barmode='relative',yaxis2={'categoryorder':'total ascending'},yaxis3={'categoryorder':'total ascending'})\n", " figsuper.update_yaxes(\n", " showgrid=True,showline=True, linewidth=1, linecolor='black', mirror=True,\n", " ticks=\"outside\")\n", " figsuper.update_xaxes(\n", " showgrid=True,showline=True, linewidth=1, linecolor='black', mirror=True,\n", " ticks=\"outside\")\n", " figsuper.update_layout({'template':\"plotly\",\"font_family\":\"Montserrat\"})\n", "\n", " figsuper['layout'][\"font\"][\"size\"]=12\n", " for a in figsuper['layout'][\"annotations\"]:\n", " a[\"font\"][\"size\"] = 14\n", " figsuper[\"layout\"][\"yaxis\"][\"tickfont\"][\"size\"] = 12\n", "\n", " figsuper.update_layout(uniformtext_minsize=10)\n", "\n", " figsuper.show(config= dict(displayModeBar = False, responsive = True),height=800,width=1600,scale = 4)\n", " figsuper.write_image(f\"{fromdir}/plots/top15_applt_{trait}_{ctry}.png\",height=900,width=1200,scale = 4)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 257, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\radvanyi\\.conda\\envs\\MOME_BIGDATA\\lib\\site-packages\\pandas\\core\\internals\\blocks.py:329: RuntimeWarning:\n", "\n", "divide by zero encountered in log10\n", "\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "coloraxis": "coloraxis", "name": "0", "texttemplate": "%{text}", "x": [ "Sweden", "Germany", "France", "United Kingdom", "Austria", "Netherlands", "Finland", "Spain", "Belgium", "Italy" ], "y": [ "NINGBO GEELY AUTOMOBILE R&D CO LTD", "TCL COMM LTD", "ZHEJIANG GEELY HOLDINGGROUP CO LTD", "HUAWEI TECH CO LTD", "ZF DRIVETECH SUZHOU CO LTD", "CRRC QINGDAO SIFANG CO LTD", "BEIJING XIAOMI MOBILE SOFTWARE CO LTD", "ZHANGJIAGANG KANGDE XIN OPTRONICS MATERIAL CO LTD", "VENUS MEDTECH HANGZHOU INC", "CNBM BENGBU DESIGN & RESEARCH INSTITUTE FOR GLASS IND CO LTD", "SHENZHEN GOODIX TECH CO LTD", "NOKIA SHANGHAI BELL CO LTD", "KEIPER SEATING MECHANISMS CO LTD", "GOODIX TECH HK CO LTD", "HANERGY HOLDINGGROUP LTD", "INKRON LTD", "MICRO TECH NANJING CO LTD", "FOCUSLIGHT TECH INC", "SUZHOU RAINBOW MATERIALS CO LTD", "SHANGHAI HENGXU MATERIALS CO LTD" ], "z": [ [ 3.399673721481038, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 ], [ 0.0, 0.0, 2.949390006644913, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 2.9190780923760737, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 1.9542425094393248, 2.681241237375587, 0.0, 2.204119982655925, 0.0, 0.0, 1.0, 0.0, 1.6989700043360187, 0.0 ], [ 0.0, 1.9542425094393248, 0.0, 0.0, 1.9542425094393248, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 2.113943352306837, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 0.0, 0.0, 0.0, 1.9030899869919435, 0.0, 1.0, 0.0, 0.0 ], [ 0.0, 1.9030899869919435, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 1.845098040014257, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 1.845098040014257, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 1.0, 1.6989700043360187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 1.6989700043360187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 1.0, 0.0, 1.6020599913279625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 1.0, 1.4771212547196624, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4771212547196624, 0.0, 0.0, 0.0 ], [ 0.0, 1.4771212547196624, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 1.4771212547196624, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0 ], [ 0.0, 1.4771212547196624, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ], "type": "heatmap", "xaxis": "x", "yaxis": "y", "hovertemplate": "Inventor (EU): %{x}
Applicant (CN): %{y}
color: %{z}", "text": [ [ 251, 0, 0, 1, 0, 0, 0, 0, 0, 1 ], [ 0, 0, 89, 0, 0, 0, 0, 0, 0, 0 ], [ 83, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 9, 48, 0, 16, 0, 0, 1, 0, 5, 0 ], [ 0, 9, 0, 0, 9, 0, 0, 0, 0, 0 ], [ 0, 13, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 10, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 8, 0, 1, 0, 0 ], [ 0, 8, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 7, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 7, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 1, 5, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 5, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 1, 0, 4, 0, 0, 0, 0, 0, 0 ], [ 1, 3, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 3, 0, 0, 0 ], [ 0, 3, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 3, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 1, 0, 1, 0, 0, 0, 1, 0, 0 ], [ 0, 3, 0, 0, 0, 0, 0, 0, 0, 0 ] ] } ], "layout": { "template": { "data": { "barpolar": [ { "marker": { "line": { "color": "white", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "white", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "#C8D4E3", "linecolor": "#C8D4E3", "minorgridcolor": "#C8D4E3", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "#C8D4E3", "linecolor": "#C8D4E3", "minorgridcolor": "#C8D4E3", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmapgl" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "white", "showlakes": true, "showland": true, "subunitcolor": "#C8D4E3" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "white", "polar": { "angularaxis": { "gridcolor": "#EBF0F8", "linecolor": "#EBF0F8", "ticks": "" }, "bgcolor": "white", "radialaxis": { "gridcolor": "#EBF0F8", "linecolor": "#EBF0F8", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "white", "gridcolor": "#DFE8F3", "gridwidth": 2, "linecolor": "#EBF0F8", "showbackground": true, "ticks": "", "zerolinecolor": "#EBF0F8" }, "yaxis": { "backgroundcolor": "white", "gridcolor": "#DFE8F3", "gridwidth": 2, "linecolor": "#EBF0F8", "showbackground": true, "ticks": "", "zerolinecolor": "#EBF0F8" }, "zaxis": { "backgroundcolor": "white", "gridcolor": "#DFE8F3", "gridwidth": 2, "linecolor": "#EBF0F8", "showbackground": true, "ticks": "", "zerolinecolor": "#EBF0F8" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "#DFE8F3", "linecolor": "#A2B1C6", "ticks": "" }, "baxis": { "gridcolor": "#DFE8F3", "linecolor": "#A2B1C6", "ticks": "" }, "bgcolor": "white", "caxis": { "gridcolor": "#DFE8F3", "linecolor": "#A2B1C6", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "#EBF0F8", "linecolor": "#EBF0F8", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "#EBF0F8", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "#EBF0F8", "linecolor": "#EBF0F8", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "#EBF0F8", "zerolinewidth": 2 } } }, "xaxis": { "anchor": "y", "domain": [ 0.0, 1.0 ], "scaleanchor": "y", "constrain": "domain", "title": { "text": "Inventor (EU)" }, "showgrid": false, "tickangle": 45, "ticks": "outside", "tickfont": { "size": 16 } }, "yaxis": { "anchor": "x", "domain": [ 0.0, 1.0 ], "autorange": "reversed", "constrain": "domain", "title": { "text": "Applicant (CN)" }, "showgrid": false, "ticks": "outside", "tickfont": { "size": 16 } }, "coloraxis": { "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "colorbar": { "thicknessmode": "pixels", "thickness": 25, "ticks": "outside", "ticksuffix": " ", "dtick": 20, "outlinewidth": 1 }, "showscale": false }, "margin": { "t": 60 }, "title": { "x": 0.5 }, "font": { "family": "Montserrat", "size": 16 }, "width": 1000, "height": 1000 }, "config": { "displayModeBar": false, "responsive": true, "plotlyServerURL": "https://plotly.com" } }, "text/html": "
" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "applt_sub = appln_pers_f[((appln_pers_f[\"applt_seq_nr\"]!=0)&\n", " (appln_pers_f[\"psn_sector_primary\"]!=\"INDIVIDUAL\"))]\n", "invt_sub = appln_pers_f[appln_pers_f[\"invt_seq_nr\"]!=0]\n", "\n", "eu_applt_subset = applt_sub[~applt_sub[\"person_ctry_type\"].str.contains(\"China\")]\n", "ch_applt_subset = applt_sub[applt_sub[\"person_ctry_type\"].str.contains(\"China\")]\n", "\n", "eu_invt_subset = invt_sub[~invt_sub[\"person_ctry_type\"].str.contains(\"China\")]\n", "ch_invt_subset = invt_sub[invt_sub[\"person_ctry_type\"].str.contains(\"China\")]\n", "\n", "#\n", "# patstat_applt_dipol = eu_invt_subset.merge(ch_applt_subset, on=record_col, suffixes=('_eu', '_ch'))\n", "# patstat_applt_dipol.sample(100)\n", "\n", "patstat_applt_dipol = eu_applt_subset.merge(ch_applt_subset, on=record_col, suffixes=('_eu', '_ch'))\n", "patstat_applt_inv_dipol = eu_invt_subset.merge(ch_applt_subset, on=record_col, suffixes=('_eu', '_ch'))\n", "\n", "# co_occur = pd.crosstab(patstat_applt_dipol['han_name_eu'], patstat_applt_dipol['han_name_ch'],\n", "# values=patstat_applt_dipol[record_col], aggfunc='nunique').fillna(0).astype(int)\n", "co_occur = pd.crosstab(patstat_applt_inv_dipol['person_ctry_code_fullname_eu'], patstat_applt_inv_dipol['han_name_ch'],\n", " values=patstat_applt_inv_dipol[record_col], aggfunc='nunique').fillna(0).astype(int)\n", "\n", "\n", "co_occur = co_occur.T\n", "co_occur[\"sum\"] = co_occur.sum(axis=1)\n", "co_occur = co_occur[co_occur.sum(0).sort_values(ascending=False).index]\n", "\n", "co_occur = (co_occur\n", " .sort_values(by=\"sum\", ascending=False)\n", " .head(20)\n", " .drop(columns=\"sum\")\n", " .replace(0,np.nan)\n", " .dropna(axis=1,how=\"all\")\n", " .replace(np.nan,0)\n", " .astype(int))\n", "\n", "fig = px.imshow(np.nan_to_num(np.log10(co_occur)+1,neginf=0),#co_occur,\n", " labels=dict(x=\"Inventor (EU)\", y=\"Applicant (CN)\", z=co_occur.values.astype(str)),# color=\"Co-patent\"),\n", " x=list(co_occur.columns),\n", " text_auto=True,\n", " y=list(co_occur.index))\n", "\n", "\n", "fig.update_layout(title_x=0.5,\n", " width=1000, height=1000,\n", " xaxis_showgrid=False,\n", " yaxis_showgrid=False,\n", " yaxis_autorange='reversed',\n", " font_family=\"Montserrat\",\n", " template='plotly_white',\n", " coloraxis_colorbar=dict(\n", " thicknessmode=\"pixels\", thickness=25,\n", " ticks=\"outside\", ticksuffix=\" \",\n", " dtick=20,outlinewidth=1,\n", " ))\n", "\n", "# fig.update_traces(texttemplate='%{z}')\n", "# fig.update_traces(z=co_occur.values)\n", "# fig.update(data=[{'customdata': co_occur}])\n", "# fig.update(data=[{'customdata': co_occur,\n", "# 'hovertemplate': \"(x) %{x} product: %{customdata[0]}
(y) %{y} product: %{customdata[1]}
%{z}\"}])\n", "# fig.update_traces(texttemplate='%{customdata}')\n", "fig.update_traces(text=co_occur, texttemplate=\"%{text}\")\n", "fig.update(layout_coloraxis_showscale=False)\n", "fig.update_xaxes(tickangle= -45)\n", "fig.update_yaxes(\n", " ticks=\"outside\")\n", "fig.update_xaxes(\n", " ticks=\"outside\")\n", "\n", "figsuper_ppt = fig\n", "figsuper_ppt['layout'][\"font\"][\"size\"]=16\n", "for a in figsuper_ppt['layout'][\"annotations\"]:\n", " a[\"font\"][\"size\"] = 16\n", "\n", "s=16\n", "figsuper_ppt.update_yaxes(tickfont=dict(size=s))\n", "figsuper_ppt.update_xaxes(tickfont=dict(size=s),tickangle=45)\n", "\n", "figsuper_ppt.show(config= dict(displayModeBar = False, responsive = True))\n", "\n", "figsuper_ppt.write_image(rf\"{fromdir}/plots/CN_applt_ctry.png\",height=900,width=1200,scale = 4)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 258, "outputs": [], "source": [ "patstat_applt_dipol_2 = (patstat_applt_dipol\n", " .groupby([\"han_name_ch\",\"han_name_eu\"], as_index=False)\n", " .agg({\"psn_sector_primary_ch\":\"first\",\n", " \"psn_sector_primary_eu\":\"first\",\n", " \"person_ctry_ISO3_eu\":\"first\",\n", " record_col:\"nunique\"})\n", " .sort_values(by=record_col, ascending=False)\n", " .head(-1))\n", "patstat_applt_dipol_2[\"applt_eu_label\"] = (patstat_applt_dipol_2[\"han_name_eu\"]\n", " +\" (\"\n", " +patstat_applt_dipol_2[\"person_ctry_ISO3_eu\"]\n", " +\"; \"\n", " +patstat_applt_dipol_2[\"psn_sector_primary_eu\"]\n", " +\")\")\n", "\n", "patstat_applt_dipol_2[\"applt_ch_label\"] = (patstat_applt_dipol_2[\"han_name_ch\"]\n", " +\" (\"\n", " +patstat_applt_dipol_2[\"psn_sector_primary_ch\"]\n", " +\")\")\n", "\n", "patstat_applt_dipol_2[[\"applt_ch_label\",\"applt_eu_label\",\"appln_id\"]].to_excel(rf\"{fromdir}/plots/applt_table.xlsx\", index=False)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 259, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "alignmentgroup": "True", "hovertemplate": "Country type=EU
Percent of related co-patents=%{x}
Inventor's country=%{y}", "legendgroup": "EU", "marker": { "color": "#636EFA", "pattern": { "shape": "" } }, "name": "EU", "offsetgroup": "EU", "orientation": "h", "showlegend": true, "textposition": "auto", "texttemplate": "%{x}", "x": [ 0.024284475281873375, 0.02515177797051171, 0.005203816131830009, 0.003469210754553339, 0.011274934952298352, 0.20294882914137033, 0.30875975715524717, 0.0017346053772766695, 0.0026019080659150044, 8.673026886383347E-4, 0.019080659150043366, 8.673026886383347E-4, 0.02168256721595837, 0.003469210754553339, 8.673026886383347E-4, 8.673026886383347E-4, 0.023417172593235037, 0.23764093668690373 ], "xaxis": "x", "y": [ "Austria", "Belgium", "Czech Republic", "Denmark", "Finland", "France", "Germany", "Greece", "Hungary", "Ireland", "Italy", "Luxembourg", "Netherlands", "Poland", "Portugal", "Romania", "Spain", "Sweden" ], "yaxis": "y", "type": "bar" }, { "alignmentgroup": "True", "hovertemplate": "Country type=China
Percent of related co-patents=%{x}
Inventor's country=%{y}", "legendgroup": "China", "marker": { "color": "#EF553B", "pattern": { "shape": "" } }, "name": "China", "offsetgroup": "China", "orientation": "h", "showlegend": true, "textposition": "auto", "texttemplate": "%{x}", "x": [ 0.5177797051170858 ], "xaxis": "x", "y": [ "China" ], "yaxis": "y", "type": "bar" }, { "alignmentgroup": "True", "hovertemplate": "Country type=Non-EU associate
Percent of related co-patents=%{x}
Inventor's country=%{y}", "legendgroup": "Non-EU associate", "marker": { "color": "#00CC96", "pattern": { "shape": "" } }, "name": "Non-EU associate", "offsetgroup": "Non-EU associate", "orientation": "h", "showlegend": true, "textposition": "auto", "texttemplate": "%{x}", "x": [ 8.673026886383347E-4, 0.024284475281873375, 0.07892454466608846 ], "xaxis": "x", "y": [ "Norway", "Switzerland", "United Kingdom" ], "yaxis": "y", "type": "bar" } ], "layout": { "template": { "data": { "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmapgl" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "xaxis": { "anchor": "y", "domain": [ 0.0, 1.0 ], "title": { "text": "Percent of related co-patents" }, "tickformat": ".1%", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis": { "anchor": "x", "domain": [ 0.0, 1.0 ], "title": { "text": "Inventor's country" }, "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "tickfont": { "size": 14 } }, "legend": { "title": { "text": "Country type" }, "tracegroupgap": 0 }, "margin": { "t": 60 }, "barmode": "relative", "font": { "family": "Montserrat", "size": 14 }, "yaxis2": { "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis3": { "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "uniformtext": { "minsize": 10 } }, "config": { "plotlyServerURL": "https://plotly.com" } }, "text/html": "
" }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "alignmentgroup": "True", "hovertemplate": "Country type=EU
Percent of related co-patents=%{x}
Applicant's country=%{y}", "legendgroup": "EU", "marker": { "color": "#636EFA", "pattern": { "shape": "" } }, "name": "EU", "offsetgroup": "EU", "orientation": "h", "showlegend": true, "textposition": "auto", "texttemplate": "%{x}", "x": [ 0.00353045013239188, 0.00706090026478376, 8.8261253309797E-4, 0.00264783759929391, 0.00176522506619594, 0.01235657546337158, 0.13592233009708737, 0.23477493380406, 0.00441306266548985, 0.00441306266548985, 0.00353045013239188, 0.01059135039717564, 8.8261253309797E-4, 0.019417475728155338, 0.0088261253309797 ], "xaxis": "x", "y": [ "Austria", "Belgium", "Cyprus", "Czech Republic", "Denmark", "Finland", "France", "Germany", "Ireland", "Italy", "Luxembourg", "Netherlands", "Portugal", "Spain", "Sweden" ], "yaxis": "y", "type": "bar" }, { "alignmentgroup": "True", "hovertemplate": "Country type=China
Percent of related co-patents=%{x}
Applicant's country=%{y}", "legendgroup": "China", "marker": { "color": "#EF553B", "pattern": { "shape": "" } }, "name": "China", "offsetgroup": "China", "orientation": "h", "showlegend": true, "textposition": "auto", "texttemplate": "%{x}", "x": [ 0.5445719329214475 ], "xaxis": "x", "y": [ "China" ], "yaxis": "y", "type": "bar" }, { "alignmentgroup": "True", "hovertemplate": "Country type=Non-EU associate
Percent of related co-patents=%{x}
Applicant's country=%{y}", "legendgroup": "Non-EU associate", "marker": { "color": "#00CC96", "pattern": { "shape": "" } }, "name": "Non-EU associate", "offsetgroup": "Non-EU associate", "orientation": "h", "showlegend": true, "textposition": "auto", "texttemplate": "%{x}", "x": [ 8.8261253309797E-4, 0.0353045013239188, 0.04236540158870256 ], "xaxis": "x", "y": [ "Norway", "Switzerland", "United Kingdom" ], "yaxis": "y", "type": "bar" } ], "layout": { "template": { "data": { "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmapgl" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "xaxis": { "anchor": "y", "domain": [ 0.0, 1.0 ], "title": { "text": "Percent of related co-patents" }, "tickformat": ".1%", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis": { "anchor": "x", "domain": [ 0.0, 1.0 ], "title": { "text": "Applicant's country" }, "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "tickfont": { "size": 14 } }, "legend": { "title": { "text": "Country type" }, "tracegroupgap": 0 }, "margin": { "t": 60 }, "barmode": "relative", "font": { "family": "Montserrat", "size": 14 }, "yaxis2": { "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis3": { "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "uniformtext": { "minsize": 10 } }, "config": { "plotlyServerURL": "https://plotly.com" } }, "text/html": "
" }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "alignmentgroup": "True", "hovertemplate": "Authority type=EU
Percent of related co-patents=%{x}
Application authority=%{y}", "legendgroup": "EU", "marker": { "color": "#636EFA", "pattern": { "shape": "" } }, "name": "EU", "offsetgroup": "EU", "orientation": "h", "showlegend": true, "textposition": "auto", "texttemplate": "%{x}", "x": [ 0.005194805194805195, 0.0017316017316017316, 0.003463203463203463, 0.0025974025974025974, 0.009523809523809525, 0.09783549783549783, 0.20952380952380953, 0.004329004329004329, 0.023376623376623377, 8.658008658008658E-4, 0.012987012987012988, 0.006060606060606061 ], "xaxis": "x", "y": [ "Austria", "Belgium", "Czech Republic", "Denmark", "Finland", "France", "Germany", "Luxembourg", "Netherlands", "Portugal", "Spain", "Sweden" ], "yaxis": "y", "type": "bar" }, { "alignmentgroup": "True", "hovertemplate": "Authority type=EPO
Percent of related co-patents=%{x}
Application authority=%{y}", "legendgroup": "EPO", "marker": { "color": "#7F00FF", "pattern": { "shape": "" } }, "name": "EPO", "offsetgroup": "EPO", "orientation": "h", "showlegend": true, "textposition": "auto", "texttemplate": "%{x}", "x": [ 0.4658008658008658 ], "xaxis": "x", "y": [ "European Patent Office" ], "yaxis": "y", "type": "bar" }, { "alignmentgroup": "True", "hovertemplate": "Authority type=Non-EU associate
Percent of related co-patents=%{x}
Application authority=%{y}", "legendgroup": "Non-EU associate", "marker": { "color": "#00CC96", "pattern": { "shape": "" } }, "name": "Non-EU associate", "offsetgroup": "Non-EU associate", "orientation": "h", "showlegend": true, "textposition": "auto", "texttemplate": "%{x}", "x": [ 0.0017316017316017316, 0.15497835497835497 ], "xaxis": "x", "y": [ "Switzerland", "United Kingdom" ], "yaxis": "y", "type": "bar" } ], "layout": { "template": { "data": { "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmapgl" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "xaxis": { "anchor": "y", "domain": [ 0.0, 1.0 ], "title": { "text": "Percent of related co-patents" }, "tickformat": ".1%", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis": { "anchor": "x", "domain": [ 0.0, 1.0 ], "title": { "text": "Application authority" }, "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "tickfont": { "size": 14 } }, "legend": { "title": { "text": "Authority type" }, "tracegroupgap": 0 }, "margin": { "t": 60 }, "barmode": "relative", "font": { "family": "Montserrat", "size": 14 }, "yaxis2": { "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis3": { "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "uniformtext": { "minsize": 10 } }, "config": { "plotlyServerURL": "https://plotly.com" } }, "text/html": "
" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# percent of publications related to\n", "# -authority country\n", "# -inventor country\n", "# -applicant country\n", "\n", "color_discrete_map= {'China': '#EF553B',\n", " 'EU': '#636EFA',\n", " 'Non-EU associate': '#00CC96',\n", " 'EPO':'#7F00FF'}#CC8899\n", "\n", "\n", "labeld_dict = dict({\n", " record_col+\"_percent\": 'Percent of related co-patents',\n", " \"person_ctry_code_fullname\": \"Country\",\n", " \"person_ctry_type\": \"Country type\",\n", " \"appln_auth_fullname\": \"Application authority\",\n", " \"auth_ctry_type\": \"Authority type\",\n", " \"Country_Type\":\"Country type\",\n", " \"Eurovoc_Class\":\"Region\"\n", " })\n", "\n", "for c in [\"person_ctry_code\",\"appln_auth\"]:\n", " pers_sub = appln_pers_f\n", " if c == \"person_ctry_code\":\n", " for role in [\"invt\",\"applt\"]:\n", " pers_sub = appln_pers_f[appln_pers_f[role+\"_seq_nr\"]!=0]\n", " role_name = {\"invt\":\"Inventor's\", \"applt\":\"Applicant's\"}.get(role)\n", " labeld_dict[\"person_ctry_code_fullname\"] = role_name+\" country\"\n", "\n", "\n", " data = (pers_sub.groupby(c+\"_fullname\",as_index=False).agg({'appln_id': 'nunique', 'person_ctry_ISO3': 'first',\"person_ctry_type\":\"first\"}))\n", " data[record_col+\"_percent\"] = data[record_col]/pers_sub[record_col].nunique()\n", " fig = px.bar(data, x=record_col+\"_percent\", y=c+\"_fullname\",color_discrete_map=color_discrete_map,text_auto=True,color=\"person_ctry_type\",\n", " labels = labeld_dict)\n", " fig.update_layout(xaxis_tickformat='.1%',font_family=\"Montserrat\",\n", " yaxis={'categoryorder':'total ascending'},)\n", " figsuper = fig\n", " figsuper.update_layout(yaxis={'categoryorder':'total ascending'}, barmode='relative',yaxis2={'categoryorder':'total ascending'},yaxis3={'categoryorder':'total ascending'})\n", " figsuper.update_yaxes(\n", " showgrid=True,showline=True, linewidth=1, linecolor='black', mirror=True,\n", " ticks=\"outside\")\n", " figsuper.update_xaxes(\n", " showgrid=True,showline=True, linewidth=1, linecolor='black', mirror=True,\n", " ticks=\"outside\")\n", " figsuper.update_layout({'template':\"plotly\",\"font_family\":\"Montserrat\"})\n", "\n", " figsuper['layout'][\"font\"][\"size\"]=14\n", " for a in figsuper['layout'][\"annotations\"]:\n", " a[\"font\"][\"size\"] = 14\n", " figsuper[\"layout\"][\"yaxis\"][\"tickfont\"][\"size\"] = 14\n", "\n", " figsuper.update_layout(uniformtext_minsize=10)\n", " figsuper.write_image(rf\"{fromdir}/plots/{role}_loc_ctry.png\",height=900,width=1200,scale = 4)\n", " figsuper.show()\n", " else:\n", " data = pers_sub.groupby(c+\"_fullname\",as_index=False).agg({'appln_id': 'nunique', 'auth_ISO3': 'first',\"auth_ctry_type\":\"first\"})\n", " data[record_col+\"_percent\"] = data[record_col]/pers_sub[record_col].nunique()\n", " fig = px.bar(data, x=record_col+\"_percent\", y=c+\"_fullname\",color_discrete_map=color_discrete_map,text_auto=True,color=\"auth_ctry_type\",\n", " labels = labeld_dict)\n", " fig.update_layout(xaxis_tickformat='.1%',font_family=\"Montserrat\",\n", " yaxis={'categoryorder':'total ascending'},)\n", " figsuper = fig\n", " figsuper.update_layout(yaxis={'categoryorder':'total ascending'}, barmode='relative',yaxis2={'categoryorder':'total ascending'},yaxis3={'categoryorder':'total ascending'})\n", " figsuper.update_yaxes(\n", " showgrid=True,showline=True, linewidth=1, linecolor='black', mirror=True,\n", " ticks=\"outside\")\n", " figsuper.update_xaxes(\n", " showgrid=True,showline=True, linewidth=1, linecolor='black', mirror=True,\n", " ticks=\"outside\")\n", " figsuper.update_layout({'template':\"plotly\",\"font_family\":\"Montserrat\"})\n", "\n", " figsuper['layout'][\"font\"][\"size\"]=14\n", " for a in figsuper['layout'][\"annotations\"]:\n", " a[\"font\"][\"size\"] = 14\n", " figsuper[\"layout\"][\"yaxis\"][\"tickfont\"][\"size\"] = 14\n", "\n", " figsuper.update_layout(uniformtext_minsize=10)\n", " figsuper.write_image(rf\"{fromdir}/plots/auth_loc_ctry.png\",height=900,width=1200,scale = 4)\n", " figsuper.show()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 259, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 259, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 259, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 260, "outputs": [], "source": [ "appln_ipc_f = pd.read_csv(f\"{fromdir}/first-filings-with-IPC-raw.csv\", header=None,\n", " names=[\"appln_id\",\"appln_auth\",\"appln_kind\",\"filing_year\",\"nb_applicants\",'nb_inventors',\n", " 'ipc_class_symbol','ipc_class_level'])\n", "\n", "appln_ipc_f = appln_ipc_f[appln_ipc_f[\"filing_year\"]>2010]\n", "appln_ipc_f = appln_ipc_f[appln_ipc_f[\"appln_id\"].isin(appln_f[\"appln_id\"])]\n", "\n", "appln_ipc_f[\"cpc_id\"] = appln_ipc_f[\"ipc_class_symbol\"].str.replace(\" \",\"\")\n", "appln_ipc_f[\"ipc_class\"] = appln_ipc_f[\"ipc_class_symbol\"].str.replace(\" \",\"\").str[0]\n", "appln_ipc_f[\"ipc_classname\"] = appln_ipc_f[\"ipc_class\"].replace({\"A\":\"Human necessities\",\n", " \"B\":\"Performing operations; transporting\",\n", " \"B\":\"Operations; transporting\",\n", " \"C\":\"Chemistry; metallurgy\",\n", " \"D\":\"Textiles; paper\",\n", " \"E\":\"Fixed constructions\",\n", " \"F\":\"Mechanical engineering; lightning; heating; weapons; blasting\",\n", " \"F\":\"Engineering\",\n", " \"G\":\"Physics\",\n", " \"H\":\"Electricity\"})\n", "\n", "appln_ipc_f[\"ipc_class\"] = appln_ipc_f[\"ipc_class\"]+\"-\"+appln_ipc_f[\"ipc_classname\"]" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 260, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 261, "outputs": [], "source": [ "group = 'ipc_class'\n", "data = appln_ipc_f.groupby(group, as_index=False)[record_col].nunique().sort_values(ascending=False, by=record_col)\n", "\n", "fig = px.bar(data.sort_values(by=group), x=record_col, y=group, color=group,barmode='relative',text_auto=True,\n", " labels={\n", " record_col: 'Number of co-publications',\n", " group: \"\",\n", " },\n", " title=\"Distribution of Domains\", template='plotly')\n", "fig.update_layout(showlegend=False, xaxis_tickformat='d',font_family=\"Montserrat\")\n", "fig.update_traces(hovertemplate='%{x:d}')\n", "fig.update_traces(textfont_size=12, textangle=0, textposition=\"outside\", cliponaxis=True)\n", "fig.add_shape(\n", " # Rectangle with reference to the plot\n", " type=\"rect\",\n", " xref=\"paper\",\n", " yref=\"paper\",\n", " x0=0,\n", " y0=0,\n", " x1=1.0,\n", " y1=1.0,\n", " line=dict(\n", " color=\"black\",\n", " width=0.5,\n", " )\n", " )\n", "fig.update_layout(yaxis={'categoryorder':'total ascending'})\n", "fig.update_yaxes(\n", " showgrid=True,\n", " ticks=\"outside\")\n", "fig.update_xaxes(\n", " showgrid=True,\n", " ticks=\"outside\")\n", "dom_distr = go.Figure(fig)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 262, "outputs": [], "source": [ "data = (appln_ipc_f.groupby(['filing_year','ipc_class'])[record_col].nunique(dropna=False).unstack()\n", " .fillna(0)\n", " .stack()\n", " .reset_index()\n", " .rename(columns={0:record_col}))\n", "data = data.merge(data[data[record_col]>0].sort_values(by=[\"filing_year\"], ascending=True).drop_duplicates(subset='ipc_class'),\n", " on='ipc_class', suffixes=[None,\"_relative_growth\"])\n", "data[record_col+\"_relative_growth\"] = (data[record_col]-data[record_col+\"_relative_growth\"])/data[record_col+\"_relative_growth\"]\n", "\n", "data = data.sort_values(by =[\"ipc_class\",\"filing_year\"], ascending=[True,True])\n", "data[record_col+\"_cumsum\"] = (data.groupby('ipc_class',as_index=False)[record_col].cumsum())\n" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 263, "outputs": [], "source": [ "group = ['filing_year','ipc_class']\n", "fig = px.line(data.sort_values(ascending=[True,True], by=[group[0],group[-1]]),y=record_col,x=group[0], color=group[-1], markers=True, labels={\n", " record_col: 'Number of co-publications',\n", " group[-1]: \"Domain\",\n", " },\n", " title=\"Yearly output of co-publications\", template='plotly')\n", "fig.update_traces(hovertemplate='%{y:d}')\n", "fig.update_layout(hovermode='x unified')\n", "fig.add_shape(\n", " # Rectangle with reference to the plot\n", " type=\"rect\",\n", " xref=\"paper\",\n", " yref=\"paper\",\n", " x0=0,\n", " y0=0,\n", " x1=1.0,\n", " y1=1.0,\n", " line=dict(\n", " color=\"black\",\n", " width=0.5,\n", " )\n", " )\n", "fig.update_yaxes(\n", " showgrid=True,\n", " ticks=\"outside\")\n", "fig.update_xaxes(\n", " showgrid=True,\n", " ticks=\"outside\")\n", "\n", "year_output_by_domain = go.Figure(fig)\n", "\n", "fig = px.line(data.sort_values(ascending=[True,True], by=[group[0],group[-1]]),y=record_col+\"_relative_growth\",x=group[0], color=group[-1], markers=True, labels={\n", " record_col+\"_relative_growth\": 'Rel. growth
in co-publications (%)',\n", " group[-1]: \"Domain\",\n", " },\n", " title=\"Relative growth in the output of co-publications\", template='plotly')\n", "\n", "fig.update_layout(hovermode='x unified',yaxis_tickformat='.0f%',font_family=\"Montserrat\")\n", "fig.update_traces(hovertemplate='%{y:.0f}00%')\n", "fig.add_shape(\n", " # Rectangle with reference to the plot\n", " type=\"rect\",\n", " xref=\"paper\",\n", " yref=\"paper\",\n", " x0=0,\n", " y0=0,\n", " x1=1.0,\n", " y1=1.0,\n", " line=dict(\n", " color=\"black\",\n", " width=0.5,\n", " )\n", " )\n", "fig.update_yaxes(\n", " showgrid=True,\n", " ticks=\"outside\")\n", "fig.update_xaxes(\n", " showgrid=True,\n", " ticks=\"outside\")\n", "\n", "rel_output_by_domain = go.Figure(fig)\n", "\n", "\n", "fig = px.area(data.sort_values(ascending=[True,True], by=[group[0],group[-1]]),y=record_col+\"_cumsum\",x=group[0], color=group[-1],line_group=group[-1],\n", " labels={\n", " record_col+\"_cumsum\": 'Cumulative number of co-publications',\n", " group[-1]: \"Domain\",\n", " },\n", " title=\"Cumulative number of co-publications\", template='plotly')\n", "fig.update_traces(hovertemplate='%{y:d}')\n", "fig.update_layout(hovermode='x unified')\n", "fig.add_shape(\n", " # Rectangle with reference to the plot\n", " type=\"rect\",\n", " xref=\"paper\",\n", " yref=\"paper\",\n", " x0=0,\n", " y0=0,\n", " x1=1.0,\n", " y1=1.0,\n", " line=dict(\n", " color=\"black\",\n", " width=0.5,\n", " )\n", " )\n", "fig.update_yaxes(\n", " showgrid=True,\n", " ticks=\"outside\")\n", "fig.update_xaxes(\n", " showgrid=True,\n", " ticks=\"outside\")\n", "\n", "cumsum_by_domain = go.Figure(fig)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 264, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "alignmentgroup": "True", "cliponaxis": true, "hovertemplate": "%{x:d}", "legendgroup": "A-Human necessities", "marker": { "color": "#636efa", "pattern": { "shape": "" } }, "name": "A-Human necessities", "offsetgroup": "A-Human necessities", "orientation": "h", "showlegend": false, "textangle": 0, "textfont": { "size": 12 }, "textposition": "outside", "texttemplate": "%{x}", "x": [ 132 ], "xaxis": "x", "y": [ "A-Human necessities" ], "yaxis": "y", "type": "bar" }, { "alignmentgroup": "True", "cliponaxis": true, "hovertemplate": "%{x:d}", "legendgroup": "B-Operations; transporting", "marker": { "color": "#EF553B", "pattern": { "shape": "" } }, "name": "B-Operations; transporting", "offsetgroup": "B-Operations; transporting", "orientation": "h", "showlegend": false, "textangle": 0, "textfont": { "size": 12 }, "textposition": "outside", "texttemplate": "%{x}", "x": [ 363 ], "xaxis": "x", "y": [ "B-Operations; transporting" ], "yaxis": "y", "type": "bar" }, { "alignmentgroup": "True", "cliponaxis": true, "hovertemplate": "%{x:d}", "legendgroup": "C-Chemistry; metallurgy", "marker": { "color": "#00cc96", "pattern": { "shape": "" } }, "name": "C-Chemistry; metallurgy", "offsetgroup": "C-Chemistry; metallurgy", "orientation": "h", "showlegend": false, "textangle": 0, "textfont": { "size": 12 }, "textposition": "outside", "texttemplate": "%{x}", "x": [ 153 ], "xaxis": "x", "y": [ "C-Chemistry; metallurgy" ], "yaxis": "y", "type": "bar" }, { "alignmentgroup": "True", "cliponaxis": true, "hovertemplate": "%{x:d}", "legendgroup": "D-Textiles; paper", "marker": { "color": "#ab63fa", "pattern": { "shape": "" } }, "name": "D-Textiles; paper", "offsetgroup": "D-Textiles; paper", "orientation": "h", "showlegend": false, "textangle": 0, "textfont": { "size": 12 }, "textposition": "outside", "texttemplate": "%{x}", "x": [ 14 ], "xaxis": "x", "y": [ "D-Textiles; paper" ], "yaxis": "y", "type": "bar" }, { "alignmentgroup": "True", "cliponaxis": true, "hovertemplate": "%{x:d}", "legendgroup": "E-Fixed constructions", "marker": { "color": "#FFA15A", "pattern": { "shape": "" } }, "name": "E-Fixed constructions", "offsetgroup": "E-Fixed constructions", "orientation": "h", "showlegend": false, "textangle": 0, "textfont": { "size": 12 }, "textposition": "outside", "texttemplate": "%{x}", "x": [ 51 ], "xaxis": "x", "y": [ "E-Fixed constructions" ], "yaxis": "y", "type": "bar" }, { "alignmentgroup": "True", "cliponaxis": true, "hovertemplate": "%{x:d}", "legendgroup": "F-Engineering", "marker": { "color": "#19d3f3", "pattern": { "shape": "" } }, "name": "F-Engineering", "offsetgroup": "F-Engineering", "orientation": "h", "showlegend": false, "textangle": 0, "textfont": { "size": 12 }, "textposition": "outside", "texttemplate": "%{x}", "x": [ 157 ], "xaxis": "x", "y": [ "F-Engineering" ], "yaxis": "y", "type": "bar" }, { "alignmentgroup": "True", "cliponaxis": true, "hovertemplate": "%{x:d}", "legendgroup": "G-Physics", "marker": { "color": "#FF6692", "pattern": { "shape": "" } }, "name": "G-Physics", "offsetgroup": "G-Physics", "orientation": "h", "showlegend": false, "textangle": 0, "textfont": { "size": 12 }, "textposition": "outside", "texttemplate": "%{x}", "x": [ 263 ], "xaxis": "x", "y": [ "G-Physics" ], "yaxis": "y", "type": "bar" }, { "alignmentgroup": "True", "cliponaxis": true, "hovertemplate": "%{x:d}", "legendgroup": "H-Electricity", "marker": { "color": "#B6E880", "pattern": { "shape": "" } }, "name": "H-Electricity", "offsetgroup": "H-Electricity", "orientation": "h", "showlegend": false, "textangle": 0, "textfont": { "size": 12 }, "textposition": "outside", "texttemplate": "%{x}", "x": [ 350 ], "xaxis": "x", "y": [ "H-Electricity" ], "yaxis": "y", "type": "bar" }, { "fillpattern": { "shape": "" }, "hovertemplate": "%{y:d}", "legendgroup": "A-Human necessities", "line": { "color": "#636efa" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "A-Human necessities", "orientation": "v", "showlegend": false, "stackgroup": "1", "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x2", "y": [ 11.0, 19.0, 37.0, 46.0, 60.0, 74.0, 89.0, 102.0, 120.0, 125.0, 132.0 ], "yaxis": "y2", "type": "scatter" }, { "fillpattern": { "shape": "" }, "hovertemplate": "%{y:d}", "legendgroup": "B-Operations; transporting", "line": { "color": "#EF553B" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "B-Operations; transporting", "orientation": "v", "showlegend": false, "stackgroup": "1", "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x2", "y": [ 16.0, 26.0, 41.0, 58.0, 76.0, 98.0, 141.0, 204.0, 277.0, 336.0, 363.0 ], "yaxis": "y2", "type": "scatter" }, { "fillpattern": { "shape": "" }, "hovertemplate": "%{y:d}", "legendgroup": "C-Chemistry; metallurgy", "line": { "color": "#00cc96" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "C-Chemistry; metallurgy", "orientation": "v", "showlegend": false, "stackgroup": "1", "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x2", "y": [ 9.0, 20.0, 33.0, 43.0, 53.0, 63.0, 80.0, 89.0, 115.0, 143.0, 153.0 ], "yaxis": "y2", "type": "scatter" }, { "fillpattern": { "shape": "" }, "hovertemplate": "%{y:d}", "legendgroup": "D-Textiles; paper", "line": { "color": "#ab63fa" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "D-Textiles; paper", "orientation": "v", "showlegend": false, "stackgroup": "1", "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x2", "y": [ 1.0, 1.0, 1.0, 2.0, 5.0, 6.0, 9.0, 11.0, 13.0, 14.0, 14.0 ], "yaxis": "y2", "type": "scatter" }, { "fillpattern": { "shape": "" }, "hovertemplate": "%{y:d}", "legendgroup": "E-Fixed constructions", "line": { "color": "#FFA15A" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "E-Fixed constructions", "orientation": "v", "showlegend": false, "stackgroup": "1", "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x2", "y": [ 2.0, 4.0, 5.0, 6.0, 7.0, 11.0, 15.0, 25.0, 32.0, 46.0, 51.0 ], "yaxis": "y2", "type": "scatter" }, { "fillpattern": { "shape": "" }, "hovertemplate": "%{y:d}", "legendgroup": "F-Engineering", "line": { "color": "#19d3f3" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "F-Engineering", "orientation": "v", "showlegend": false, "stackgroup": "1", "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x2", "y": [ 7.0, 10.0, 26.0, 34.0, 43.0, 51.0, 68.0, 96.0, 124.0, 150.0, 157.0 ], "yaxis": "y2", "type": "scatter" }, { "fillpattern": { "shape": "" }, "hovertemplate": "%{y:d}", "legendgroup": "G-Physics", "line": { "color": "#FF6692" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "G-Physics", "orientation": "v", "showlegend": false, "stackgroup": "1", "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x2", "y": [ 7.0, 21.0, 33.0, 49.0, 74.0, 94.0, 122.0, 162.0, 210.0, 245.0, 263.0 ], "yaxis": "y2", "type": "scatter" }, { "fillpattern": { "shape": "" }, "hovertemplate": "%{y:d}", "legendgroup": "H-Electricity", "line": { "color": "#B6E880" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "H-Electricity", "orientation": "v", "showlegend": false, "stackgroup": "1", "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x2", "y": [ 16.0, 32.0, 43.0, 62.0, 98.0, 143.0, 216.0, 280.0, 308.0, 337.0, 350.0 ], "yaxis": "y2", "type": "scatter" }, { "hovertemplate": "%{y:d}", "legendgroup": "A-Human necessities", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "A-Human necessities", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x3", "y": [ 11.0, 8.0, 18.0, 9.0, 14.0, 14.0, 15.0, 13.0, 18.0, 5.0, 7.0 ], "yaxis": "y3", "type": "scatter" }, { "hovertemplate": "%{y:d}", "legendgroup": "B-Operations; transporting", "line": { "color": "#EF553B", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "B-Operations; transporting", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x3", "y": [ 16.0, 10.0, 15.0, 17.0, 18.0, 22.0, 43.0, 63.0, 73.0, 59.0, 27.0 ], "yaxis": "y3", "type": "scatter" }, { "hovertemplate": "%{y:d}", "legendgroup": "C-Chemistry; metallurgy", "line": { "color": "#00cc96", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "C-Chemistry; metallurgy", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x3", "y": [ 9.0, 11.0, 13.0, 10.0, 10.0, 10.0, 17.0, 9.0, 26.0, 28.0, 10.0 ], "yaxis": "y3", "type": "scatter" }, { "hovertemplate": "%{y:d}", "legendgroup": "D-Textiles; paper", "line": { "color": "#ab63fa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "D-Textiles; paper", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x3", "y": [ 1.0, 0.0, 0.0, 1.0, 3.0, 1.0, 3.0, 2.0, 2.0, 1.0, 0.0 ], "yaxis": "y3", "type": "scatter" }, { "hovertemplate": "%{y:d}", "legendgroup": "E-Fixed constructions", "line": { "color": "#FFA15A", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "E-Fixed constructions", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x3", "y": [ 2.0, 2.0, 1.0, 1.0, 1.0, 4.0, 4.0, 10.0, 7.0, 14.0, 5.0 ], "yaxis": "y3", "type": "scatter" }, { "hovertemplate": "%{y:d}", "legendgroup": "F-Engineering", "line": { "color": "#19d3f3", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "F-Engineering", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x3", "y": [ 7.0, 3.0, 16.0, 8.0, 9.0, 8.0, 17.0, 28.0, 28.0, 26.0, 7.0 ], "yaxis": "y3", "type": "scatter" }, { "hovertemplate": "%{y:d}", "legendgroup": "G-Physics", "line": { "color": "#FF6692", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "G-Physics", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x3", "y": [ 7.0, 14.0, 12.0, 16.0, 25.0, 20.0, 28.0, 40.0, 48.0, 35.0, 18.0 ], "yaxis": "y3", "type": "scatter" }, { "hovertemplate": "%{y:d}", "legendgroup": "H-Electricity", "line": { "color": "#B6E880", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "H-Electricity", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x3", "y": [ 16.0, 16.0, 11.0, 19.0, 36.0, 45.0, 73.0, 64.0, 28.0, 29.0, 13.0 ], "yaxis": "y3", "type": "scatter" }, { "hovertemplate": "%{y:.0f}00%", "legendgroup": "A-Human necessities", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "A-Human necessities", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x4", "y": [ 0.0, -0.2727272727272727, 0.6363636363636364, -0.18181818181818182, 0.2727272727272727, 0.2727272727272727, 0.36363636363636365, 0.18181818181818182, 0.6363636363636364, -0.5454545454545454, -0.36363636363636365 ], "yaxis": "y4", "type": "scatter" }, { "hovertemplate": "%{y:.0f}00%", "legendgroup": "B-Operations; transporting", "line": { "color": "#EF553B", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "B-Operations; transporting", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x4", "y": [ 0.0, -0.375, -0.0625, 0.0625, 0.125, 0.375, 1.6875, 2.9375, 3.5625, 2.6875, 0.6875 ], "yaxis": "y4", "type": "scatter" }, { "hovertemplate": "%{y:.0f}00%", "legendgroup": "C-Chemistry; metallurgy", "line": { "color": "#00cc96", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "C-Chemistry; metallurgy", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x4", "y": [ 0.0, 0.2222222222222222, 0.4444444444444444, 0.1111111111111111, 0.1111111111111111, 0.1111111111111111, 0.8888888888888888, 0.0, 1.8888888888888888, 2.111111111111111, 0.1111111111111111 ], "yaxis": "y4", "type": "scatter" }, { "hovertemplate": "%{y:.0f}00%", "legendgroup": "D-Textiles; paper", "line": { "color": "#ab63fa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "D-Textiles; paper", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x4", "y": [ 0.0, -1.0, -1.0, 0.0, 2.0, 0.0, 2.0, 1.0, 1.0, 0.0, -1.0 ], "yaxis": "y4", "type": "scatter" }, { "hovertemplate": "%{y:.0f}00%", "legendgroup": "E-Fixed constructions", "line": { "color": "#FFA15A", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "E-Fixed constructions", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x4", "y": [ 0.0, 0.0, -0.5, -0.5, -0.5, 1.0, 1.0, 4.0, 2.5, 6.0, 1.5 ], "yaxis": "y4", "type": "scatter" }, { "hovertemplate": "%{y:.0f}00%", "legendgroup": "F-Engineering", "line": { "color": "#19d3f3", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "F-Engineering", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x4", "y": [ 0.0, -0.5714285714285714, 1.2857142857142858, 0.14285714285714285, 0.2857142857142857, 0.14285714285714285, 1.4285714285714286, 3.0, 3.0, 2.7142857142857144, 0.0 ], "yaxis": "y4", "type": "scatter" }, { "hovertemplate": "%{y:.0f}00%", "legendgroup": "G-Physics", "line": { "color": "#FF6692", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "G-Physics", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x4", "y": [ 0.0, 1.0, 0.7142857142857143, 1.2857142857142858, 2.5714285714285716, 1.8571428571428572, 3.0, 4.714285714285714, 5.857142857142857, 4.0, 1.5714285714285714 ], "yaxis": "y4", "type": "scatter" }, { "hovertemplate": "%{y:.0f}00%", "legendgroup": "H-Electricity", "line": { "color": "#B6E880", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+lines", "name": "H-Electricity", "orientation": "v", "showlegend": false, "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x4", "y": [ 0.0, 0.0, -0.3125, 0.1875, 1.25, 1.8125, 3.5625, 3.0, 0.75, 0.8125, -0.1875 ], "yaxis": "y4", "type": "scatter" } ], "layout": { "template": { "data": { "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmapgl" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "xaxis": { "anchor": "y", "domain": [ 0.0, 0.45 ], "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "tickformat": ".0f", "range": [ 0, 400 ] }, "yaxis": { "anchor": "x", "domain": [ 0.625, 1.0 ], "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "xaxis2": { "anchor": "y2", "domain": [ 0.55, 1.0 ], "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "range": [ 2010.8, 2022.2 ] }, "yaxis2": { "anchor": "x2", "domain": [ 0.625, 1.0 ], "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "tickformat": ".0f" }, "xaxis3": { "anchor": "y3", "domain": [ 0.0, 0.45 ], "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "range": [ 2010.8, 2022.2 ] }, "yaxis3": { "anchor": "x3", "domain": [ 0.0, 0.375 ], "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "xaxis4": { "anchor": "y4", "domain": [ 0.55, 1.0 ], "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "range": [ 2010.8, 2022.2 ] }, "yaxis4": { "anchor": "x4", "domain": [ 0.0, 0.375 ], "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "zeroline": true, "zerolinewidth": 0.5, "zerolinecolor": "grey", "tickformat": ".0%" }, "annotations": [ { "font": { "size": 14 }, "showarrow": false, "text": "Distribution of IPC classes", "x": 0.225, "xanchor": "center", "xref": "paper", "y": 1.0, "yanchor": "bottom", "yref": "paper" }, { "font": { "size": 14 }, "showarrow": false, "text": "Cumulative sum of related co-patents", "x": 0.775, "xanchor": "center", "xref": "paper", "y": 1.0, "yanchor": "bottom", "yref": "paper" }, { "font": { "size": 14 }, "showarrow": false, "text": "Related co-patents per year", "x": 0.225, "xanchor": "center", "xref": "paper", "y": 0.375, "yanchor": "bottom", "yref": "paper" }, { "font": { "size": 14 }, "showarrow": false, "text": "Relative growth of co-patents", "x": 0.775, "xanchor": "center", "xref": "paper", "y": 0.375, "yanchor": "bottom", "yref": "paper" } ], "barmode": "relative", "font": { "family": "Montserrat", "size": 14 } }, "config": { "displayModeBar": false, "responsive": true, "plotlyServerURL": "https://plotly.com" } }, "text/html": "
" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from plotly.subplots import make_subplots\n", "import plotly.graph_objects as go\n", "\n", "# dom_distr\n", "# year_output_by_domain\n", "# rel_output_by_domain\n", "# cumsum_by_domain\n", "\n", "figsuper = make_subplots(rows=2, cols=2, subplot_titles=[\"Distribution of IPC classes\",\"Cumulative sum of related co-patents\",\n", " \"Related co-patents per year\",\"Relative growth of co-patents\"])\n", "\n", "\n", "for trace in list(dom_distr.select_traces()):\n", " trace.showlegend=False\n", " # trace.barmode\n", " figsuper.add_trace(trace,\n", " row=1, col=1\n", " )\n", "\n", "for trace in list(cumsum_by_domain.select_traces()):\n", " trace.showlegend=False\n", " figsuper.add_trace(trace,\n", " row=1, col=2\n", " )\n", "\n", "for trace in list(year_output_by_domain.select_traces()):\n", " trace.showlegend=False\n", " figsuper.add_trace(trace,\n", " row=2, col=1\n", " )\n", "\n", "for trace in list(rel_output_by_domain.select_traces()):\n", " trace.showlegend=False\n", " figsuper.add_trace(trace,\n", " row=2, col=2\n", " )\n", "\n", "\n", "figsuper.update_layout(yaxis={'categoryorder':'total ascending'}, barmode='relative')\n", "figsuper.update_yaxes(\n", " showgrid=True,showline=True, linewidth=1, linecolor='black', mirror=True,\n", " ticks=\"outside\")\n", "figsuper.update_xaxes(\n", " showgrid=True,showline=True, linewidth=1, linecolor='black', mirror=True,\n", " ticks=\"outside\")\n", "\n", "figsuper.update_layout({'template':\"plotly\",\"font_family\":\"Montserrat\"})\n", "figsuper['layout']['xaxis1'].update(tickformat=\".0f\")\n", "figsuper['layout']['yaxis2'].update(tickformat=\".0f\")\n", "figsuper['layout']['yaxis4'].update(zeroline=True, zerolinewidth=0.5, zerolinecolor='grey',tickformat=\".0%\")\n", "figsuper['layout'][f'xaxis'][\"range\"] = [0,400]\n", "for i in range(2,5):\n", " figsuper['layout'][f'xaxis{i}'][\"range\"] = [2010.8,2022.2]\n", "figsuper['layout'][\"font\"][\"size\"]=14\n", "for a in figsuper['layout'][\"annotations\"]:\n", " a[\"font\"][\"size\"] = 14\n", "figsuper.show(config= dict(displayModeBar = False, responsive = True),height=800,width=1600,scale = 4)\n", "figsuper.write_image(rf\"{fromdir}/plots/ipc_classes.png\",height=900,width=1600,scale = 4)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 265, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\radvanyi\\.conda\\envs\\MOME_BIGDATA\\lib\\site-packages\\openpyxl\\reader\\workbook.py:118: UserWarning:\n", "\n", "Print area cannot be set to Defined name: Sheet1!$A:$B.\n", "\n" ] }, { "data": { "text/plain": " TOPIC IPC \n2 Solid fuels C10L5/00,5/40-5/48 \\\n3 Torrefaction of biomass C10B53/02 \n5 Liquid fuels C10L1/00,1/02,1/14 \n6 Vegetable oils C10L1/02,1/19 \n7 Biodiesel C07C67/00,69/00 \n.. ... ... \n287 Nuclear engineering G21 \n288 Fusion reactors G21B \n289 Nuclear (fission) reactors G21C \n290 Nuclear power plant G21D \n291 Gas turbine power plants using heat source of ... F02C1/05 \n\n IPC_f \n2 C10L5/00 \n3 C10B53/02 \n5 C10L1/00 \n6 C10L1/02 \n7 C07C67/00 \n.. ... \n287 G21 \n288 G21B \n289 G21C \n290 G21D \n291 F02C1/05 \n\n[186 rows x 3 columns]", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
TOPICIPCIPC_f
2Solid fuelsC10L5/00,5/40-5/48C10L5/00
3Torrefaction of biomassC10B53/02C10B53/02
5Liquid fuelsC10L1/00,1/02,1/14C10L1/00
6Vegetable oilsC10L1/02,1/19C10L1/02
7BiodieselC07C67/00,69/00C07C67/00
............
287Nuclear engineeringG21G21
288Fusion reactorsG21BG21B
289Nuclear (fission) reactorsG21CG21C
290Nuclear power plantG21DG21D
291Gas turbine power plants using heat source of ...F02C1/05F02C1/05
\n

186 rows × 3 columns

\n
" }, "execution_count": 265, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import re\n", "#\n", "# https://gitlab.com/area-science-park-sustainability/green-patents/-/tree/main\n", "#\n", "clean_codes = pd.read_excel(f'{fromdir}/2IPCGreenInventoryList_2022WIPO.xlsx')\n", "ipc_green = clean_codes[[\"TOPIC\",\"IPC\"]].dropna()\n", "ipc_green[\"IPC\"] = ipc_green[\"IPC\"].apply(lambda x: re.sub(r\"\\s+\", '', x))\n", "ipc_green[\"IPC_f\"] = ipc_green[\"IPC\"].str.split(\",\").str[0].str.split(\"-\").str[0]\n", "ipc_green" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 266, "outputs": [ { "data": { "text/plain": "'C10L5/00,5/40-5/48; C10B53/02; C10L1/00,1/02,1/14; C10L1/02,1/19; C07C67/00,69/00; C10L1/02,1/182; C02F3/28,11/04; C12N1/13,1/15,1/21,5/10,15/00; C10L3/00; H01M4/86-4/98,8/00-8/24,12/00-12/08; H01M4/86-4/98; H01M8/00-8/24,50/00-50/171; H01M12/00-12/08; C10B53/00; C10L5/00; C10L5/42,5/44; F23G7/00,7/10; C10J3/02,3/46; B09B3/00; C10L5/48; C21B5/06; D21C11/00; A62D3/02; B09B; B01D53/02,53/04,53/047,53/14,53/22,53/24; C10L5/46; E02B9/00-9/06; E02B9/08; F03B; F03B13/12-13/26; F03B15/00-15/22; B63H19/02,19/04; F03G7/05; F03D; H02K7/18; B63B35/00; B60K16/00; B60L8/00; B63H13/00; F24S; H01L27/142,31/00-31/078; H01L27/30,51/42-51/48; H01L25/00,25/03,25/16,25/18,31/042; C01B33/02; G05F1/67; F21L4/00; H02J7/35; H01G9/20; F24D17/00,18/00; F24D3/00,5/00,11/00,19/00; F24S90/00; F03D1/04,9/00,13/20; C02F1/14; F02C1/05; H01L31/0525; F03G6/00-6/06; E04D13/00,13/18; F22B1/00; F25B27/00; F26B3/00,3/28; F24S23/00; F24S10/10; F24T; F01K; F03G4/00-4/06,7/04; F24T10/00-50/00; F24D11/02; F24D15/04; F24D17/02,18/00; F24H4/00; F25B30/00; F01K27/00; F01K23/06-23/10; F01K17/00,23/04; F02C6/18; F25B27/02; C02F1/16; D21F5/20; F22B1/02; F23G5/46; F24F12/00; F27D17/00; F28D17/00-20/00; C10J3/86; F03G5/00-5/08; B60K6/00,6/20; B60W20/00; F16H3/00-3/78,48/00-48/30; H02K29/08; H02K49/10; B60L7/10-7/22; B60L9/00; B60L50/50-58/40; F02B43/00; H02J7/00; B62D35/00,35/02; B62K; B61; B61D17/02; B63H9/00; B63H16/00; B63H21/18; B64G1/44; B60K6/28; H02J; H02J9/00; B60L3/00; C09K5/00; F21K99/00; E04B1/62,1/74-1/80,1/88,1/90; E04C1/40,1/41,2/284-2/296; E06B3/263; E04B2/00; E04B5/00; E04B7/00; E04B9/00; F03G7/08; B60K6/10,6/30; A61L11/00; A62D3/00,101/00; G21F9/00; B03B9/06; B09C; D21B1/08,1/32; F23G; A43B1/12,21/14; B22F8/00; C04B7/24-7/30; C04B18/04-18/10; C05F; C08J11/00-11/28; B29B17/00; B62D67/00; C08J11/04-11/28; C10G1/10; C10L5/46,5/48; C22B7/00-7/04,19/30,25/06; D01G11/00; D21C5/02; H01J9/50,9/52; H01M6/52,10/54; B01D53/14,53/22,53/62; B01D53/00-53/96; F01N3/00-3/38; B01D53/92; C21C5/38; C10B21/18; F23G7/06; F01N9/00; B01D45/00-51/00; C21B7/22; C10L10/02,10/06; F23J15/00; C09K3/22; G08B21/12; B63J4/00; C05F7/00; C09K3/32; B63B35/32; E03C1/12; C02F1/00,3/00,9/00; G21C13/10; A01G23/00; A01G25/00; A01N25/00-65/00; C09K17/00; G06Q; E04H1/00; G21; G21B; G21C; G21D'" }, "execution_count": 266, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ipc_codes = \"; \".join(ipc_green[\"IPC\"].drop_duplicates())\n", "ipc_codes" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 267, "outputs": [], "source": [ "chat_gpt_convert = \"\"\"C10L5/00; C10L5/40; C10L5/41; C10L5/42; C10L5/43; C10L5/44; C10L5/45; C10L5/46; C10L5/47; C10L5/48; C10B53/02; C10L1/00; C10L1/02; C10L1/14; C10L1/02; C10L1/19; C07C67/00; C07C69/00; C10L1/02; C10L1/182; C02F3/28; C02F3/11; C02F11/04; C12N1/13; C12N1/15; C12N1/21; C12N5/10; C12N15/00; C10L3/00; H01M4/86; H01M4/87; H01M4/88; H01M4/89; H01M4/90; H01M4/91; H01M4/92; H01M4/93; H01M4/94; H01M4/95; H01M4/96; H01M4/97; H01M4/98; H01M8/00; H01M8/01; H01M8/02; H01M8/03; H01M8/04; H01M8/05; H01M8/06; H01M8/07; H01M8/08; H01M8/09; H01M8/10; H01M8/11; H01M8/12; H01M8/13; H01M8/14; H01M8/15; H01M8/16; H01M8/17; H01M8/18; H01M8/19; H01M8/50; H01M8/51; H01M8/52; H01M8/53; H01M8/54; H01M8/55; H01M8/56; H01M8/57; H01M8/58; H01M12/00; H01M12/01; H01M12/02; H01M12/03; H01M12/04; H01M12/05; H01M12/06; H01M12/07; H01M12/08; C10B53/00; C10L5/00; C10L5/42; C10L5/44; F23G7/00; F23G7/10; C10J3/02; C10J3/03; B09B3/00; C10L5/48; C21B5/06; D21C11/00; A62D3/02; F23G7/00; F23G7/10; B09B3/00; B09B; B01D53/02; B01D53/04; B01D53/047; B01D53/14; B01D53/22; B01D53/24; C10L5/46; E02B9/00; E02B9/01; E02B9/02; E02B9/03; E02B9/04; E02B9/05; E02B9/06; E02B9/08; F03B; F03B13/12; F03B13/13; F03B13/14; F03B13/15; F03B13/16; F03B13/17; F03B13/18; F03B13/19; F03B13/20; F03B13/21; F03B13/22; F03B13/23; F03B13/24; F03B13/25; F03B13/26; F03B15/00; F03B15/01; F03B15/02; F03B15/03; F03B15/04; F03B15/05; F03B15/06; F03B15/07; F03B15/08; F03B15/09; F03B15/10; F03B15/11; F03B15/12; F03B15/13; F03B15/14; F03B15/15; F03B15/16; F03B15/17; F03B15/18; F03B15/19; F03B15/20; F03B15/21; B63H19/02; B63H19/04; F03G7/05; F03D; H02K7/18; B63B35/00; B60K16/00; B60L8/00; B63H13/00; F24S; H01L27/142; H01L27/31; H01L27/31; H01L27/32; H01L27/33; H01L27/34; H01L27/35; H01L27/36; H01L27/37; H01L27/38; H01L27/39; H01L27/40; H01L27/41; H01L27/42; H01L27/43; H01L27/44; H01L27/45; H01L27/46; H01L27/47; H01L27/48; C01B33/02; G05F1/67; F21L4/00; H02J7/35; H01G9/20; F24S; F24D17/00; F24D18/00; F24D3/00; F24D5/00; F24D11/00; F24D19/00; F24S90/00; F03D1/04; F03D1/09; F03D1/13; F03D1/20; C02F1/14; F02C1/05; H01L31/0525; B60K16/00; B60L8/00; F03G6/00; F03G6/01; F03G6/02; F03G6/03; F03G6/04; F03G6/05; F03G6/06; E04D13/00; E04D13/18; F22B1/00; F25B27/00; F26B3/00; F26B3/28; F24S23/00; F24S10/10; F24T; F01K; F03G4/00; F03G4/01; F03G4/02; F03G4/03; F03G4/04; F03G4/05; F03G4/06; F24T10/00; F24T50/00; F24T50/10; F24T50/20; F24T50/30; F24T50/40; F24T50/50; F24D11/02; F24D15/04; F24D17/02; F24D18/00; F24H4/00; F25B30/00; F01K27/00; F01K23/06; F01K23/07; F01K23/08; F01K23/09; F01K23/10; F01K17/00; F01K23/04; F02C6/18; F25B27/02; C02F1/16; D21F5/20; F22B1/02; F23G5/46; F24F12/00; F27D17/00; F28D17/00; F28D18/00; F28D19/00; F28D20/00; C10J3/86; F03G5/00; F03G5/01; F03G5/02; F03G5/03; F03G5/04; F03G5/05; B60K6/00; B60K6/20; B60W20/00; F16H3/00; F16H3/01; F16H3/02; F16H3/03; F16H3/04; F16H3/05; F16H3/06; F16H3/07; F16H3/08; F16H3/09; F16H3/10; F16H3/11; F16H3/12; F16H3/13; F16H3/14; F16H3/15; F16H3/16; F16H3/17; F16H3/18; F16H3/19; F16H3/20; F16H3/21; F16H3/22; F16H3/23; F16H3/24; F16H3/25; F16H3/26; F16H3/27; F16H3/28; F16H3/29; F16H3/30; F16H3/31; F16H3/32; F16H3/33; F16H3/34; F16H3/35; F16H3/36; F16H3/37; F16H3/38; F16H3/48; F16H3/49; F16H3/50; F16H3/51; F16H3/52; F16H3/53; F16H3/54; F16H3/55; F16H3/56; F16H3/57; F16H3/58; H02K29/08; H02K49/10; B60L7/10; B60L7/11; B60L7/12; B60L7/13; B60L7/14; B60L7/15; B60L7/16; B60L7/17; B60L7/18; B60L7/19; B60L7/20; B60L7/21; B60L7/22; B60L8/00; B60L9/00; B60L50/50; B60L50/51; B60L50/52; B60L50/53; B60L50/54; B60L50/55; B60L50/56; B60L50/57; B60L50/58; F02B43/00; B60K16/00; H02J7/00; B62D35/00; B62D35/02; B62K; B61; B61D17/02; B63H9/00; B63H13/00; B63H19/02; B63H19/04; B63H16/00; B63H21/18; B64G1/44; B60K6/28; H02J; H02J9/00; B60L3/00; C09K5/00; F21K99/00; E04B1/62; E04B1/74; E04B1/75; E04B1/76; E04B1/77; E04B1/78; E04B1/79; E04B1/80; E04B1/88; E04B1/90; E06B3/263; E04B2/00; E04B5/00; E04B7/00; E04B9/00; F03G7/08; B60K6/10; B60K6/30; B09B; A61L11/00; A62D3/00; A62D101/00; G21F9/00; B03B9/06; B09C; D21B1/08; D21B1/32; F23G; A43B1/12; A43B21/14; B22F8/00; C04B7/24; C04B7/25; C04B7/26; C04B7/27; C04B7/28; C04B7/29; C04B7/30; C04B18/04; C04B18/05; C04B18/06; C04B18/07; C04B18/08; C04B18/09; C05F; C08J11/00; C08J11/01; C08J11/02; C08J11/03; C08J11/04; C08J11/05; C08J11/06; C08J11/07; C08J11/08; C08J11/09; C08J11/10; C08J11/11; C08J11/12; C08J11/13; C08J11/14; C08J11/15; C08J11/16; C08J11/17; C08J11/18; C08J11/19; C08J11/20; C08J11/21; C08J11/22; C08J11/23; C08J11/24; C08J11/25; C08J11/26; C08J11/27; C08J11/28; C08J11/29; C08J11/30; C08J11/31; C08J11/32; C08J11/33; C08J11/34; C08J11/35; C08J11/36; C08J11/37; C08J11/38; C08J11/39; B29B17/00; B62D67/00; C08J11/04; C08J11/05; C08J11/06; C08J11/07; C08J11/08; C08J11/09; C08J11/10; C08J11/11; C08J11/12; C08J11/13; C08J11/14; C08J11/15; C08J11/16; C08J11/17; C08J11/18; C08J11/19; C08J11/20; C08J11/21; C08J11/22; C08J11/23; C08J11/24; C08J11/25; C08J11/26; C08J11/27; C08J11/28; C08J11/29; C08J11/30; C08J11/31; C08J11/32; C08J11/33; C08J11/34; C08J11/35; C08J11/36; C08J11/37; C08J11/38; C08J11/39; C08J11/40; C08J11/41; C08J11/42; C08J11/43; C08J11/44; C08J11/45; C08J11/46; C08J11/47; C08J11/48; C08J11/49; C08J11/50; C08J11/51; C08J11/52; C08J11/53; C08J11/54; C08J11/55; C08J11/56; C08J11/57; C08J11/58; C08J11/59; C08J11/60; C08J11/61; C08J11/62; C08J11/63; C08J11/64; C08J11/65; C08J11/66; C08J11/67; C08J11/68; C08J11/69; C08J11/70; C08J11/71; C08J11/72; C08J11/73; C08J11/74; C08J11/75; C08J11/76; C08J11/77; C08J11/78; C08J11/79; C08J11/80; C08J11/81; C08J11/82; C08J11/83; C08J11/84; C08J11/85; C08J11/86; C08J11/87; C08J11/88; C08J11/89; C08J11/90; C08J11/91; C08J11/92; C08J11/93; C08J11/94; C08J11/95; C08J11/96; C08J11/97; C08J11/98; C08J11/99; C10G1/10; C10L5/46; C10L5/48; C22B7/00; C22B7/01; C22B7/02; C22B7/03; C22B7/04; C22B7/19; C22B7/30; C22B7/25; C22B7/06; D01G11/00; D21C5/02; H01J9/50; H01J9/52; H01M6/52; H01M10/54; B01D53/14; B01D53/22; B01D53/62; B01D53/92; C21C5/38; C10B21/18; F23G7/06; F01N9/00; B01D45/00; B01D45/01; B01D45/02; B01D45/03; B01D45/04; B01D45/05; B01D45/06; B01D45/07; B01D45/08; B01D45/09; B01D45/10; B01D45/11; B01D45/12; B01D45/13; B01D45/14; B01D45/15; B01D45/16; B01D45/17; B01D45/18; B01D45/19; B01D45/20; B01D45/21; B01D45/22; B01D45/23; B01D45/24; B01D45/25; B01D45/26; B01D45/27; B01D45/28; B01D45/29; B01D45/30; B01D45/31; B01D45/32; B01D45/33; B01D45/34; B01D45/35; B01D45/36; B01D45/37; B01D45/38; B01D45/39; B01D45/40; B01D45/41; B01D45/42; B01D45/43; B01D45/44; B01D45/45; B01D45/46; B01D45/47; B01D45/48; B01D45/49; B01D45/50; B01D45/51; B01D45/52; B01D45/53; B01D45/54; B01D45/55; B01D45/56; B01D45/57; B01D45/58; B01D45/59; B01D45/60; B01D45/61; B01D45/62; B01D45/63; B01D45/64; B01D45/65; B01D45/66; B01D45/67; B01D45/68; B01D45/69; B01D45/70; B01D45/71; B01D45/72; B01D45/73; B01D45/74; B01D45/75; B01D45/76; B01D45/77; B01D45/78; B01D45/79; B01D45/80; B01D45/81; B01D45/82; B01D45/83; B01D45/84; B01D45/85; B01D45/86; B01D45/87; B01D45/88; B01D45/89; B01D45/90; B01D45/91; B01D45/92; B01D45/93; B01D45/94; B01D45/95; B01D45/96; B01D45/97; B01D45/98; B01D45/99; C21B7/22; C10L10/02; C10L10/06; F23J15/00; C09K3/22; G08B21/12; B63J4/00; C05F7/00; C09K3/32; B63B35/32; E03C1/12; C02F1/00; C02F3/00; C02F9/00; G21C13/10; A01G23/00; A01G25/00; A01N25/00; A01N25/01; A01N25/02; A01N25/03; A01N25/04; A01N25/05; A01N25/06; A01N25/07; A01N25/08; A01N25/09; A01N25/10; A01N25/11; A01N25/12; A01N25/13; A01N25/14; A01N25/15; A01N25/16; A01N25/17; A01N25/18; A01N25/19; A01N25/20; A01N25/21; A01N25/22; A01N25/23; A01N25/24; A01N25/25; A01N25/26; A01N25/27; A01N25/28; A01N25/29; A01N25/30; A01N25/31; A01N25/32; A01N25/33; A01N25/34; A01N25/35; A01N25/36; A01N25/37; A01N25/38; A01N25/39; A01N25/40; A01N25/41; A01N25/42; A01N25/43; A01N25/44; A01N25/45; A01N25/46; A01N25/47; A01N25/48; A01N25/49; A01N25/50; A01N25/51; A01N25/52; A01N25/53; A01N25/54; A01N25/55; A01N25/56; A01N25/57; A01N25/58; A01N25/59; A01N25/60; A01N25/61; A01N25/62; A01N25/63; A01N25/64; A01N25/65; A01N25/66; A01N25/67; A01N25/68; A01N25/69; A01N25/70; A01N25/71; A01N25/72; A01N25/73; A01N25/74; A01N25/75; A01N25/76; A01N25/77; A01N25/78; A01N25/79; A01N25/80; A01N25/81; A01N25/82; A01N25/83; A01N25/84; A01N25/85; A01N25/86; A01N25/87; A01N25/88; A01N25/89; A01N25/90; A01N25/91; A01N25/92; A01N25/93; A01N25/94; A01N25/95; A01N25/96; A01N25/97; A01N25/98; A01N25/99; C09K17/00; C05F; G06Q; E04H1/00; G21; G21B; G21C; G21D; F02C1/05\"\"\"" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 268, "outputs": [ { "data": { "text/plain": "'C10L5/00|C10L5/40|C10L5/41|C10L5/42|C10L5/43|C10L5/44|C10L5/45|C10L5/46|C10L5/47|C10L5/48|C10B53/02|C10L1/00|C10L1/02|C10L1/14|C10L1/02|C10L1/19|C07C67/00|C07C69/00|C10L1/02|C10L1/182|C02F3/28|C02F3/11|C02F11/04|C12N1/13|C12N1/15|C12N1/21|C12N5/10|C12N15/00|C10L3/00|H01M4/86|H01M4/87|H01M4/88|H01M4/89|H01M4/90|H01M4/91|H01M4/92|H01M4/93|H01M4/94|H01M4/95|H01M4/96|H01M4/97|H01M4/98|H01M8/00|H01M8/01|H01M8/02|H01M8/03|H01M8/04|H01M8/05|H01M8/06|H01M8/07|H01M8/08|H01M8/09|H01M8/10|H01M8/11|H01M8/12|H01M8/13|H01M8/14|H01M8/15|H01M8/16|H01M8/17|H01M8/18|H01M8/19|H01M8/50|H01M8/51|H01M8/52|H01M8/53|H01M8/54|H01M8/55|H01M8/56|H01M8/57|H01M8/58|H01M12/00|H01M12/01|H01M12/02|H01M12/03|H01M12/04|H01M12/05|H01M12/06|H01M12/07|H01M12/08|C10B53/00|C10L5/00|C10L5/42|C10L5/44|F23G7/00|F23G7/10|C10J3/02|C10J3/03|B09B3/00|C10L5/48|C21B5/06|D21C11/00|A62D3/02|F23G7/00|F23G7/10|B09B3/00|B09B|B01D53/02|B01D53/04|B01D53/047|B01D53/14|B01D53/22|B01D53/24|C10L5/46|E02B9/00|E02B9/01|E02B9/02|E02B9/03|E02B9/04|E02B9/05|E02B9/06|E02B9/08|F03B|F03B13/12|F03B13/13|F03B13/14|F03B13/15|F03B13/16|F03B13/17|F03B13/18|F03B13/19|F03B13/20|F03B13/21|F03B13/22|F03B13/23|F03B13/24|F03B13/25|F03B13/26|F03B15/00|F03B15/01|F03B15/02|F03B15/03|F03B15/04|F03B15/05|F03B15/06|F03B15/07|F03B15/08|F03B15/09|F03B15/10|F03B15/11|F03B15/12|F03B15/13|F03B15/14|F03B15/15|F03B15/16|F03B15/17|F03B15/18|F03B15/19|F03B15/20|F03B15/21|B63H19/02|B63H19/04|F03G7/05|F03D|H02K7/18|B63B35/00|B60K16/00|B60L8/00|B63H13/00|F24S|H01L27/142|H01L27/31|H01L27/31|H01L27/32|H01L27/33|H01L27/34|H01L27/35|H01L27/36|H01L27/37|H01L27/38|H01L27/39|H01L27/40|H01L27/41|H01L27/42|H01L27/43|H01L27/44|H01L27/45|H01L27/46|H01L27/47|H01L27/48|C01B33/02|G05F1/67|F21L4/00|H02J7/35|H01G9/20|F24S|F24D17/00|F24D18/00|F24D3/00|F24D5/00|F24D11/00|F24D19/00|F24S90/00|F03D1/04|F03D1/09|F03D1/13|F03D1/20|C02F1/14|F02C1/05|H01L31/0525|B60K16/00|B60L8/00|F03G6/00|F03G6/01|F03G6/02|F03G6/03|F03G6/04|F03G6/05|F03G6/06|E04D13/00|E04D13/18|F22B1/00|F25B27/00|F26B3/00|F26B3/28|F24S23/00|F24S10/10|F24T|F01K|F03G4/00|F03G4/01|F03G4/02|F03G4/03|F03G4/04|F03G4/05|F03G4/06|F24T10/00|F24T50/00|F24T50/10|F24T50/20|F24T50/30|F24T50/40|F24T50/50|F24D11/02|F24D15/04|F24D17/02|F24D18/00|F24H4/00|F25B30/00|F01K27/00|F01K23/06|F01K23/07|F01K23/08|F01K23/09|F01K23/10|F01K17/00|F01K23/04|F02C6/18|F25B27/02|C02F1/16|D21F5/20|F22B1/02|F23G5/46|F24F12/00|F27D17/00|F28D17/00|F28D18/00|F28D19/00|F28D20/00|C10J3/86|F03G5/00|F03G5/01|F03G5/02|F03G5/03|F03G5/04|F03G5/05|B60K6/00|B60K6/20|B60W20/00|F16H3/00|F16H3/01|F16H3/02|F16H3/03|F16H3/04|F16H3/05|F16H3/06|F16H3/07|F16H3/08|F16H3/09|F16H3/10|F16H3/11|F16H3/12|F16H3/13|F16H3/14|F16H3/15|F16H3/16|F16H3/17|F16H3/18|F16H3/19|F16H3/20|F16H3/21|F16H3/22|F16H3/23|F16H3/24|F16H3/25|F16H3/26|F16H3/27|F16H3/28|F16H3/29|F16H3/30|F16H3/31|F16H3/32|F16H3/33|F16H3/34|F16H3/35|F16H3/36|F16H3/37|F16H3/38|F16H3/48|F16H3/49|F16H3/50|F16H3/51|F16H3/52|F16H3/53|F16H3/54|F16H3/55|F16H3/56|F16H3/57|F16H3/58|H02K29/08|H02K49/10|B60L7/10|B60L7/11|B60L7/12|B60L7/13|B60L7/14|B60L7/15|B60L7/16|B60L7/17|B60L7/18|B60L7/19|B60L7/20|B60L7/21|B60L7/22|B60L8/00|B60L9/00|B60L50/50|B60L50/51|B60L50/52|B60L50/53|B60L50/54|B60L50/55|B60L50/56|B60L50/57|B60L50/58|F02B43/00|B60K16/00|H02J7/00|B62D35/00|B62D35/02|B62K|B61|B61D17/02|B63H9/00|B63H13/00|B63H19/02|B63H19/04|B63H16/00|B63H21/18|B64G1/44|B60K6/28|H02J|H02J9/00|B60L3/00|C09K5/00|F21K99/00|E04B1/62|E04B1/74|E04B1/75|E04B1/76|E04B1/77|E04B1/78|E04B1/79|E04B1/80|E04B1/88|E04B1/90|E06B3/263|E04B2/00|E04B5/00|E04B7/00|E04B9/00|F03G7/08|B60K6/10|B60K6/30|B09B|A61L11/00|A62D3/00|A62D101/00|G21F9/00|B03B9/06|B09C|D21B1/08|D21B1/32|F23G|A43B1/12|A43B21/14|B22F8/00|C04B7/24|C04B7/25|C04B7/26|C04B7/27|C04B7/28|C04B7/29|C04B7/30|C04B18/04|C04B18/05|C04B18/06|C04B18/07|C04B18/08|C04B18/09|C05F|C08J11/00|C08J11/01|C08J11/02|C08J11/03|C08J11/04|C08J11/05|C08J11/06|C08J11/07|C08J11/08|C08J11/09|C08J11/10|C08J11/11|C08J11/12|C08J11/13|C08J11/14|C08J11/15|C08J11/16|C08J11/17|C08J11/18|C08J11/19|C08J11/20|C08J11/21|C08J11/22|C08J11/23|C08J11/24|C08J11/25|C08J11/26|C08J11/27|C08J11/28|C08J11/29|C08J11/30|C08J11/31|C08J11/32|C08J11/33|C08J11/34|C08J11/35|C08J11/36|C08J11/37|C08J11/38|C08J11/39|B29B17/00|B62D67/00|C08J11/04|C08J11/05|C08J11/06|C08J11/07|C08J11/08|C08J11/09|C08J11/10|C08J11/11|C08J11/12|C08J11/13|C08J11/14|C08J11/15|C08J11/16|C08J11/17|C08J11/18|C08J11/19|C08J11/20|C08J11/21|C08J11/22|C08J11/23|C08J11/24|C08J11/25|C08J11/26|C08J11/27|C08J11/28|C08J11/29|C08J11/30|C08J11/31|C08J11/32|C08J11/33|C08J11/34|C08J11/35|C08J11/36|C08J11/37|C08J11/38|C08J11/39|C08J11/40|C08J11/41|C08J11/42|C08J11/43|C08J11/44|C08J11/45|C08J11/46|C08J11/47|C08J11/48|C08J11/49|C08J11/50|C08J11/51|C08J11/52|C08J11/53|C08J11/54|C08J11/55|C08J11/56|C08J11/57|C08J11/58|C08J11/59|C08J11/60|C08J11/61|C08J11/62|C08J11/63|C08J11/64|C08J11/65|C08J11/66|C08J11/67|C08J11/68|C08J11/69|C08J11/70|C08J11/71|C08J11/72|C08J11/73|C08J11/74|C08J11/75|C08J11/76|C08J11/77|C08J11/78|C08J11/79|C08J11/80|C08J11/81|C08J11/82|C08J11/83|C08J11/84|C08J11/85|C08J11/86|C08J11/87|C08J11/88|C08J11/89|C08J11/90|C08J11/91|C08J11/92|C08J11/93|C08J11/94|C08J11/95|C08J11/96|C08J11/97|C08J11/98|C08J11/99|C10G1/10|C10L5/46|C10L5/48|C22B7/00|C22B7/01|C22B7/02|C22B7/03|C22B7/04|C22B7/19|C22B7/30|C22B7/25|C22B7/06|D01G11/00|D21C5/02|H01J9/50|H01J9/52|H01M6/52|H01M10/54|B01D53/14|B01D53/22|B01D53/62|B01D53/92|C21C5/38|C10B21/18|F23G7/06|F01N9/00|B01D45/00|B01D45/01|B01D45/02|B01D45/03|B01D45/04|B01D45/05|B01D45/06|B01D45/07|B01D45/08|B01D45/09|B01D45/10|B01D45/11|B01D45/12|B01D45/13|B01D45/14|B01D45/15|B01D45/16|B01D45/17|B01D45/18|B01D45/19|B01D45/20|B01D45/21|B01D45/22|B01D45/23|B01D45/24|B01D45/25|B01D45/26|B01D45/27|B01D45/28|B01D45/29|B01D45/30|B01D45/31|B01D45/32|B01D45/33|B01D45/34|B01D45/35|B01D45/36|B01D45/37|B01D45/38|B01D45/39|B01D45/40|B01D45/41|B01D45/42|B01D45/43|B01D45/44|B01D45/45|B01D45/46|B01D45/47|B01D45/48|B01D45/49|B01D45/50|B01D45/51|B01D45/52|B01D45/53|B01D45/54|B01D45/55|B01D45/56|B01D45/57|B01D45/58|B01D45/59|B01D45/60|B01D45/61|B01D45/62|B01D45/63|B01D45/64|B01D45/65|B01D45/66|B01D45/67|B01D45/68|B01D45/69|B01D45/70|B01D45/71|B01D45/72|B01D45/73|B01D45/74|B01D45/75|B01D45/76|B01D45/77|B01D45/78|B01D45/79|B01D45/80|B01D45/81|B01D45/82|B01D45/83|B01D45/84|B01D45/85|B01D45/86|B01D45/87|B01D45/88|B01D45/89|B01D45/90|B01D45/91|B01D45/92|B01D45/93|B01D45/94|B01D45/95|B01D45/96|B01D45/97|B01D45/98|B01D45/99|C21B7/22|C10L10/02|C10L10/06|F23J15/00|C09K3/22|G08B21/12|B63J4/00|C05F7/00|C09K3/32|B63B35/32|E03C1/12|C02F1/00|C02F3/00|C02F9/00|G21C13/10|A01G23/00|A01G25/00|A01N25/00|A01N25/01|A01N25/02|A01N25/03|A01N25/04|A01N25/05|A01N25/06|A01N25/07|A01N25/08|A01N25/09|A01N25/10|A01N25/11|A01N25/12|A01N25/13|A01N25/14|A01N25/15|A01N25/16|A01N25/17|A01N25/18|A01N25/19|A01N25/20|A01N25/21|A01N25/22|A01N25/23|A01N25/24|A01N25/25|A01N25/26|A01N25/27|A01N25/28|A01N25/29|A01N25/30|A01N25/31|A01N25/32|A01N25/33|A01N25/34|A01N25/35|A01N25/36|A01N25/37|A01N25/38|A01N25/39|A01N25/40|A01N25/41|A01N25/42|A01N25/43|A01N25/44|A01N25/45|A01N25/46|A01N25/47|A01N25/48|A01N25/49|A01N25/50|A01N25/51|A01N25/52|A01N25/53|A01N25/54|A01N25/55|A01N25/56|A01N25/57|A01N25/58|A01N25/59|A01N25/60|A01N25/61|A01N25/62|A01N25/63|A01N25/64|A01N25/65|A01N25/66|A01N25/67|A01N25/68|A01N25/69|A01N25/70|A01N25/71|A01N25/72|A01N25/73|A01N25/74|A01N25/75|A01N25/76|A01N25/77|A01N25/78|A01N25/79|A01N25/80|A01N25/81|A01N25/82|A01N25/83|A01N25/84|A01N25/85|A01N25/86|A01N25/87|A01N25/88|A01N25/89|A01N25/90|A01N25/91|A01N25/92|A01N25/93|A01N25/94|A01N25/95|A01N25/96|A01N25/97|A01N25/98|A01N25/99|C09K17/00|C05F|G06Q|E04H1/00|G21|G21B|G21C|G21D|F02C1/05'" }, "execution_count": 268, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tokens = \"|\".join(chat_gpt_convert.split('; '))\n", "tokens" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 269, "outputs": [], "source": [ "ipc_green_codes_csv = pd.read_excel(f'{fromdir}/IPC_green_codes.xlsx')\n", "ipc_green_codes_csv.columns=[\"IPC_code\",\"name\"]\n", "ipc_green_codes_csv\n", "\n", "eu_tokens=\"solar energy|wind|hydrogen|biofuel|biogas|bioethanol|carbon capture|heat pump\"\n", "eu_ipc_green_codes_csv = ipc_green_codes_csv[ipc_green_codes_csv[\"name\"].str.lower().str.contains(eu_tokens)]" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 270, "outputs": [ { "data": { "text/plain": "'A01G23/00|A01G25/00|A01H|A01N25/00|A01N25/02|A01N25/04|A01N25/06|A01N25/08|A01N25/10|A01N25/12|A01N25/14|A01N25/16|A01N25/18|A01N25/20|A01N25/22|A01N25/24|A01N25/26|A01N25/28|A01N25/30|A01N25/32|A01N25/34|A01N27/00|A01N29/00|A01N29/02|A01N29/04|A01N29/06|A01N29/08|A01N29/10|A01N29/12|A01N31/00|A01N31/02|A01N31/04|A01N31/06|A01N31/08|A01N31/10|A01N31/12|A01N31/14|A01N31/16|A01N33/00|A01N33/02|A01N33/04|A01N33/06|A01N33/08|A01N33/10|A01N33/12|A01N33/14|A01N33/16|A01N33/18|A01N33/20|A01N33/22|A01N33/24|A01N33/26|A01N35/00|A01N35/02|A01N35/04|A01N35/06|A01N35/08|A01N35/10|A01N37/00|A01N37/02|A01N37/04|A01N37/06|A01N37/08|A01N37/10|A01N37/12|A01N37/14|A01N37/16|A01N37/18|A01N37/20|A01N37/22|A01N37/24|A01N37/26|A01N37/28|A01N37/30|A01N37/32|A01N37/34|A01N37/36|A01N37/38|A01N37/40|A01N37/42|A01N37/44|A01N37/46|A01N37/48|A01N37/50|A01N37/52|A01N39/00|A01N39/02|A01N39/04|A01N41/00|A01N41/02|A01N41/04|A01N41/06|A01N41/08|A01N41/10|A01N41/12|A01N43/00|A01N43/02|A01N43/04|A01N43/06|A01N43/08|A01N43/10|A01N43/12|A01N43/14|A01N43/16|A01N43/18|A01N43/20|A01N43/22|A01N43/24|A01N43/26|A01N43/28|A01N43/30|A01N43/32|A01N43/34|A01N43/36|A01N43/38|A01N43/40|A01N43/42|A01N43/44|A01N43/46|A01N43/48|A01N43/50|A01N43/52|A01N43/54|A01N43/56|A01N43/58|A01N43/60|A01N43/62|A01N43/64|A01N43/647|A01N43/653|A01N43/66|A01N43/68|A01N43/70|A01N43/707|A01N43/713|A01N43/72|A01N43/74|A01N43/76|A01N43/78|A01N43/80|A01N43/82|A01N43/824|A01N43/828|A01N43/832|A01N43/836|A01N43/84|A01N43/86|A01N43/88|A01N43/90|A01N43/92|A01N45/00|A01N45/02|A01N47/00|A01N47/02|A01N47/04|A01N47/06|A01N47/08|A01N47/10|A01N47/12|A01N47/14|A01N47/16|A01N47/18|A01N47/20|A01N47/22|A01N47/24|A01N47/26|A01N47/28|A01N47/30|A01N47/32|A01N47/34|A01N47/36|A01N47/38|A01N47/40|A01N47/42|A01N47/44|A01N47/46|A01N47/48|A01N49/00|A01N51/00|A01N53/00|A01N53/02|A01N53/04|A01N53/06|A01N53/08|A01N53/10|A01N53/12|A01N53/14|A01N55/00|A01N55/02|A01N55/04|A01N55/06|A01N55/08|A01N55/10|A01N57/00|A01N57/02|A01N57/04|A01N57/06|A01N57/08|A01N57/10|A01N57/12|A01N57/14|A01N57/16|A01N57/18|A01N57/20|A01N57/22|A01N57/24|A01N57/26|A01N57/28|A01N57/30|A01N57/32|A01N57/34|A01N57/36|A01N59/00|A01N59/02|A01N59/04|A01N59/06|A01N59/08|A01N59/10|A01N59/12|A01N59/14|A01N59/16|A01N59/18|A01N59/20|A01N59/22|A01N59/24|A01N59/26|A01N61/00|A01N61/02|A01N63/00|A01N63/02|A01N63/04|A01N63/10|A01N63/12|A01N63/14|A01N63/16|A01N63/20|A01N63/22|A01N63/23|A01N63/25|A01N63/27|A01N63/28|A01N63/30|A01N63/32|A01N63/34|A01N63/36|A01N63/38|A01N63/40|A01N63/50|A01N63/60|A01N65/00|A43B1/12|A43B21/14|A61L11/00|A62D101/00|A62D3/00|A62D3/02|B01D45/00|B01D45/02|B01D45/04|B01D45/06|B01D45/08|B01D45/10|B01D45/12|B01D45/14|B01D45/16|B01D45/18|B01D46/00|B01D46/02|B01D46/04|B01D46/06|B01D46/08|B01D46/10|B01D46/12|B01D46/14|B01D46/16|B01D46/18|B01D46/20|B01D46/22|B01D46/24|B01D46/26|B01D46/28|B01D46/30|B01D46/32|B01D46/34|B01D46/36|B01D46/38|B01D46/40|B01D46/42|B01D46/44|B01D46/46|B01D46/48|B01D46/50|B01D46/52|B01D46/54|B01D47/00|B01D47/02|B01D47/04|B01D47/05|B01D47/06|B01D47/08|B01D47/10|B01D47/12|B01D47/14|B01D47/16|B01D47/18|B01D49/00|B01D49/02|B01D50/00|B01D51/00|B01D53/00|B01D53/02|B01D53/04|B01D53/047|B01D53/053|B01D53/06|B01D53/08|B01D53/10|B01D53/12|B01D53/14|B01D53/18|B01D53/22|B01D53/24|B01D53/26|B01D53/28|B01D53/30|B01D53/32|B01D53/34|B01D53/38|B01D53/40|B01D53/42|B01D53/44|B01D53/46|B01D53/48|B01D53/50|B01D53/52|B01D53/54|B01D53/56|B01D53/58|B01D53/60|B01D53/62|B01D53/64|B01D53/66|B01D53/68|B01D53/70|B01D53/72|B01D53/73|B01D53/74|B01D53/75|B01D53/76|B01D53/77|B01D53/78|B01D53/79|B01D53/80|B01D53/81|B01D53/82|B01D53/83|B01D53/84|B01D53/85|B01D53/86|B01D53/88|B01D53/90|B01D53/92|B01D53/94|B01D53/96|B03B9/06|B03C3/00|B09B|B09B3/00|B09C|B22F8/00|B29B17/00|B60K16/00|B60K6/00|B60K6/10|B60K6/20|B60K6/28|B60K6/30|B60L3/00|B60L50/30|B60L50/50|B60L50/51|B60L50/52|B60L50/53|B60L50/60|B60L50/61|B60L50/62|B60L50/64|B60L50/70|B60L50/71|B60L50/72|B60L50/75|B60L50/90|B60L53/00|B60L53/10|B60L53/12|B60L53/122|B60L53/124|B60L53/126|B60L53/14|B60L53/16|B60L53/18|B60L53/20|B60L53/22|B60L53/24|B60L53/30|B60L53/302|B60L53/31|B60L53/34|B60L53/35|B60L53/36|B60L53/37|B60L53/38|B60L53/39|B60L53/50|B60L53/51|B60L53/52|B60L53/53|B60L53/54|B60L53/55|B60L53/56|B60L53/57|B60L53/60|B60L53/62|B60L53/63|B60L53/64|B60L53/65|B60L53/66|B60L53/67|B60L53/68|B60L53/80|B60L55/00|B60L58/00|B60L58/10|B60L58/12|B60L58/13|B60L58/14|B60L58/15|B60L58/16|B60L58/18|B60L58/19|B60L58/20|B60L58/21|B60L58/22|B60L58/24|B60L58/25|B60L58/26|B60L58/27|B60L58/30|B60L58/31|B60L58/32|B60L58/33|B60L58/34|B60L58/40|B60L7/10|B60L7/12|B60L7/14|B60L7/16|B60L7/18|B60L7/20|B60L7/22|B60L8/00|B60L9/00|B60W10/26|B60W20/00|B61|B61D17/02|B62D35/00|B62D35/02|B62D67/00|B62K|B62M1/00|B62M3/00|B62M5/00|B62M6/00|B63B1/34|B63B1/36|B63B1/38|B63B1/40|B63B35/00|B63B35/32|B63H13/00|B63H16/00|B63H19/02|B63H19/04|B63H21/18|B63H9/00|B63J4/00|B64G1/44|B65F|B65G5/00|C01B32/50|C01B33/02|C02F|C02F1/00|C02F1/14|C02F1/16|C02F11/04|C02F11/14|C02F3/00|C02F3/28|C02F9/00|C04B18/04|C04B18/06|C04B18/08|C04B18/10|C04B7/24|C04B7/26|C04B7/28|C04B7/30|C05F|C05F7/00|C07C67/00|C07C69/00|C08J11/00|C08J11/02|C08J11/04|C08J11/06|C08J11/08|C08J11/10|C08J11/12|C08J11/14|C08J11/16|C08J11/18|C08J11/20|C08J11/22|C08J11/24|C08J11/26|C08J11/28|C09K11/01|C09K17/00|C09K3/22|C09K3/32|C09K5/00|C10B21/18|C10B53/00|C10B53/02|C10G|C10G1/10|C10J|C10J3/02|C10J3/46|C10J3/86|C10L1/00|C10L1/02|C10L1/14|C10L1/182|C10L1/19|C10L10/02|C10L10/06|C10L3/00|C10L5/00|C10L5/40|C10L5/42|C10L5/44|C10L5/46|C10L5/48|C10L9/00|C11B11/00|C11B13/00|C11B13/02|C11B13/04|C11C3/10|C12M1/107|C12N1/13|C12N1/15|C12N1/21|C12N15/00|C12N5/10|C12N9/24|C12P5/02|C12P7/06|C12P7/08|C12P7/10|C12P7/12|C12P7/14|C12P7/649|C14C3/32|C21B3/04|C21B5/06|C21B7/22|C21C5/38|C22B19/30|C22B25/06|C22B7/00|C22B7/02|C22B7/04|C23C14/14|C23C16/24|C25C1/00|C30B29/06|D01F13/00|D01F13/02|D01F13/04|D01G11/00|D21B1/08|D21B1/32|D21C11/00|D21C5/02|D21F5/20|E02B15/04|E02B9/00|E02B9/02|E02B9/04|E02B9/06|E02B9/08|E02D3/00|E03C1/12|E03F|E04B1/62|E04B1/74|E04B1/76|E04B1/78|E04B1/80|E04B1/88|E04B1/90|E04B2/00|E04B5/00|E04B7/00|E04B9/00|E04C1/40|E04C1/41|E04C2/284|E04C2/288|E04C2/292|E04C2/296|E04D1/28|E04D13/00|E04D13/16|E04D13/18|E04D3/35|E04F13/08|E04F15/18|E04H1/00|E04H12/00|E06B3/263|E21B41/00|E21B43/16|E21F17/16|F01K|F01K17/00|F01K23/04|F01K23/06|F01K23/08|F01K23/10|F01K27/00|F01N3/00|F01N3/01|F01N3/02|F01N3/021|F01N3/022|F01N3/023|F01N3/025|F01N3/027|F01N3/028|F01N3/029|F01N3/031|F01N3/032|F01N3/033|F01N3/035|F01N3/037|F01N3/038|F01N3/04|F01N3/05|F01N3/06|F01N3/08|F01N3/10|F01N3/18|F01N3/20|F01N3/22|F01N3/24|F01N3/26|F01N3/28|F01N3/30|F01N3/32|F01N3/34|F01N3/36|F01N3/38|F01N5/00|F01N9/00|F02B43/00|F02B75/10|F02C1/05|F02C3/28|F02C6/18|F02G5/00|F02G5/02|F02G5/04|F02M21/02|F02M27/02|F03B|F03B13/12|F03B13/14|F03B13/16|F03B13/18|F03B13/20|F03B13/22|F03B13/24|F03B13/26|F03B15/00|F03B15/02|F03B15/04|F03B15/06|F03B15/08|F03B15/10|F03B15/12|F03B15/14|F03B15/16|F03B15/18|F03B15/20|F03B15/22|F03C|F03D|F03D1/04|F03D13/00|F03D13/20|F03D9/00|F03G4/00|F03G4/02|F03G4/04|F03G4/06|F03G5/00|F03G5/02|F03G5/04|F03G5/06|F03G5/08|F03G6/00|F03G6/02|F03G6/04|F03G6/06|F03G7/04|F03G7/05|F03G7/08|F16H3/00|F16H3/02|F16H3/04|F16H3/06|F16H3/08|F16H3/083|F16H3/085|F16H3/087|F16H3/089|F16H3/091|F16H3/093|F16H3/095|F16H3/097|F16H3/10|F16H3/12|F16H3/14|F16H3/16|F16H3/18|F16H3/20|F16H3/22|F16H3/24|F16H3/26|F16H3/28|F16H3/30|F16H3/32|F16H3/34|F16H3/36|F16H3/38|F16H3/40|F16H3/42|F16H3/44|F16H3/46|F16H3/48|F16H3/50|F16H3/52|F16H3/54|F16H3/56|F16H3/58|F16H3/60|F16H3/62|F16H3/64|F16H3/66|F16H3/68|F16H3/70|F16H3/72|F16H3/74|F16H3/76|F16H3/78|F16H48/00|F16H48/02|F16H48/04|F16H48/05|F16H48/06|F16H48/08|F16H48/10|F16H48/11|F16H48/12|F16H48/14|F16H48/16|F16H48/18|F16H48/19|F16H48/20|F16H48/22|F16H48/24|F16H48/26|F16H48/27|F16H48/28|F16H48/285|F16H48/29|F16H48/295|F16H48/30|F21K99/00|F21L4/00|F21L4/02|F21S9/03|F22B1/00|F22B1/02|F23B80/02|F23B90/00|F23C9/00|F23G|F23G5/00|F23G5/027|F23G5/46|F23G7/00|F23G7/06|F23G7/10|F23J15/00|F23J7/00|F24D11/00|F24D11/02|F24D15/04|F24D17/00|F24D17/02|F24D18/00|F24D19/00|F24D3/00|F24D5/00|F24F12/00|F24F5/00|F24H4/00|F24H7/00|F24S|F24S10/10|F24S23/00|F24S90/00|F24T|F24T10/00|F24T10/10|F24T10/13|F24T10/15|F24T10/17|F24T10/20|F24T10/30|F24T10/40|F24T50/00|F24V30/00|F24V40/00|F24V40/10|F24V50/00|F25B27/00|F25B27/02|F25B30/00|F25B30/06|F25J3/02|F26B3/00|F26B3/28|F27B1/18|F27B15/12|F27D17/00|F28D17/00|F28D17/02|F28D17/04|F28D19/00|F28D19/02|F28D19/04|F28D20/00|F28D20/02|G01R|G02B7/183|G05F1/67|G06Q|G08B21/12|G08G|G21|G21B|G21C|G21C13/10|G21D|G21F9/00|H01G11/00|H01G9/20|H01J9/50|H01J9/52|H01L25/00|H01L25/03|H01L25/16|H01L25/18|H01L27/142|H01L27/30|H01L31/00|H01L31/02|H01L31/0203|H01L31/0216|H01L31/0224|H01L31/0232|H01L31/0236|H01L31/024|H01L31/0248|H01L31/0256|H01L31/0264|H01L31/0272|H01L31/028|H01L31/0288|H01L31/0296|H01L31/0304|H01L31/0312|H01L31/032|H01L31/0328|H01L31/0336|H01L31/0352|H01L31/036|H01L31/0368|H01L31/0376|H01L31/0384|H01L31/0392|H01L31/04|H01L31/041|H01L31/042|H01L31/043|H01L31/044|H01L31/0443|H01L31/0445|H01L31/045|H01L31/046|H01L31/0463|H01L31/0465|H01L31/0468|H01L31/047|H01L31/0475|H01L31/048|H01L31/049|H01L31/05|H01L31/052|H01L31/0525|H01L31/053|H01L31/054|H01L31/055|H01L31/056|H01L31/058|H01L31/06|H01L31/061|H01L31/062|H01L31/065|H01L31/068|H01L31/0687|H01L31/0693|H01L31/07|H01L31/072|H01L31/0725|H01L31/073|H01L31/0735|H01L31/074|H01L31/0745|H01L31/0747|H01L31/0749|H01L31/075|H01L31/076|H01L31/077|H01L31/078|H01L33/00|H01L33/02|H01L33/04|H01L33/06|H01L33/08|H01L33/10|H01L33/12|H01L33/14|H01L33/16|H01L33/18|H01L33/20|H01L33/22|H01L33/24|H01L33/26|H01L33/28|H01L33/30|H01L33/32|H01L33/34|H01L33/36|H01L33/38|H01L33/40|H01L33/42|H01L33/44|H01L33/46|H01L33/48|H01L33/50|H01L33/52|H01L33/54|H01L33/56|H01L33/58|H01L33/60|H01L33/62|H01L33/64|H01L51/42|H01L51/44|H01L51/46|H01L51/48|H01L51/50|H01M10/44|H01M10/46|H01M10/54|H01M12/00|H01M12/02|H01M12/04|H01M12/06|H01M12/08|H01M14/00|H01M4/86|H01M4/88|H01M4/90|H01M4/92|H01M4/94|H01M4/96|H01M4/98|H01M50/00|H01M50/10|H01M50/102|H01M50/103|H01M50/105|H01M50/107|H01M50/109|H01M50/11|H01M50/112|H01M50/114|H01M50/116|H01M50/117|H01M50/119|H01M50/121|H01M50/122|H01M50/124|H01M50/126|H01M50/128|H01M50/129|H01M50/131|H01M50/133|H01M50/134|H01M50/136|H01M50/138|H01M50/14|H01M50/141|H01M50/143|H01M50/145|H01M50/147|H01M50/148|H01M50/15|H01M50/152|H01M50/153|H01M50/155|H01M50/157|H01M50/159|H01M50/16|H01M50/162|H01M50/164|H01M50/166|H01M50/167|H01M50/169|H01M50/171|H01M6/52|H01M8/00|H01M8/008|H01M8/02|H01M8/0202|H01M8/0204|H01M8/0206|H01M8/0208|H01M8/021|H01M8/0213|H01M8/0215|H01M8/0217|H01M8/0221|H01M8/0223|H01M8/0226|H01M8/0228|H01M8/023|H01M8/0232|H01M8/0234|H01M8/0236|H01M8/0239|H01M8/0241|H01M8/0243|H01M8/0245|H01M8/0247|H01M8/025|H01M8/0252|H01M8/0254|H01M8/0256|H01M8/0258|H01M8/026|H01M8/0263|H01M8/0265|H01M8/0267|H01M8/0271|H01M8/0273|H01M8/0276|H01M8/028|H01M8/0282|H01M8/0284|H01M8/0286|H01M8/0289|H01M8/0293|H01M8/0295|H01M8/0297|H01M8/04|H01M8/04007|H01M8/04014|H01M8/04029|H01M8/04044|H01M8/04082|H01M8/04089|H01M8/04111|H01M8/04119|H01M8/04186|H01M8/04223|H01M8/04225|H01M8/04228|H01M8/04276|H01M8/04291|H01M8/04298|H01M8/043|H01M8/04302|H01M8/04303|H01M8/04313|H01M8/0432|H01M8/0438|H01M8/0444|H01M8/04492|H01M8/04537|H01M8/04664|H01M8/04694|H01M8/04701|H01M8/04746|H01M8/04791|H01M8/04828|H01M8/04858|H01M8/04955|H01M8/04992|H01M8/06|H01M8/0606|H01M8/0612|H01M8/0637|H01M8/065|H01M8/0656|H01M8/0662|H01M8/0668|H01M8/08|H01M8/083|H01M8/086|H01M8/10|H01M8/1004|H01M8/1006|H01M8/1007|H01M8/1009|H01M8/1011|H01M8/1016|H01M8/1018|H01M8/102|H01M8/1023|H01M8/1025|H01M8/1027|H01M8/103|H01M8/1032|H01M8/1034|H01M8/1037|H01M8/1039|H01M8/1041|H01M8/1044|H01M8/1046|H01M8/1048|H01M8/1051|H01M8/1053|H01M8/1058|H01M8/106|H01M8/1062|H01M8/1065|H01M8/1067|H01M8/1069|H01M8/1072|H01M8/1081|H01M8/1086|H01M8/1088|H01M8/1097|H01M8/12|H01M8/1213|H01M8/122|H01M8/1226|H01M8/1231|H01M8/1233|H01M8/124|H01M8/1246|H01M8/1253|H01M8/126|H01M8/1286|H01M8/14|H01M8/16|H01M8/18|H01M8/20|H01M8/22|H01M8/24|H02J|H02J15/00|H02J3/28|H02J7/00|H02J7/35|H02J9/00|H02K29/08|H02K49/10|H02K7/18|H02N10/00|H02S|H02S10/00|H02S40/44|H05B33/00'" }, "execution_count": 270, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eu_tokens_csv = \"|\".join(eu_ipc_green_codes_csv[\"IPC_code\"].str.strip(\" \").drop_duplicates())\n", "tokens_csv = \"|\".join(ipc_green_codes_csv[\"IPC_code\"].str.strip(\" \").drop_duplicates())\n", "tokens_csv" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 271, "outputs": [ { "data": { "text/plain": "(801, 1214)" }, "execution_count": 271, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(tokens.split(\"|\")),len(tokens_csv.split(\"|\"))" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 272, "outputs": [ { "data": { "text/plain": "337" }, "execution_count": 272, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(set(tokens.split(\"|\")).intersection(set(tokens_csv.split(\"|\"))))" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 273, "outputs": [ { "data": { "text/plain": " appln_id appln_auth appln_kind filing_year nb_applicants \n5162 375545706 DE A 2011 1 \\\n108346 408613474 DE A 2012 2 \n121711 411146713 AT A 2012 1 \n122555 410825570 DE A 2012 1 \n125815 364242878 FR A 2012 1 \n... ... ... ... ... ... \n1640264 546368267 EP A 2021 2 \n1711712 577493769 DE A 2021 1 \n1711714 577493769 DE A 2021 1 \n1712528 544509389 EP A 2021 1 \n1719335 546393918 EP A 2021 1 \n\n nb_inventors ipc_class_symbol ipc_class_level cpc_id \n5162 3 H01L 33/60 A H01L33/60 \\\n108346 6 H01M 50/159 A H01M50/159 \n121711 5 G01R 31/36 A G01R31/36 \n122555 4 H01L 31/0224 A H01L31/0224 \n125815 4 H01L 51/46 A H01L51/46 \n... ... ... ... ... \n1640264 2 F16H 48/24 A F16H48/24 \n1711712 3 H01L 31/0224 A H01L31/0224 \n1711714 3 H01L 33/42 A H01L33/42 \n1712528 2 B01D 53/58 A B01D53/58 \n1719335 13 A01N 25/28 A A01N25/28 \n\n ipc_class ipc_classname ipc_id \n5162 H-Electricity Electricity H01L33/60 \n108346 H-Electricity Electricity H01M50/159 \n121711 G-Physics Physics G01R31/36 \n122555 H-Electricity Electricity H01L31/0224 \n125815 H-Electricity Electricity H01L51/46 \n... ... ... ... \n1640264 F-Engineering Engineering F16H48/24 \n1711712 H-Electricity Electricity H01L31/0224 \n1711714 H-Electricity Electricity H01L33/42 \n1712528 B-Operations; transporting Operations; transporting B01D53/58 \n1719335 A-Human necessities Human necessities A01N25/28 \n\n[333 rows x 12 columns]", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
appln_idappln_authappln_kindfiling_yearnb_applicantsnb_inventorsipc_class_symbolipc_class_levelcpc_idipc_classipc_classnameipc_id
5162375545706DEA201113H01L 33/60AH01L33/60H-ElectricityElectricityH01L33/60
108346408613474DEA201226H01M 50/159AH01M50/159H-ElectricityElectricityH01M50/159
121711411146713ATA201215G01R 31/36AG01R31/36G-PhysicsPhysicsG01R31/36
122555410825570DEA201214H01L 31/0224AH01L31/0224H-ElectricityElectricityH01L31/0224
125815364242878FRA201214H01L 51/46AH01L51/46H-ElectricityElectricityH01L51/46
.......................................
1640264546368267EPA202122F16H 48/24AF16H48/24F-EngineeringEngineeringF16H48/24
1711712577493769DEA202113H01L 31/0224AH01L31/0224H-ElectricityElectricityH01L31/0224
1711714577493769DEA202113H01L 33/42AH01L33/42H-ElectricityElectricityH01L33/42
1712528544509389EPA202112B01D 53/58AB01D53/58B-Operations; transportingOperations; transportingB01D53/58
1719335546393918EPA2021113A01N 25/28AA01N25/28A-Human necessitiesHuman necessitiesA01N25/28
\n

333 rows × 12 columns

\n
" }, "execution_count": 273, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_ipc_f[\"ipc_id\"] = appln_ipc_f[\"cpc_id\"]\n", "appln_ipc_f[appln_ipc_f[\"ipc_id\"].str.contains(tokens_csv, regex=True)]" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 274, "outputs": [ { "data": { "text/plain": "174" }, "execution_count": 274, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appln_ipc_f[appln_ipc_f[\"ipc_id\"].str.contains(tokens_csv, regex=True)][\"appln_id\"].nunique()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 275, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "hovertemplate": "Year:%{x:d}
Number of co-publications:%{y:d}", "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+text+lines", "name": "", "orientation": "v", "showlegend": false, "text": [ 1.0, 8.0, 8.0, 7.0, 7.0, 12.0, 29.0, 28.0, 34.0, 32.0, 8.0 ], "textfont": { "size": 12 }, "textposition": "top center", "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x", "y": [ 1, 8, 8, 7, 7, 12, 29, 28, 34, 32, 8 ], "yaxis": "y", "type": "scatter" }, { "hovertemplate": "Year:%{x:d}
Rel.growth in co-publications:%{y:.0%}", "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+text+lines", "name": "", "orientation": "v", "showlegend": false, "text": [ 0.0, 7.0, 7.0, 6.0, 6.0, 11.0, 28.0, 27.0, 33.0, 31.0, 7.0 ], "textfont": { "size": 12 }, "textposition": "top center", "texttemplate": "%{y:.0%}", "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x2", "y": [ 0.0, 7.0, 7.0, 6.0, 6.0, 11.0, 28.0, 27.0, 33.0, 31.0, 7.0 ], "yaxis": "y2", "type": "scatter" }, { "hovertemplate": "Year:%{x:d}
Rel.growth in co-publications:%{y:.0%}", "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "markers+text+lines", "name": "", "orientation": "v", "showlegend": false, "text": [ 0.018518518518518517, 0.16326530612244897, 0.11594202898550725, 0.109375, 0.07446808510638298, 0.11650485436893204, 0.18354430379746836, 0.15217391304347827, 0.2, 0.2191780821917808, 0.125 ], "textfont": { "size": 12 }, "textposition": "top center", "texttemplate": "%{y:.0%}", "x": [ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 ], "xaxis": "x3", "y": [ 0.018518518518518517, 0.16326530612244897, 0.11594202898550725, 0.109375, 0.07446808510638298, 0.11650485436893204, 0.18354430379746836, 0.15217391304347827, 0.2, 0.2191780821917808, 0.125 ], "yaxis": "y3", "type": "scatter" } ], "layout": { "template": { "data": { "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmapgl" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "xaxis": { "anchor": "y", "domain": [ 0.0, 1.0 ], "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis": { "anchor": "x", "domain": [ 0.7777777777777778, 1.0 ], "categoryorder": "total ascending", "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "range": [ 0, 45 ] }, "xaxis2": { "anchor": "y2", "domain": [ 0.0, 1.0 ], "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis2": { "anchor": "x2", "domain": [ 0.3888888888888889, 0.6111111111111112 ], "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "zerolinecolor": "grey", "tickformat": ".0%", "range": [ -1, 40 ] }, "xaxis3": { "anchor": "y3", "domain": [ 0.0, 1.0 ], "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside" }, "yaxis3": { "anchor": "x3", "domain": [ 0.0, 0.22222222222222224 ], "showgrid": true, "showline": true, "linewidth": 1, "linecolor": "black", "mirror": true, "ticks": "outside", "zerolinecolor": "grey", "tickformat": ".0%", "range": [ 0, 0.3 ] }, "annotations": [ { "font": { "size": 16 }, "showarrow": false, "text": "IPC green inventory co-patents per year", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 1.0, "yanchor": "bottom", "yref": "paper" }, { "font": { "size": 16 }, "showarrow": false, "text": "Relative growth of IPC green inventory co-patents", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 0.6111111111111112, "yanchor": "bottom", "yref": "paper" }, { "font": { "size": 16 }, "showarrow": false, "text": "Ratio of IPC green inventory co-patents to all co-patents", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 0.22222222222222224, "yanchor": "bottom", "yref": "paper" } ], "barmode": "relative", "font": { "family": "Montserrat" } }, "config": { "displayModeBar": false, "responsive": true, "plotlyServerURL": "https://plotly.com" } }, "text/html": "
" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "green_applns = appln_ipc_f[appln_ipc_f[\"ipc_id\"].str.contains(tokens_csv, regex=True)][\"appln_id\"].unique()\n", "appln_f_greenset = appln_f[appln_f[\"appln_id\"].isin(green_applns)]\n", "\n", "datafull = (appln_f.groupby(['filing_year'])[record_col].nunique(dropna=False)\n", " .reset_index()\n", " .rename(columns={0:record_col}))\n", "datafull[record_col+\"_relative_growth_full\"] = datafull[datafull[record_col]>0].sort_values(by=[\"filing_year\"], ascending=True)[record_col][0]\n", "datafull[record_col+\"_relative_growth_full\"] = (datafull[record_col]-datafull[record_col+\"_relative_growth_full\"])/datafull[record_col+\"_relative_growth_full\"]\n", "datafull = datafull.rename(columns={record_col:f\"{record_col}_full\"})\n", "\n", "\n", "data = (appln_f_greenset.groupby(['filing_year'])[record_col].nunique(dropna=False)\n", " .reset_index()\n", " .rename(columns={0:record_col}))\n", "data[record_col+\"_relative_growth\"] = data[data[record_col]>0].sort_values(by=[\"filing_year\"], ascending=True)[record_col][0]\n", "data[record_col+\"_relative_growth\"] = (data[record_col]-data[record_col+\"_relative_growth\"])/data[record_col+\"_relative_growth\"]\n", "\n", "data = data.sort_values(by =[\"filing_year\"], ascending=[True])\n", "# data[record_col+\"_cumsum\"] = (data[record_col].cumsum())\n", "\n", "data = data.merge(datafull, on=\"filing_year\")\n", "data[\"green_ratio\"] = data[record_col]/data[f\"{record_col}_full\"]\n", "\n", "year_output = px.line(data,x=\"filing_year\", y=record_col, markers=True, text=record_col)\n", "year_output.update_traces(textposition='top center',textfont_size=12)\n", "year_output.update_traces(hovertemplate='Year:%{x:d}
Number of co-publications:%{y:d}')\n", "\n", "year_rel_output = px.line(data,x=\"filing_year\", y=record_col+\"_relative_growth\", markers=True, text=record_col+\"_relative_growth\")\n", "year_rel_output.update_traces(textposition='top center',textfont_size=12, texttemplate='%{y:.0%}')\n", "year_rel_output.update_traces(hovertemplate='Year:%{x:d}
Rel.growth in co-publications:%{y:.0%}')\n", "\n", "year_ratio_output = px.line(data,x=\"filing_year\", y=\"green_ratio\", markers=True, text=\"green_ratio\")\n", "year_ratio_output.update_traces(textposition='top center',textfont_size=12, texttemplate='%{y:.0%}')\n", "year_ratio_output.update_traces(hovertemplate='Year:%{x:d}
Rel.growth in co-publications:%{y:.0%}')\n", "\n", "figsuper = make_subplots(rows=3, cols=1, subplot_titles=[\"IPC green inventory co-patents per year\",\"Relative growth of IPC green inventory co-patents\", \"Ratio of IPC green inventory co-patents to all co-patents\"],\n", " specs=[\n", " [{\"type\": \"xy\"}],\n", " [{\"type\": \"xy\"}],\n", " [{\"type\": \"xy\"}]\n", " ])\n", "\n", "for trace in list(year_output.select_traces()):\n", " figsuper.add_trace(trace,\n", " row=1, col=1\n", " )\n", "\n", "for trace in list(year_rel_output.select_traces()):\n", " figsuper.add_trace(trace,\n", " row=2, col=1\n", " )\n", "\n", "for trace in list(year_ratio_output.select_traces()):\n", " figsuper.add_trace(trace,\n", " row=3, col=1\n", " )\n", "\n", "figsuper.update_layout(yaxis={'categoryorder':'total ascending'}, barmode='relative')\n", "figsuper.update_yaxes(\n", " showgrid=True,showline=True, linewidth=1, linecolor='black', mirror=True,\n", " ticks=\"outside\")\n", "figsuper.update_xaxes(\n", " showgrid=True,showline=True, linewidth=1, linecolor='black', mirror=True,\n", " ticks=\"outside\")\n", "figsuper.update_layout({'template':\"plotly\",\"font_family\":\"Montserrat\"})\n", "figsuper['layout']['yaxis2'].update(zerolinecolor='grey',tickformat=\".0%\")\n", "figsuper['layout']['yaxis3'].update(zerolinecolor='grey',tickformat=\".0%\")\n", "# for i in[\"xaxis\",\"xaxis2\"]:\n", "# figsuper['layout'][f'{i}'][\"range\"] = [2010.8,2022.5]\n", "#\n", "figsuper['layout'][\"yaxis\"][\"range\"] = [0,45]\n", "figsuper['layout'][\"yaxis2\"][\"range\"] = [-1,40]\n", "figsuper['layout'][\"yaxis3\"][\"range\"] = [0,0.3]\n", "#\n", "# figsuper['layout']['yaxis'].update(tickformat=\".0f\")\n", "# figsuper['layout']['yaxis3'].update(tickformat=\".0f\")\n", "\n", "figsuper.show(config= dict(displayModeBar = False, responsive = True),height=800,width=1600,scale = 4)\n", "\n", "figsuper.write_image(f\"{fromdir}/plots/green_trends.png\",height=900,width=900,scale = 4)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 276, "outputs": [ { "data": { "text/plain": " filing_year appln_id appln_id_relative_growth appln_id_full \n0 2011 1 0.0 54 \\\n1 2012 8 7.0 49 \n2 2013 8 7.0 69 \n3 2014 7 6.0 64 \n4 2015 7 6.0 94 \n5 2016 12 11.0 103 \n6 2017 29 28.0 158 \n7 2018 28 27.0 184 \n8 2019 34 33.0 170 \n9 2020 32 31.0 146 \n10 2021 8 7.0 64 \n\n appln_id_relative_growth_full green_ratio \n0 0.000000 0.018519 \n1 -0.092593 0.163265 \n2 0.277778 0.115942 \n3 0.185185 0.109375 \n4 0.740741 0.074468 \n5 0.907407 0.116505 \n6 1.925926 0.183544 \n7 2.407407 0.152174 \n8 2.148148 0.200000 \n9 1.703704 0.219178 \n10 0.185185 0.125000 ", "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
filing_yearappln_idappln_id_relative_growthappln_id_fullappln_id_relative_growth_fullgreen_ratio
0201110.0540.0000000.018519
1201287.049-0.0925930.163265
2201387.0690.2777780.115942
3201476.0640.1851850.109375
4201576.0940.7407410.074468
520161211.01030.9074070.116505
620172928.01581.9259260.183544
720182827.01842.4074070.152174
820193433.01702.1481480.200000
920203231.01461.7037040.219178
10202187.0640.1851850.125000
\n
" }, "execution_count": 276, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data" ], "metadata": { "collapsed": false } } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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 }