{"id":18607,"date":"2024-12-03T18:18:01","date_gmt":"2024-12-03T18:18:01","guid":{"rendered":"https:\/\/www.anychart.com\/blog\/?p=18607"},"modified":"2025-08-29T06:15:41","modified_gmt":"2025-08-29T06:15:41","slug":"python-django-financial-dashboard","status":"publish","type":"post","link":"https:\/\/www.anychart.com\/blog\/2024\/12\/03\/python-django-financial-dashboard\/","title":{"rendered":"Integrating AnyChart JS Charts in Python Django Financial Trading Dashboard"},"content":{"rendered":"<p><a href=\"https:\/\/www.anychart.com\/blog\/2024\/12\/03\/python-django-financial-dashboard\"><img decoding=\"async\" class=\"alignnone size-full wp-image-18614\" src=\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2024\/11\/python-django-financial-trading-dashboard.png\" alt=\"Financial Trading Dashboard Built with Python Django and AnyChart JavaScript Charts\" width=\"100%\" srcset=\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2024\/11\/python-django-financial-trading-dashboard.png 1366w, https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2024\/11\/python-django-financial-trading-dashboard-300x169.png 300w, https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2024\/11\/python-django-financial-trading-dashboard-768x432.png 768w, https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2024\/11\/python-django-financial-trading-dashboard-1024x576.png 1024w\" sizes=\"(max-width: 1366px) 100vw, 1366px\" \/><\/a>We are pleased to share\u00a0an insightful article by Michael Whittle, a seasoned solution architect and developer with over 20 years of experience. Originally published on <a href=\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django?via=anychart\" target=\"_blank\" rel=\"nofollow\">EODHD.com<\/a>, it explores how he integrated our\u00a0<a href=\"https:\/\/www.anychart.com\" target=\"_blank\">JavaScript charting library<\/a> into\u00a0a financial trading dashboard built with Python Django. Michael also shares his experience migrating a treemap from D3.js to AnyChart and explains why he chose\u00a0our solution for implementing a stock chart, highlighting\u00a0the intuitive code and enhanced functionality. Read on to discover how you can elevate your financial data visualizations in Python Django web applications with AnyChart JS Charts.<\/p>\n<p><!--more Read the article \u00bb--><\/p>\n<h2>AnyChart Integration for the Financial Trading Dashboard with Python Django<\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-09.58.18-2048x1983.png\" alt=\"JavaScript Treemap Chart in the Python Django Financial Trading Dashboard\" width=\"100%\" \/><\/p>\n<p>This article builds upon the previous two in the series, <em>\u201c<a href=\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/build-a-financial-trading-dashboard-with-python-django?via=anychart\" target=\"_blank\" rel=\"nofollow\">Build a Financial Trading Dashboard with Python Django<\/a>\u201d<\/em> and <em>\u201c<a href=\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/enhancing-the-financial-trading-dashboard-with-python-django?via=anychart\" target=\"_blank\" rel=\"nofollow\">Enhancing the Financial Trading Dashboard with Python Django<\/a>\u201d<\/em>.<\/p>\n<p>Initially, I created the treemap on the landing page using the D3.js library. While it worked well, I wanted to explore other charting options, so I evaluated both Chart.js and AnyChart. Ultimately, I decided to migrate the treemap from D3.js to AnyChart. Although the visual appearance of the charts is quite similar, I found AnyChart\u2019s code significantly more intuitive and easier to understand. Additionally, I personally feel that the <a href=\"https:\/\/www.anychart.com\/\" target=\"_blank\">AnyChart<\/a> treemap offers slightly more functionality and appears more polished. That said, I also liked the aesthetic of Chart.js, which remains a viable option.<\/p>\n<p>In the previous article, I created a page displaying the historical data of a market, presented neatly using a Bootstrap data table. For this article, I wanted to include an appealing stock chart above the table. Once again, I considered the three charting libraries, but I was particularly impressed with the way AnyChart presented the data and the functionality it offered. This article will explain how this was achieved.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.09.01-2048x1702.png\" alt=\"JavaScript Stock Chart in the Python Django Financial Trading Dashboard\" width=\"100%\" \/><\/p>\n<p>Finally, I discovered another useful feature available in Bootstrap. In the previous article, I demonstrated how to add an \u201cExport to Excel\u201d button. Similarly, with just one line of code, you can also add a \u201cPrint\u201d button. This feature takes the data from the Bootstrap table and presents it in a print-friendly format.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2024\/11\/Screenshot-2024-11-21-at-10.12.07-2048x1305.png\" alt=\"Historical Data for the Python Django Financial Trading Dashboard\" width=\"100%\" \/><\/p>\n<blockquote>\n<h5><strong>Quick jump:<\/strong><\/h5>\n<ol>\n<li><a href=\"#updating-the-view\">Updating the View<\/a><\/li>\n<li><a href=\"#updating-the-template-index-html\">Updating the Template \u2014 index.html<\/a><\/li>\n<li><a href=\"#updating-the-template-historical-data-html\">Updating the Template \u2014 historical_data.html<\/a><\/li>\n<li><a href=\"#summary\">Summary<\/a><\/li>\n<li><a href=\"#next-steps\">Next Steps<\/a><\/li>\n<\/ol>\n<\/blockquote>\n<h3 id=\"updating-the-view\" style=\"padding-top: 80px; margin-top: -80px;\">Updating the View<\/h3>\n<p>I only had to make one change to a view to get the historical data stock chart working.<\/p>\n<pre><code class=\"python\">def fetch_historical_data(request, market, interval):\r\n  now = datetime.now()\r\n\r\n  if interval in [\"m\", \"w\", \"d\"]:\r\n    end_date = now.date().isoformat()\r\n    start_date = (now - timedelta(days=300)).date().isoformat()\r\n  else:\r\n    end_date = now.strftime(\"%Y-%m-%dT%H:%M\")\r\n    start_date = (now - timedelta(hours=300)).strftime(\"%Y-%m-%dT%H:%M\")\r\n\r\n  start_date = request.GET.get(\"from\", start_date)\r\n  end_date = request.GET.get(\"to\", end_date)\r\n\r\n  def parse_datetime(dt_str):\r\n    try:\r\n      return datetime.strptime(dt_str, \"%Y-%m-%dT%H:%M:%S\")\r\n    except ValueError:\r\n      try:\r\n        return datetime.strptime(dt_str, \"%Y-%m-%dT%H:%M\")\r\n      except ValueError:\r\n        return datetime.strptime(dt_str, \"%Y-%m-%d\")\r\n\r\n  start_date_parsed = parse_datetime(start_date)\r\n  end_date_parsed = parse_datetime(end_date)\r\n\r\n  if interval in [\"m\", \"w\", \"d\"]:\r\n    start_date = start_date_parsed.strftime(\"%Y-%m-%d\")\r\n    end_date = end_date_parsed.strftime(\"%Y-%m-%d\")\r\n  else:\r\n    start_date_unix = int(start_date_parsed.timestamp())\r\n    end_date_unix = int(end_date_parsed.timestamp())\r\n\r\n  endpoint = \"eod\" if interval in [\"m\", \"w\", \"d\"] else \"intraday\"\r\n  interval_type = \"period\" if interval in [\"m\", \"w\", \"d\"] else \"interval\"\r\n\r\n  if interval not in [\"m\", \"w\", \"d\"]:\r\n    url = f\"https:\/\/eodhd.com\/api\/{endpoint}\/{market}?{interval_type}={interval}&amp;from={start_date_unix}&amp;to={end_date_unix}&amp;api_token={settings.EODHD_API_TOKEN}&amp;fmt=json\"\r\n  else:\r\n    url = f\"https:\/\/eodhd.com\/api\/{endpoint}\/{market}?{interval_type}={interval}&amp;from={start_date}&amp;to={end_date}&amp;api_token={settings.EODHD_API_TOKEN}&amp;fmt=json\"\r\n\r\n  print(url)\r\n  response = requests.get(url)\r\n  data = response.json()\r\n\r\n  def format_unix_timestamp(unix_ts):\r\n    return datetime.utcfromtimestamp(unix_ts).strftime(\"%Y-%m-%d %H:%M:%S\")\r\n\r\n  for entry in data:\r\n    if \"date\" in entry:\r\n      entry[\"timestamp\"] = entry.pop(\"date\")\r\n    elif \"datetime\" in entry:\r\n      datetime_value = entry.pop(\"datetime\")\r\n      try:\r\n        entry[\"timestamp\"] = format_unix_timestamp(int(datetime_value))\r\n      except ValueError:\r\n        entry[\"timestamp\"] = datetime_value\r\n\r\n  if not data or \"error\" in data:\r\n    data = []\r\n\r\n  raw_data = data\r\n  historical_data_json = json.dumps(data)\r\n\r\n  return render(\r\n    request,\r\n    \"historical\/historical_data.html\",\r\n    {\r\n      \"market\": market,\r\n      \"interval\": interval,\r\n      \"historical_data\": raw_data,  # Raw Python data for the table\r\n      \"historical_data_json\": historical_data_json,  # JSON for the script\r\n      \"start_date\": (\r\n        start_date\r\n        if interval in [\"m\", \"w\", \"d\"]\r\n        else start_date_parsed.strftime(\"%Y-%m-%dT%H:%M\")\r\n      ),\r\n      \"end_date\": (\r\n        end_date\r\n        if interval in [\"m\", \"w\", \"d\"]\r\n        else end_date_parsed.strftime(\"%Y-%m-%dT%H:%M\")\r\n      ),\r\n    },\r\n  )\r\n<\/code><\/pre>\n<p>If you pay close attention to the function\u2019s output, you\u2019ll notice that I have separated the data into two parts. The first, \u201chistorical_data\u201d, contains the raw data returned by the API, which is used for the Bootstrap data table. The second, \u201chistorical_data_json\u201d, is a sanitised version of the data in JSON format, required for the AnyChart stock chart. Getting this to work was actually quite challenging. I wanted to provide two ways of visualising the historical data, but each required the data in a different format. This approach proved to be an effective solution.<\/p>\n<h3 id=\"updating-the-template-index-html\" style=\"padding-top: 80px; margin-top: -80px;\">Updating the Template \u2014 index.html<\/h3>\n<p>As I mentioned above, my initial treemap used the D3.js library. I evaluated both the Chart.js and AnyChart libraries. I found the AnyChart library to be initiative and look a lot nicer and more polished. I\u2019ve included the converted code below.<\/p>\n<h4>GOTCHA<\/h4>\n<p>I encountered one of the strangest bug that had me puzzled for several days. When I initially converted the treemap code from D3.js to AnyChart, it worked flawlessly. I then shifted my focus to the Historical Data stock chart, but when I returned to the AnyChart treemap, it wasn\u2019t rendering properly. Although the API was receiving data for 110 market indices, only 11 were displaying.<\/p>\n<p>To debug this, I had to strip the code down to its simplest components. The \u201cproblem,\u201d as it turned out, was related to my inclusion of <em>daily_return<\/em> as the value for the treemap. I chose to use <em>daily_return<\/em> instead of the number of constituents because it created a more visually appealing colour gradient between high and low values. However, I discovered that treemaps require positive numbers as values to render correctly\u2014that\u2019s simply how they work.<\/p>\n<p>When I initially got it working, market conditions must have been exceptionally good, as all the daily returns were positive. By the time I revisited the code a few days later, some daily returns were negative, which caused only 11 entries to display.<\/p>\n<p>To address this, I devised a simple yet effective solution. I ensured that the value passed to the treemap was always absolute (a positive number) and removed this value from the cell display. Instead, I added it to a tooltip that appears on mouse hover. This allowed the treemap to render correctly with a pleasing colour gradient, while still enabling the actual value to be displayed when needed.<\/p>\n<pre><code class=\"html\">&lt;!DOCTYPE html&gt;\r\n&lt;html lang=\"en\"&gt;\r\n&lt;head&gt;\r\n  &lt;meta charset=\"UTF-8\"&gt;\r\n  &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\r\n  &lt;title&gt;Market Indices Treemap&lt;\/title&gt;\r\n\r\n  https:\/\/cdn.anychart.com\/releases\/8.13.0\/js\/anychart-bundle.min.js\r\n  &lt;link href=\"https:\/\/stackpath.bootstrapcdn.com\/bootstrap\/4.5.2\/css\/bootstrap.min.css\" rel=\"stylesheet\"&gt;\r\n  \r\n  &lt;style&gt;\r\n    body {\r\n      background-color: #343a40;\r\n      color: #ffffff;\r\n    }\r\n    #treemap {\r\n      width: 100%;\r\n      height: 80vh;\r\n      margin: 0 auto;\r\n    }\r\n  &lt;\/style&gt;\r\n&lt;\/head&gt;\r\n\r\n&lt;body&gt;\r\n  &lt;div class=\"container mt-5\"&gt;\r\n    &lt;form action=\"{% url 'search_market_data' %}\" method=\"get\" class=\"d-flex justify-content-center my-4\"&gt;\r\n      &lt;input type=\"text\" name=\"query\" class=\"form-control w-50\" placeholder=\"Search market data...\" required&gt;\r\n      &lt;button type=\"submit\" class=\"btn btn-primary ml-2\"&gt;Search&lt;\/button&gt;\r\n    &lt;\/form&gt;\r\n\r\n    &lt;div id=\"treemap\"&gt;&lt;\/div&gt;\r\n  &lt;\/div&gt;\r\n\r\n  &lt;script&gt;\r\n    const data = [\r\n      { \r\n        name: \"Market Indices\", \r\n        children: [\r\n          {% for index in indices %}\r\n          {\r\n            name: \"{{ index.code }} [{{ index.constituents }}]\",\r\n            value: Math.abs(parseFloat(\"{{ index.daily_return|default:0 }}\")) || 0,\r\n            originalValue: parseFloat(\"{{ index.daily_return|default:0 }}\"),\r\n            id: {{ forloop.counter }},\r\n            link: \"\/constituents\/{{ index.index_id }}\/\",\r\n            description: \"Constituents: {{ index.constituents }}\"\r\n          },\r\n          {% endfor %}\r\n        ]\r\n      }\r\n    ];\r\n\r\n    anychart.onDocumentReady(function() {\r\n      const chart = anychart.treeMap(data, \"as-tree\");\r\n\r\n      chart.background().fill(\"#343a40\");\r\n\r\n      const colorScale = anychart.scales.linearColor();\r\n      colorScale.colors([\"#d73027\", \"#fee08b\", \"#1a9850\"]);\r\n      chart.colorScale(colorScale);\r\n\r\n      chart.labels()\r\n        .fontColor(\"#ffffff\")\r\n        .fontSize(function() {\r\n          return this.getData(\"value\") &gt; 100 ? 16 : 12;\r\n        })\r\n        .hAlign(\"center\")\r\n        .vAlign(\"middle\")\r\n        .format(\"{%name}\");\r\n\r\n      chart.tooltip()\r\n        .useHtml(true)\r\n        .format(function() {\r\n          return `&lt;strong&gt;${this.getData('name')}&lt;\/strong&gt;&lt;br&gt;\r\n              Value: ${this.getData('originalValue')}&lt;br&gt;\r\n              Link: &lt;a href=\"${this.getData('link')}\" target=\"_blank\"&gt;${this.getData('link')}&lt;\/a&gt;`;\r\n        });\r\n\r\n      chart.hovered()\r\n        .fill(anychart.color.lighten(\"#007bff\", 0.4))\r\n        .stroke(\"#d3d3d3\");\r\n\r\n      chart.listen(\"pointClick\", function(e) {\r\n        const link = e.point.get(\"link\");\r\n        if (link) {\r\n          window.location.href = link;\r\n        }\r\n      });\r\n\r\n      chart.maxDepth(null);\r\n\r\n      chart.padding(10, 10, 10, 10);\r\n      chart.stroke(\"#ffffff\");\r\n      chart.minHeight(5);\r\n      chart.minWidth(5);\r\n\r\n      chart.labels().fontSize(11);\r\n\r\n      chart.data(data);\r\n      chart.container(\"treemap\");\r\n      chart.draw();\r\n    });\r\n  &lt;\/script&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/code><\/pre>\n<h3 id=\"updating-the-template-historical-data-html\" style=\"padding-top: 80px; margin-top: -80px;\">Updating the Template \u2014 historical_data.html<\/h3>\n<p>The next part was to add the AnyChart stock chart above the historical data Bootstrap table. As I mentioned above, I also added the \u201cPrint\u201d button which could be handy.<\/p>\n<p>I found both Chart.js and AnyChart had really pleasant feature rich graphs. I decided to use AnyChart because I didn\u2019t want to mix the libraries in the app, but I also quite liked the way the graph looked.<\/p>\n<p>What I really nice is that the graph is interactive. You can pan, zoom, and mouse over the data points for additional information. As a stock start you also can see the candlesticks visually represented like most trading applications. A green bar if the close is higher than the open, and a red car if the close is lower than the open.<\/p>\n<pre><code class=\"html\">&lt;!DOCTYPE html&gt;\r\n&lt;html lang=\"en\"&gt;\r\n\r\n&lt;head&gt;\r\n  &lt;title&gt;Historical Data for {{ market }} ({{ interval }})&lt;\/title&gt;\r\n  &lt;meta charset=\"UTF-8\"&gt;\r\n  &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"&gt;\r\n\r\n  &lt;link rel=\"stylesheet\" href=\"https:\/\/stackpath.bootstrapcdn.com\/bootstrap\/4.5.2\/css\/bootstrap.min.css\"&gt;\r\n  &lt;link rel=\"stylesheet\" href=\"https:\/\/cdn.datatables.net\/1.10.21\/css\/dataTables.bootstrap4.min.css\"&gt;\r\n  &lt;link rel=\"stylesheet\" href=\"https:\/\/cdn.datatables.net\/buttons\/1.7.1\/css\/buttons.bootstrap4.min.css\"&gt;\r\n\r\n  &lt;style&gt;\r\n    body {\r\n      background-color: #343a40;\r\n      color: #ffffff;\r\n    }\r\n\r\n    .table {\r\n      background-color: #212529;\r\n    }\r\n\r\n    .table th, .table td {\r\n      color: #ffffff;\r\n    }\r\n\r\n    .chart-container {\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    .dt-buttons .btn {\r\n      margin-right: 10px;\r\n    }\r\n\r\n    .page-item.active .page-link {\r\n      z-index: 3;\r\n      color: #ffffff !important;\r\n      background-color: #495057 !important;\r\n      border-color: #495057 !important;\r\n    }\r\n\r\n    .page-link {\r\n      color: #ffffff !important;\r\n      background-color: #6c757d !important;\r\n      border-color: #343a40 !important;\r\n    }\r\n\r\n    .page-link:hover {\r\n      color: #adb5bd !important;\r\n      background-color: #5a6268 !important;\r\n      border-color: #343a40 !important;\r\n    }\r\n\r\n    .dataTables_wrapper .dataTables_paginate .paginate_button {\r\n      color: #ffffff !important;\r\n      background-color: #6c757d !important;\r\n      border: 1px solid #343a40 !important;\r\n    }\r\n\r\n    .dataTables_wrapper .dataTables_paginate .paginate_button:hover {\r\n      background-color: #5a6268 !important;\r\n      border: 1px solid #343a40 !important;\r\n    }\r\n\r\n    .dataTables_wrapper .dataTables_paginate .paginate_button.current {\r\n      color: #ffffff !important;\r\n      background-color: #495057 !important;\r\n      border: 1px solid #343a40 !important;\r\n    }\r\n\r\n    .dataTables_wrapper .dataTables_paginate .paginate_button.disabled,\r\n    .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover {\r\n      background-color: #6c757d !important;\r\n      color: #ffffff !important;\r\n    }\r\n\r\n    .btn-dark {\r\n      background-color: #6c757d !important;\r\n      border-color: #6c757d !important;\r\n      color: #ffffff !important;\r\n    }\r\n\r\n    .btn-dark:hover {\r\n      background-color: #5a6268 !important;\r\n      border-color: #5a6268 !important;\r\n    }\r\n  &lt;\/style&gt;\r\n&lt;\/head&gt;\r\n\r\n&lt;body&gt;\r\n  &lt;div class=\"container mt-5\"&gt;\r\n    &lt;h2 class=\"mb-4\"&gt;Historical Data for {{ market }} ({{ interval }})&lt;\/h2&gt;\r\n\r\n    &lt;div class=\"row\"&gt;\r\n      &lt;div class=\"col-12 chart-container\"&gt;\r\n        &lt;div id=\"candlestickChart\" style=\"height: 500px; width: 100%;\"&gt;&lt;\/div&gt;\r\n      &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n\r\n    &lt;div class=\"row\"&gt;\r\n      &lt;div class=\"col-12\"&gt;\r\n        &lt;table id=\"historicalTable\" class=\"table table-dark table-striped table-bordered\"&gt;\r\n          &lt;thead class=\"thead-dark\"&gt;\r\n            &lt;tr&gt;\r\n              &lt;th&gt;Timestamp&lt;\/th&gt;\r\n              &lt;th&gt;Open&lt;\/th&gt;\r\n              &lt;th&gt;High&lt;\/th&gt;\r\n              &lt;th&gt;Low&lt;\/th&gt;\r\n              &lt;th&gt;Close&lt;\/th&gt;\r\n              &lt;th&gt;Volume&lt;\/th&gt;\r\n            &lt;\/tr&gt;\r\n          &lt;\/thead&gt;\r\n          &lt;tbody&gt;\r\n            {% for entry in historical_data %}\r\n            &lt;tr&gt;\r\n              &lt;td&gt;{{ entry.timestamp }}&lt;\/td&gt;\r\n              &lt;td&gt;{{ entry.open }}&lt;\/td&gt;\r\n              &lt;td&gt;{{ entry.high }}&lt;\/td&gt;\r\n              &lt;td&gt;{{ entry.low }}&lt;\/td&gt;\r\n              &lt;td&gt;{{ entry.close }}&lt;\/td&gt;\r\n              &lt;td&gt;{{ entry.volume }}&lt;\/td&gt;\r\n            &lt;\/tr&gt;\r\n            {% endfor %}\r\n          &lt;\/tbody&gt;\r\n        &lt;\/table&gt;\r\n      &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n\r\n    &lt;a href=\"javascript:history.back()\" class=\"btn btn-dark mt-4\"&gt;Back&lt;\/a&gt;\r\n  &lt;\/div&gt;\r\n\r\n  &lt;script id=\"historicalData\" type=\"application\/json\"&gt;\r\n    {{ historical_data_json|safe }}\r\n  &lt;\/script&gt;\r\n\r\n  https:\/\/code.jquery.com\/jquery-3.5.1.min.js\r\n  https:\/\/cdn.datatables.net\/1.10.21\/js\/jquery.dataTables.min.js\r\n  https:\/\/cdn.datatables.net\/1.10.21\/js\/dataTables.bootstrap4.min.js\r\n  https:\/\/cdn.datatables.net\/buttons\/1.7.1\/js\/dataTables.buttons.min.js\r\n  https:\/\/cdn.datatables.net\/buttons\/1.7.1\/js\/buttons.bootstrap4.min.js\r\n  https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jszip\/3.1.3\/jszip.min.js\r\n  https:\/\/cdn.datatables.net\/buttons\/1.7.1\/js\/buttons.html5.min.js\r\n  https:\/\/cdn.datatables.net\/buttons\/1.7.1\/js\/buttons.print.min.js\r\n  https:\/\/cdn.anychart.com\/releases\/8.13.0\/js\/anychart-bundle.min.js\r\n\r\n  &lt;script&gt;\r\n    $(document).ready(function() {\r\n      $('#historicalTable').DataTable({\r\n        paging: true,\r\n        searching: true,\r\n        ordering: true,\r\n        info: true,\r\n        lengthMenu: [10, 25, 50, 100],\r\n        order: [[4, \"desc\"]],\r\n        dom: 'Bfrtip',\r\n        buttons: [\r\n          {\r\n            extend: 'excel',\r\n            text: 'Export to Excel'\r\n          },\r\n          {\r\n            extend: 'print',\r\n            text: 'Print'\r\n          }\r\n        ]\r\n      });\r\n    });\r\n\r\n    document.addEventListener(\"DOMContentLoaded\", function () {\r\n      const rawData = document.getElementById(\"historicalData\").textContent;\r\n      const historicalData = JSON.parse(rawData);\r\n\r\n      const chartData = historicalData.map(entry =&gt; [\r\n        entry.timestamp,\r\n        entry.open,\r\n        entry.high,\r\n        entry.low,\r\n        entry.close\r\n      ]);\r\n\r\n      anychart.onDocumentReady(function () {\r\n        const chart = anychart.stock();\r\n\r\n        const table = anychart.data.table();\r\n        table.addData(chartData);\r\n\r\n        const mapping = table.mapAs({\r\n          open: 1,\r\n          high: 2,\r\n          low: 3,\r\n          close: 4\r\n        });\r\n\r\n        const plot = chart.plot(0);\r\n        plot.candlestick(mapping).name('Price');\r\n\r\n        chart.container(\"candlestickChart\");\r\n        chart.draw();\r\n      });\r\n    });\r\n  &lt;\/script&gt;\r\n&lt;\/body&gt;\r\n\r\n&lt;\/html&gt;<\/code><\/pre>\n<h3 id=\"summary\" style=\"padding-top: 80px; margin-top: -80px;\">Summary<\/h3>\n<p>I find the code of AnyChart&#8217;s <a href=\"https:\/\/www.anychart.com\">JavaScript charting library<\/a> straightforward to read and understand. However, the graphs display a \u201ctrial version\u201d watermark. The purchasing of a licence removes this watermark and offers additional support. Despite this, the trial version has functioned well for me.<\/p>\n<h3 id=\"next-steps\" style=\"padding-top: 80px; margin-top: -80px;\">Next Steps<\/h3>\n<p>The next article in the series will explore incorporating fundamental data and market capitalisation into the application.<\/p>\n<hr \/>\n<p><em><strong>Originally published on <a href=\"https:\/\/eodhd.com?via=anychart\" target=\"_blank\" rel=\"nofollow\">EODHD.com<\/a>, a one-stop shop for financial data APIs,\u00a0under the title &#8220;<a href=\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django?via=anychart\" target=\"_blank\" rel=\"nofollow\">AnyChart integration for the Financial Trading Dashboard with Python Django<\/a>&#8221; in November 2024.<\/strong><\/em><\/p>\n<p><em><strong>Written by <a href=\"https:\/\/eodhd.com\/financial-academy\/author\/michaelwhittle?via=anychart\" target=\"_blank\" rel=\"nofollow\">Michael Whittle<\/a>, a solution architect, developer, and analyst with over twenty years of experience, and a top author on Medium.<\/strong><\/em><\/p>\n<hr \/>\n<h2>Useful Links<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.anychart.com\/chartopedia\/chart-type\/treemap\/\" target=\"_blank\">Treemap Chart \u2014 Chartopedia<\/a><\/li>\n<li><a href=\"https:\/\/www.anychart.com\/chartopedia\/chart-type\/stock-chart\/\" target=\"_blank\">Stock Chart \u2014 Chartopedia<\/a><\/li>\n<li><a href=\"https:\/\/www.anychart.com\/blog\/2019\/08\/01\/treemap-chart-create-javascript\/\" target=\"_blank\">How to Create a Treemap Chart \u2014 JavaScript Charting Tutorials<\/a><\/li>\n<li><a href=\"https:\/\/www.anychart.com\/blog\/2023\/09\/05\/stock-chart-javascript\/\" target=\"_blank\">How to Create a Stock Chart \u2014 JavaScript Charting Tutorials<\/a><\/li>\n<li><a href=\"https:\/\/www.anychart.com\/technical-integrations\/samples\/python-django-mysql-template\/\" target=\"_blank\">Python\u00a0\/ Django\u00a0\/ MySQL \u2014 Integration Templates<\/a><\/li>\n<li><a href=\"https:\/\/www.anychart.com\/technical-integrations\/samples\/python-flask-mysql-template\/\" target=\"_blank\">Python\u00a0\/ Flask\u00a0\/ MySQL \u2014 Integration Templates<\/a><\/li>\n<li><a href=\"https:\/\/www.anychart.com\/solutions\/\" target=\"_blank\">Business Solutions and Dashboards<\/a><\/li>\n<\/ul>\n<p><!-- SyntaxHighlighter --><link rel=\"stylesheet\" href=\"\/\/cdnjs.cloudflare.com\/ajax\/libs\/highlight.js\/9.12.0\/styles\/default.min.css\"><link rel=\"stylesheet\" href=\"\/\/cdnjs.cloudflare.com\/ajax\/libs\/highlight.js\/9.12.0\/styles\/atom-one-light.min.css\"><script src=\"\/\/cdnjs.cloudflare.com\/ajax\/libs\/highlight.js\/9.12.0\/highlight.min.js\"><\/script><script>hljs.initHighlightingOnLoad();<\/script><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>We are pleased to share\u00a0an insightful article by Michael Whittle, a seasoned solution architect and developer with over 20 years of experience. Originally published on EODHD.com, it explores how he integrated our\u00a0JavaScript charting library into\u00a0a financial trading dashboard built with Python Django. Michael also shares his experience migrating a treemap from D3.js to AnyChart and [&hellip;]<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,18,263,7,19,23,13,20,15,4],"tags":[3453,843,619,618,53,3840,123,3935,93,289,2185,4220,4221,1556,198,254,284,2551,166,3942,258,2242,3028,4222,1234,160,49,471,266,3972,916,1292,4087,880,806,3352,509,2220,2838,54,4121,1111,844,165,313,1370,743,133,774,775,3203,4217,4218,47,4216,912,4219,4063,3922,4012,4011,4071,4070,914,95,1762,913,2013,4041,2014,32,55,3927,77,174,143,4085,4084,146,3926,79,80,4090,151,4089,3844,3925,907,141,249,3111,81,3931,57,3849,76,96,99,4108,3947,58,3832,65,56,78,3526,911,1937,2335,1938,2387,2388,3027,111,3601,200,37,910,915,920,1958,1959,1960,3606,3220,3604,4214,4215,1221,190,172,807,808,954,1939,3494,2015,4213,2816,1763,804,4211,4212],"class_list":["post-18607","post","type-post","status-publish","format-standard","hentry","category-anychart-charting-component","category-anystock","category-big-data","category-dashboards","category-financial-charts","category-html5","category-javascript","category-stock-charts","category-third-party-developers","category-tips-and-tricks","tag-1point21-interactive","tag-advanced-data-visualization","tag-analysis","tag-analytics","tag-anychart","tag-anychart-api","tag-anychart-integration-templates","tag-anychart-tutorial","tag-anystock","tag-api","tag-bootstrap","tag-bootstrap-table","tag-bootstrap-table-visualization","tag-business-analytics","tag-candlestick-chart","tag-chart","tag-chart-examples","tag-chart-js","tag-charting","tag-charting-library","tag-charts","tag-d3","tag-d3-js","tag-daily-returns","tag-dashboard","tag-dashboard-design","tag-dashboards","tag-data-analysis","tag-data-analytics","tag-data-analytics-tools","tag-data-api","tag-data-chart","tag-data-chart-project","tag-data-charting","tag-data-charts","tag-data-graphic","tag-data-graphics","tag-data-visual","tag-data-visualisation","tag-data-visualization","tag-data-visualization-library","tag-data-visualization-practice","tag-data-visualization-tutorial","tag-data-visualizations","tag-data-visuals","tag-data-viz-examples","tag-data-viz","tag-dataviz","tag-dataviz-examples","tag-dataviz-projects","tag-django","tag-eodhd","tag-eodhd-com","tag-financial-charts","tag-financial-dashboard","tag-financial-data","tag-financial-data-api","tag-financial-data-charts","tag-financial-markets","tag-financial-report","tag-financial-report-chart","tag-financial-reporting","tag-financial-reporting-charts","tag-fundamental-financial-data","tag-graphics-library","tag-guest-post","tag-historical-stock-prices","tag-html","tag-html-chart-setup","tag-html-charts","tag-html5","tag-html5-charts","tag-html5-charts-tutorial","tag-html5-dashboards","tag-integration","tag-interactive-dashboard","tag-interactive-data","tag-interactive-data-chart","tag-interactive-data-visualization","tag-interactive-data-visualization-tutorial","tag-interactive-html5-dashboard","tag-interactive-javascript-dashboard","tag-interactive-project","tag-interactive-visualizations","tag-interactive-web-charts","tag-javascript-chart-alternatives","tag-javascript-chart-customization","tag-javascript-chart-tutorial","tag-javascript-charting","tag-javascript-charting-api","tag-javascript-charting-features","tag-javascript-charting-library","tag-javascript-charting-tutorial","tag-javascript-charts","tag-javascript-dashboard-display","tag-javascript-dashboards","tag-javascript-graphics-library","tag-javascript-library","tag-javascript-tutorial","tag-javascript-visualization-tutorial","tag-js-chart","tag-js-chart-tips","tag-js-charting","tag-js-charts","tag-js-dashboards","tag-js-library","tag-js-stock-chart","tag-json","tag-json-charts","tag-json-data-visualization","tag-market-data","tag-market-data-visualization","tag-python","tag-python-charts","tag-stock","tag-stock-chart","tag-stock-charts","tag-stock-data","tag-stock-data-feed","tag-stock-exchange-data","tag-stock-market","tag-stock-market-data","tag-stock-market-data-visualization","tag-stock-plot","tag-technical-analysis","tag-trading","tag-trading-app","tag-trading-dashboard","tag-treemap","tag-treemap-chart","tag-tutorial","tag-visual-analysis","tag-visual-analytics","tag-visual-data-analytics","tag-visualizing-json-data","tag-web-chart","tag-web-charts","tag-web-dashboard","tag-web-design","tag-web-developers","tag-web-development","tag-web-framework","tag-web-library","wpautop"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Python Django Financial Trading Dashboard with AnyChart JS<\/title>\n<meta name=\"description\" content=\"Learn firsthand how to integrate our JavaScript charting library into a Python Django financial trading dashboard, featuring a treemap and stock chart.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Financial Dashboard with Python Django &amp; AnyChart JS\" \/>\n<meta property=\"og:description\" content=\"Learn how to integrate AnyChart JS Charts into a Python Django financial trading dashboard, with a treemap and stock chart.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django\" \/>\n<meta property=\"og:site_name\" content=\"AnyChart News\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/AnyCharts\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-03T18:18:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-29T06:15:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2024\/12\/python-django-financial-trading-dashboard-og.png\" \/>\n<meta name=\"author\" content=\"Michael Whittle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Financial Dashboard with Python Django &amp; AnyChart JS\" \/>\n<meta name=\"twitter:description\" content=\"Learn how to integrate AnyChart JS Charts into a Python Django financial trading dashboard, with a treemap and stock chart.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/01\/python-django-financial-trading-dashboar-twitter-x.png\" \/>\n<meta name=\"twitter:creator\" content=\"@AnyChart\" \/>\n<meta name=\"twitter:site\" content=\"@AnyChart\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Michael Whittle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/2024\/12\/03\/python-django-financial-dashboard\/\"},\"author\":{\"name\":\"Michael Whittle\",\"@id\":\"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/e40a1a3bf599fac7ad43426d287ac67f\"},\"headline\":\"Integrating AnyChart JS Charts in Python Django Financial Trading Dashboard\",\"datePublished\":\"2024-12-03T18:18:01+00:00\",\"dateModified\":\"2025-08-29T06:15:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/2024\/12\/03\/python-django-financial-dashboard\/\"},\"wordCount\":1100,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2024\/11\/python-django-financial-trading-dashboard.png\",\"keywords\":[\"1POINT21 Interactive\",\"advanced data visualization\",\"analysis\",\"analytics\",\"AnyChart\",\"AnyChart API\",\"anychart integration templates\",\"AnyChart tutorial\",\"AnyStock\",\"api\",\"Bootstrap\",\"Bootstrap table\",\"Bootstrap table visualization\",\"business analytics\",\"candlestick chart\",\"chart\",\"chart examples\",\"Chart.js\",\"charting\",\"charting library\",\"charts\",\"D3\",\"D3.js\",\"daily returns\",\"dashboard\",\"dashboard design\",\"Dashboards\",\"data analysis\",\"data analytics\",\"data analytics tools\",\"data API\",\"data chart\",\"data chart project\",\"data charting\",\"data charts\",\"data graphic\",\"data graphics\",\"data visual\",\"data visualisation\",\"Data Visualization\",\"data visualization library\",\"data visualization practice\",\"data visualization tutorial\",\"data visualizations\",\"data visuals\",\"data viz examples\",\"data-viz\",\"dataviz\",\"dataviz examples\",\"dataviz projects\",\"Django\",\"EODHD\",\"EODHD.com\",\"Financial charts\",\"financial dashboard\",\"financial data\",\"financial data API\",\"financial data charts\",\"financial markets\",\"financial report\",\"financial report chart\",\"financial reporting\",\"financial reporting charts\",\"fundamental financial data\",\"graphics library\",\"guest post\",\"historical stock prices\",\"HTML\",\"HTML chart setup\",\"HTML charts\",\"HTML5\",\"html5 charts\",\"HTML5 charts tutorial\",\"html5 dashboards\",\"integration\",\"interactive dashboard\",\"interactive data\",\"interactive data chart\",\"interactive data visualization\",\"interactive data visualization tutorial\",\"interactive html5 dashboard\",\"interactive javascript dashboard\",\"interactive project\",\"interactive visualizations\",\"interactive web charts\",\"JavaScript chart alternatives\",\"JavaScript chart customization\",\"javascript chart tutorial\",\"javascript charting\",\"javascript charting api\",\"JavaScript charting features\",\"JavaScript charting library\",\"JavaScript charting tutorial\",\"javascript charts\",\"JavaScript dashboard display\",\"javascript dashboards\",\"JavaScript graphics library\",\"JavaScript library\",\"JavaScript tutorial\",\"JavaScript visualization tutorial\",\"js chart\",\"JS chart tips\",\"js charting\",\"js charts\",\"js dashboards\",\"js library\",\"JS stock chart\",\"JSON\",\"JSON charts\",\"JSON data visualization\",\"market data\",\"market data visualization\",\"Python\",\"python charts\",\"stock\",\"stock chart\",\"Stock charts\",\"stock data\",\"stock data feed\",\"stock exchange data\",\"stock market\",\"stock market data\",\"stock market data visualization\",\"stock plot\",\"technical analysis\",\"trading\",\"trading app\",\"trading dashboard\",\"treemap\",\"treemap chart\",\"tutorial\",\"visual analysis\",\"visual analytics\",\"visual data analytics\",\"visualizing JSON data\",\"web chart\",\"web charts\",\"web dashboard\",\"web design\",\"web developers\",\"web development\",\"web framework\",\"web library\"],\"articleSection\":[\"AnyChart Charting Component\",\"AnyStock\",\"Big Data\",\"Dashboards\",\"Financial Charts\",\"HTML5\",\"JavaScript\",\"Stock Charts\",\"Third-Party Developers\",\"Tips and Tricks\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.anychart.com\/blog\/2024\/12\/03\/python-django-financial-dashboard\/\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django\",\"name\":\"Python Django Financial Trading Dashboard with AnyChart JS\",\"isPartOf\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#primaryimage\"},\"image\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2024\/11\/python-django-financial-trading-dashboard.png\",\"datePublished\":\"2024-12-03T18:18:01+00:00\",\"dateModified\":\"2025-08-29T06:15:41+00:00\",\"author\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/e40a1a3bf599fac7ad43426d287ac67f\"},\"description\":\"Learn firsthand how to integrate our JavaScript charting library into a Python Django financial trading dashboard, featuring a treemap and stock chart.\",\"breadcrumb\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#primaryimage\",\"url\":\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2024\/11\/python-django-financial-trading-dashboard.png\",\"contentUrl\":\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2024\/11\/python-django-financial-trading-dashboard.png\",\"width\":1366,\"height\":768},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.anychart.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Integrating AnyChart JS Charts in Python Django Financial Trading Dashboard\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.anychart.com\/blog\/#website\",\"url\":\"https:\/\/www.anychart.com\/blog\/\",\"name\":\"AnyChart News\",\"description\":\"AnyChart JS Charts\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.anychart.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/e40a1a3bf599fac7ad43426d287ac67f\",\"name\":\"Michael Whittle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e97b917414708b16d6115757dff86ab4309a4c4c2c9f5391f28a6a2a87848a36?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e97b917414708b16d6115757dff86ab4309a4c4c2c9f5391f28a6a2a87848a36?s=96&r=g\",\"caption\":\"Michael Whittle\"},\"url\":\"https:\/\/www.anychart.com\/blog\/author\/michael-whittle\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Python Django Financial Trading Dashboard with AnyChart JS","description":"Learn firsthand how to integrate our JavaScript charting library into a Python Django financial trading dashboard, featuring a treemap and stock chart.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django","og_locale":"en_US","og_type":"article","og_title":"Financial Dashboard with Python Django & AnyChart JS","og_description":"Learn how to integrate AnyChart JS Charts into a Python Django financial trading dashboard, with a treemap and stock chart.","og_url":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django","og_site_name":"AnyChart News","article_publisher":"https:\/\/www.facebook.com\/AnyCharts","article_published_time":"2024-12-03T18:18:01+00:00","article_modified_time":"2025-08-29T06:15:41+00:00","og_image":[{"url":"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2024\/12\/python-django-financial-trading-dashboard-og.png","type":"","width":"","height":""}],"author":"Michael Whittle","twitter_card":"summary_large_image","twitter_title":"Financial Dashboard with Python Django & AnyChart JS","twitter_description":"Learn how to integrate AnyChart JS Charts into a Python Django financial trading dashboard, with a treemap and stock chart.","twitter_image":"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/01\/python-django-financial-trading-dashboar-twitter-x.png","twitter_creator":"@AnyChart","twitter_site":"@AnyChart","twitter_misc":{"Written by":"Michael Whittle","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#article","isPartOf":{"@id":"https:\/\/www.anychart.com\/blog\/2024\/12\/03\/python-django-financial-dashboard\/"},"author":{"name":"Michael Whittle","@id":"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/e40a1a3bf599fac7ad43426d287ac67f"},"headline":"Integrating AnyChart JS Charts in Python Django Financial Trading Dashboard","datePublished":"2024-12-03T18:18:01+00:00","dateModified":"2025-08-29T06:15:41+00:00","mainEntityOfPage":{"@id":"https:\/\/www.anychart.com\/blog\/2024\/12\/03\/python-django-financial-dashboard\/"},"wordCount":1100,"commentCount":0,"image":{"@id":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#primaryimage"},"thumbnailUrl":"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2024\/11\/python-django-financial-trading-dashboard.png","keywords":["1POINT21 Interactive","advanced data visualization","analysis","analytics","AnyChart","AnyChart API","anychart integration templates","AnyChart tutorial","AnyStock","api","Bootstrap","Bootstrap table","Bootstrap table visualization","business analytics","candlestick chart","chart","chart examples","Chart.js","charting","charting library","charts","D3","D3.js","daily returns","dashboard","dashboard design","Dashboards","data analysis","data analytics","data analytics tools","data API","data chart","data chart project","data charting","data charts","data graphic","data graphics","data visual","data visualisation","Data Visualization","data visualization library","data visualization practice","data visualization tutorial","data visualizations","data visuals","data viz examples","data-viz","dataviz","dataviz examples","dataviz projects","Django","EODHD","EODHD.com","Financial charts","financial dashboard","financial data","financial data API","financial data charts","financial markets","financial report","financial report chart","financial reporting","financial reporting charts","fundamental financial data","graphics library","guest post","historical stock prices","HTML","HTML chart setup","HTML charts","HTML5","html5 charts","HTML5 charts tutorial","html5 dashboards","integration","interactive dashboard","interactive data","interactive data chart","interactive data visualization","interactive data visualization tutorial","interactive html5 dashboard","interactive javascript dashboard","interactive project","interactive visualizations","interactive web charts","JavaScript chart alternatives","JavaScript chart customization","javascript chart tutorial","javascript charting","javascript charting api","JavaScript charting features","JavaScript charting library","JavaScript charting tutorial","javascript charts","JavaScript dashboard display","javascript dashboards","JavaScript graphics library","JavaScript library","JavaScript tutorial","JavaScript visualization tutorial","js chart","JS chart tips","js charting","js charts","js dashboards","js library","JS stock chart","JSON","JSON charts","JSON data visualization","market data","market data visualization","Python","python charts","stock","stock chart","Stock charts","stock data","stock data feed","stock exchange data","stock market","stock market data","stock market data visualization","stock plot","technical analysis","trading","trading app","trading dashboard","treemap","treemap chart","tutorial","visual analysis","visual analytics","visual data analytics","visualizing JSON data","web chart","web charts","web dashboard","web design","web developers","web development","web framework","web library"],"articleSection":["AnyChart Charting Component","AnyStock","Big Data","Dashboards","Financial Charts","HTML5","JavaScript","Stock Charts","Third-Party Developers","Tips and Tricks"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.anychart.com\/blog\/2024\/12\/03\/python-django-financial-dashboard\/","url":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django","name":"Python Django Financial Trading Dashboard with AnyChart JS","isPartOf":{"@id":"https:\/\/www.anychart.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#primaryimage"},"image":{"@id":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#primaryimage"},"thumbnailUrl":"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2024\/11\/python-django-financial-trading-dashboard.png","datePublished":"2024-12-03T18:18:01+00:00","dateModified":"2025-08-29T06:15:41+00:00","author":{"@id":"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/e40a1a3bf599fac7ad43426d287ac67f"},"description":"Learn firsthand how to integrate our JavaScript charting library into a Python Django financial trading dashboard, featuring a treemap and stock chart.","breadcrumb":{"@id":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#primaryimage","url":"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2024\/11\/python-django-financial-trading-dashboard.png","contentUrl":"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2024\/11\/python-django-financial-trading-dashboard.png","width":1366,"height":768},{"@type":"BreadcrumbList","@id":"https:\/\/eodhd.com\/financial-academy\/building-stocks-apps-examples\/anychart-integration-for-the-financial-trading-dashboard-with-python-django#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.anychart.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Integrating AnyChart JS Charts in Python Django Financial Trading Dashboard"}]},{"@type":"WebSite","@id":"https:\/\/www.anychart.com\/blog\/#website","url":"https:\/\/www.anychart.com\/blog\/","name":"AnyChart News","description":"AnyChart JS Charts","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.anychart.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/e40a1a3bf599fac7ad43426d287ac67f","name":"Michael Whittle","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e97b917414708b16d6115757dff86ab4309a4c4c2c9f5391f28a6a2a87848a36?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e97b917414708b16d6115757dff86ab4309a4c4c2c9f5391f28a6a2a87848a36?s=96&r=g","caption":"Michael Whittle"},"url":"https:\/\/www.anychart.com\/blog\/author\/michael-whittle\/"}]}},"_links":{"self":[{"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/posts\/18607","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/comments?post=18607"}],"version-history":[{"count":17,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/posts\/18607\/revisions"}],"predecessor-version":[{"id":19591,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/posts\/18607\/revisions\/19591"}],"wp:attachment":[{"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/media?parent=18607"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/categories?post=18607"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/tags?post=18607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}