{
  "source_file": "0930",
  "source_platform": "Dev.to",
  "author": "amananandrai",
  "title_listed": "6 Famous Data Visualization Libraries (Python & R)📈",
  "keywords": "",
  "domain": "数据处理",
  "content_type": "深度技术解析",
  "is_paid_flag": "否",
  "url": "https://dev.to/amananandrai/6-famous-data-visualization-libraries-4e4j",
  "publish_date": "2020-12-22",
  "corpus_stage": "",
  "notes": "",
  "id": "31b239fd6789",
  "collected_at": "2026-10-02T14:02:38",
  "title": "6 Famous Data Visualization Libraries (Python & R)📈 - DEV Community",
  "body_markdown": "Data Visualization\nmeans to convert information into a visual perspective like a map, graph, or chart. The main aim of data visualization is to make data easier to understand for the human brain and identify trends, patterns, and outliers from data. Data visualization is one of the most important steps of Data Science. After the data has been collected and processed it is modeled. Data visualization is the next step after this which helps in finding insights from the data.\nIn Machine Learning also we use data visualization before making models to better understand the data. It helps in finding the outliers, finding important features, finding the correlation between data. The languages used for data visualization are\nPython\nand\nR\n. Some of the famous data visualization libraries are-\nMatplotlib\nPlotly\nSeaborn\nAltair\nBokeh\nGgplot\nPython\nPython is one of the most famous programming languages in the Machine Learning community. It is also widely used for data visualization as well. Some of the famous libraries are listed below along with code for stacked bar chart -\nMatplotlib\nThe code here represents how to make a stacked bar chart using matplotlib. The data used is just random data taken by me which represents sale of two products A and B in each month. This same data will be used throughout the blog. The function for bar chart is\nbar()\n.\nimport\nmatplotlib.pyplot\nas\nplt\nlabels\n=\n[\n'\nJan\n'\n,\n'\nFeb\n'\n,\n'\nMar\n'\n,\n'\nApr\n'\n,\n'\nMay\n'\n,\n'\nJun\n'\n,\n'\nJul\n'\n,\n'\nAug\n'\n,\n'\nSep\n'\n,\n'\nOct\n'\n,\n'\nNov\n'\n,\n'\nDec\n'\n]\nproduct_A\n=\n[\n20\n,\n35\n,\n30\n,\n35\n,\n27\n,\n43\n,\n24\n,\n34\n,\n14\n,\n27\n,\n22\n,\n50\n]\nproduct_B\n=\n[\n25\n,\n32\n,\n34\n,\n20\n,\n25\n,\n34\n,\n54\n,\n23\n,\n43\n,\n33\n,\n27\n,\n29\n]\nwidth\n=\n0.35\nfig\n,\nax\n=\nplt\n.\nsubplots\n()\nax\n.\nbar\n(\nlabels\n,\nproduct_A\n,\nwidth\n,\nlabel\n=\n'\nProduct A\n'\n)\nax\n.\nbar\n(\nlabels\n,\nproduct_B\n,\nwidth\n,\nbottom\n=\nproduct_A\n,\nlabel\n=\n'\nProduct B\n'\n)\nax\n.\nset_ylabel\n(\n'\nScores\n'\n)\nax\n.\nset_title\n(\n'\nSales of Product A and Product B\n'\n)\nax\n.\nlegend\n()\nplt\n.\nshow\n()\nEnter fullscreen mode\nExit fullscreen mode\nPlotly\nThe same data is used here but has been converted into a pandas dataframe. The\nbar()\nfunction is used to draw bar chart.\nimport\nplotly.express\nas\npx\nimport\npandas\nas\npd\ndf\n=\npd\n.\nDataFrame\n(\ndict\n(\ntime\n=\n[\n'\nJan\n'\n,\n'\nFeb\n'\n,\n'\nMar\n'\n,\n'\nApr\n'\n,\n'\nMay\n'\n,\n'\nJun\n'\n,\n'\nJul\n'\n,\n'\nAug\n'\n,\n'\nSep\n'\n,\n'\nOct\n'\n,\n'\nNov\n'\n,\n'\nDec\n'\n],\nproduct_A\n=\n[\n20\n,\n35\n,\n30\n,\n35\n,\n27\n,\n43\n,\n24\n,\n34\n,\n14\n,\n27\n,\n22\n,\n50\n],\nproduct_B\n=\n[\n25\n,\n32\n,\n34\n,\n20\n,\n25\n,\n34\n,\n54\n,\n23\n,\n43\n,\n33\n,\n27\n,\n29\n]))\nfig\n=\npx\n.\nbar\n(\ndf\n,\nx\n=\n\"\ntime\n\"\n,\ny\n=\n[\n\"\nproduct_A\n\"\n,\n\"\nproduct_B\n\"\n],\ntitle\n=\n\"\nSales of Product A and Product B\n\"\n)\nfig\n.\nshow\n()\nEnter fullscreen mode\nExit fullscreen mode\nSeaborn\nIn Seaborn, there is no easy way to make stacked bar char so I have used pandas\nplot()\nfunction to plot the chart. The\nset()\nfunction is used to apply the seaborn theme.\nbarplot()\nand\nhistplot()\nfunctions are there in seaborn for plotting bar chart and histogram respectively.\nimport\nseaborn\nas\nsns\nimport\nmatplotlib.pyplot\nas\nplt\ndf\n=\npd\n.\nDataFrame\n(\ndict\n(\ntime\n=\n[\n'\nJan\n'\n,\n'\nFeb\n'\n,\n'\nMar\n'\n,\n'\nApr\n'\n,\n'\nMay\n'\n,\n'\nJun\n'\n,\n'\nJul\n'\n,\n'\nAug\n'\n,\n'\nSep\n'\n,\n'\nOct\n'\n,\n'\nNov\n'\n,\n'\nDec\n'\n],\nproduct_A\n=\n[\n20\n,\n35\n,\n30\n,\n35\n,\n27\n,\n43\n,\n24\n,\n34\n,\n14\n,\n27\n,\n22\n,\n50\n],\nproduct_B\n=\n[\n25\n,\n32\n,\n34\n,\n20\n,\n25\n,\n34\n,\n54\n,\n23\n,\n43\n,\n33\n,\n27\n,\n29\n]))\nsns\n.\nset\n(\npalette\n=\n'\npastel\n'\n)\ndf\n.\nplot\n(\nkind\n=\n'\nbar\n'\n,\nx\n=\n'\ntime\n'\n,\nstacked\n=\nTrue\n)\nEnter fullscreen mode\nExit fullscreen mode\nAltair\nHere also the dataframe is used but as the data is in wide format it is converted into long format and then plotted. One more thing which I have added here is\ncornerRadiusTopLeft\nand\ncornerRadiusTopRight\nit is used to make the top of bar rounded.\nimport\naltair\nas\nalt\ndf\n=\npd\n.\nDataFrame\n(\ndict\n(\ntime\n=\n[\n'\nJan\n'\n,\n'\nFeb\n'\n,\n'\nMar\n'\n,\n'\nApr\n'\n,\n'\nMay\n'\n,\n'\nJun\n'\n,\n'\nJul\n'\n,\n'\nAug\n'\n,\n'\nSep\n'\n,\n'\nOct\n'\n,\n'\nNov\n'\n,\n'\nDec\n'\n],\nproduct_A\n=\n[\n20\n,\n35\n,\n30\n,\n35\n,\n27\n,\n43\n,\n24\n,\n34\n,\n14\n,\n27\n,\n22\n,\n50\n],\nproduct_B\n=\n[\n25\n,\n32\n,\n34\n,\n20\n,\n25\n,\n34\n,\n54\n,\n23\n,\n43\n,\n33\n,\n27\n,\n29\n]))\nalt\n.\nChart\n(\ndf\n).\ntransform_fold\n([\n'\nproduct_A\n'\n,\n'\nproduct_B\n'\n],\nas_\n=\n[\n'\ncolumn\n'\n,\n'\nproduct\n'\n]\n).\nmark_bar\n(\ncornerRadiusTopLeft\n=\n3\n,\ncornerRadiusTopRight\n=\n3\n).\nencode\n(\nx\n=\n'\ntime:N\n'\n,\ny\n=\n'\nproduct:Q\n'\n,\ncolor\n=\n'\ncolumn:N\n'\n)\nEnter fullscreen mode\nExit fullscreen mode\nBokeh\nThe Bokeh packages are imported in this segment.\nfrom\nbokeh.io\nimport\noutput_file\n,\nshow\n,\noutput_notebook\n,\npush_notebook\nfrom\nbokeh.plotting\nimport\nfigure\nfrom\nbokeh.models\nimport\nColumnDataSource\n,\nHoverTool\n,\nCategoricalColorMapper\nfrom\nbokeh.layouts\nimport\nrow\n,\ncolumn\n,\ngridplot\nfrom\nbokeh.models.widgets\nimport\nTabs\n,\nPanel\noutput_notebook\n()\nEnter fullscreen mode\nExit fullscreen mode\nThe code for plotting the data is given below. The\nvbar_stack()\nis used for stacked bar chart.\noutput_file\n(\n\"\nbar_stacked.html\n\"\n)\ntime\n=\n[\n'\nJan\n'\n,\n'\nFeb\n'\n,\n'\nMar\n'\n,\n'\nApr\n'\n,\n'\nMay\n'\n,\n'\nJun\n'\n,\n'\nJul\n'\n,\n'\nAug\n'\n,\n'\nSep\n'\n,\n'\nOct\n'\n,\n'\nNov\n'\n,\n'\nDec\n'\n]\nproduct\n=\n[\n\"\nproduct_A\n\"\n,\n\"\nproduct_B\n\"\n]\ncolors\n=\n[\n\"\n#718dbf\n\"\n,\n\"\n#e84d60\n\"\n]\ndata\n=\n{\n'\ntime\n'\n:\ntime\n,\n'\nproduct_A\n'\n:\n[\n20\n,\n35\n,\n30\n,\n35\n,\n27\n,\n43\n,\n24\n,\n34\n,\n14\n,\n27\n,\n22\n,\n50\n],\n'\nproduct_B\n'\n:\n[\n25\n,\n32\n,\n34\n,\n20\n,\n25\n,\n34\n,\n54\n,\n23\n,\n43\n,\n33\n,\n27\n,\n29\n]\n}\np\n=\nfigure\n(\nx_range\n=\ntime\n,\nplot_height\n=\n250\n,\ntitle\n=\n\"\nSales of Products\n\"\n,\ntoolbar_location\n=\nNone\n,\ntools\n=\n\"\nhover\n\"\n)\np\n.\nvbar_stack\n(\nproduct\n,\nx\n=\n'\ntime\n'\n,\nwidth\n=\n0.9\n,\ncolor\n=\ncolors\n,\nsource\n=\ndata\n,\nlegend_label\n=\nproduct\n)\np\n.\ny_range\n.\nstart\n=\n0\np\n.\nx_range\n.\nrange_padding\n=\n0.1\np\n.\nxgrid\n.\ngrid_line_color\n=\nNone\np\n.\naxis\n.\nminor_tick_line_color\n=\nNone\np\n.\noutline_line_color\n=\nNone\np\n.\nlegend\n.\nlocation\n=\n\"\ntop_left\n\"\np\n.\nlegend\n.\norientation\n=\n\"\nhorizontal\n\"\nshow\n(\np\n)\nEnter fullscreen mode\nExit fullscreen mode\nR\nR is another famous language that is used by the ML and Data Science community. It is seen that R is used by more experienced Data scientists as it is a little difficult to learn than python. Two of the famous data visualization libraries of R are listed below-\nggplot2\nFirst, the\nggplot2\nlibrary is imported and then the dataframe is created. The\nhead()\nfunction is used to see the initial elements of dataframe.\nlibrary\n(\nggplot2\n)\ndf\n<-\ndata.frame\n(\ntime\n=\nc\n(\n'Jan'\n,\n'Feb'\n,\n'Mar'\n,\n'Apr'\n,\n'May'\n,\n'Jun'\n,\n'Jul'\n,\n'Aug'\n,\n'Sep'\n,\n'Oct'\n,\n'Nov'\n,\n'Dec'\n),\np1\n=\nc\n(\n20\n,\n35\n,\n30\n,\n35\n,\n27\n,\n43\n,\n24\n,\n34\n,\n14\n,\n27\n,\n22\n,\n50\n),\np2\n=\nc\n(\n25\n,\n32\n,\n34\n,\n20\n,\n25\n,\n34\n,\n54\n,\n23\n,\n43\n,\n33\n,\n27\n,\n29\n)\n)\nhead\n(\ndf\n)\nEnter fullscreen mode\nExit fullscreen mode\nThe dataframe is in long format which can be seen below as output of head() function.\nThe order of the\ntime\nvariable is fixed and the dataframe is converted into wide format.\ndf\n$\ntime\n<-\nfactor\n(\ndf\n$\ntime\n,\nlevels\n=\ndf\n$\ntime\n)\nlibrary\n(\nreshape2\n)\ndf1\n<-\nmelt\n(\ndf\n,\nid.var\n=\n\"time\"\n)\nEnter fullscreen mode\nExit fullscreen mode\nThe data is plotted and the variable used to store the plot is\np\n.\np\n<-\nggplot\n(\ndf1\n,\naes\n(\nx\n=\ntime\n,\ny\n=\nvalue\n,\nfill\n=\nvariable\n))\n+\ngeom_bar\n(\nstat\n=\n\"identity\"\n)\np\nEnter fullscreen mode\nExit fullscreen mode\nPlotly\nThe code for plotting stacked bar chart using plotly in R is given below.\nlibrary\n(\nplotly\n)\ntime\n=\nc\n(\n'Jan'\n,\n'Feb'\n,\n'Mar'\n,\n'Apr'\n,\n'May'\n,\n'Jun'\n,\n'Jul'\n,\n'Aug'\n,\n'Sep'\n,\n'Oct'\n,\n'Nov'\n,\n'Dec'\n)\np1\n=\nc\n(\n20\n,\n35\n,\n30\n,\n35\n,\n27\n,\n43\n,\n24\n,\n34\n,\n14\n,\n27\n,\n22\n,\n50\n)\np2\n=\nc\n(\n25\n,\n32\n,\n34\n,\n20\n,\n25\n,\n34\n,\n54\n,\n23\n,\n43\n,\n33\n,\n27\n,\n29\n)\ndata\n<-\ndata.frame\n(\ntime\n,\np1\n,\np2\n)\ndata\n$\ntime\n<-\nfactor\n(\ndata\n$\ntime\n,\nlevels\n=\ndata\n$\ntime\n)\nfig\n<-\nplot_ly\n(\ndata\n,\nx\n=\n~\ntime\n,\ny\n=\n~\np1\n,\ntype\n=\n'bar'\n,\nname\n=\n'Product A'\n)\nfig\n<-\nfig\n%>%\nadd_trace\n(\ny\n=\n~\np2\n,\nname\n=\n'Product B'\n)\nfig\n<-\nfig\n%>%\nlayout\n(\nyaxis\n=\nlist\n(\ntitle\n=\n'Sale of Products'\n),\nbarmode\n=\n'stack'\n)\nfig\nEnter fullscreen mode\nExit fullscreen mode\nI hope you all enjoyed this short introduction to data visualization and the code for stacked bar chart using different libraries. Comment your favorite library and like this post.",
  "metadata": {
    "title": "6 Famous Data Visualization Libraries (Python & R)📈 - DEV Community",
    "description": "Data Visualization means to convert information into a visual perspective like a map, graph, or chart... Tagged with datascience, python, tutorial, machinelearning.",
    "keywords": "datascience, python, tutorial, machinelearning, software, coding, development, engineering, inclusive, community",
    "author": null,
    "og:type": "article",
    "og:url": "https://dev.to/amananandrai/6-famous-data-visualization-libraries-4e4j",
    "og:title": "6 Famous Data Visualization Libraries (Python & R)📈",
    "og:description": "Data Visualization means to convert information into a visual perspective like a map, graph, or chart...",
    "og:site_name": "DEV Community",
    "og:image": "https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fv1x35bkotejosn3mdu9b.jpg",
    "twitter:site": "@thepracticaldev",
    "twitter:creator": "@",
    "twitter:title": "6 Famous Data Visualization Libraries (Python & R)📈",
    "twitter:description": "Data Visualization means to convert information into a visual perspective like a map, graph, or chart...",
    "twitter:card": "summary_large_image",
    "twitter:widgets:new-embed-design": "on",
    "twitter:image:src": "https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fv1x35bkotejosn3mdu9b.jpg"
  },
  "paywall": {
    "listed_paid": false,
    "detected": false,
    "marker": "",
    "public_only": false,
    "policy": "付费/会员内容只保留页面公开可见部分，不绕过付费墙"
  },
  "crawl": {
    "success": true,
    "status_code": 200,
    "error": ""
  },
  "code_blocks": [
    {
      "file": "attachments/31b239fd6789/code/body-000.txt",
      "chars": 526,
      "language": "text"
    },
    {
      "file": "attachments/31b239fd6789/code/body-001.txt",
      "chars": 446,
      "language": "text"
    },
    {
      "file": "attachments/31b239fd6789/code/body-002.txt",
      "chars": 413,
      "language": "text"
    },
    {
      "file": "attachments/31b239fd6789/code/body-003.txt",
      "chars": 527,
      "language": "text"
    },
    {
      "file": "attachments/31b239fd6789/code/body-004.txt",
      "chars": 285,
      "language": "text"
    },
    {
      "file": "attachments/31b239fd6789/code/body-005.txt",
      "chars": 794,
      "language": "text"
    },
    {
      "file": "attachments/31b239fd6789/code/body-006.txt",
      "chars": 263,
      "language": "text"
    },
    {
      "file": "attachments/31b239fd6789/code/body-007.txt",
      "chars": 95,
      "language": "text"
    },
    {
      "file": "attachments/31b239fd6789/code/body-008.txt",
      "chars": 96,
      "language": "text"
    },
    {
      "file": "attachments/31b239fd6789/code/body-009.txt",
      "chars": 523,
      "language": "text"
    }
  ],
  "images": [
    {
      "status": "ok",
      "url": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fz1zks71mpkxfa1q47mx5.png",
      "bytes": 8647,
      "reused": true,
      "local_path": "attachments/31b239fd6789/images/002.png",
      "src": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fz1zks71mpkxfa1q47mx5.png",
      "alt": "Alt Text",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgevzhg6d8c4roj4zbpls.png",
      "bytes": 35936,
      "reused": true,
      "local_path": "attachments/31b239fd6789/images/003.png",
      "src": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgevzhg6d8c4roj4zbpls.png",
      "alt": "Alt Text",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fle6f1atdwbwc270y2bwb.png",
      "bytes": 10995,
      "reused": true,
      "local_path": "attachments/31b239fd6789/images/004.png",
      "src": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fle6f1atdwbwc270y2bwb.png",
      "alt": "Alt Text",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2yj0phisraimleft5jte.png",
      "bytes": 3165,
      "reused": true,
      "local_path": "attachments/31b239fd6789/images/005.png",
      "src": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2yj0phisraimleft5jte.png",
      "alt": "Alt Text",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F52081fk29092l0v95y26.PNG",
      "bytes": 4835,
      "reused": true,
      "local_path": "attachments/31b239fd6789/images/006.png",
      "src": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F52081fk29092l0v95y26.PNG",
      "alt": "Alt Text",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffghofho6q2mr0ga2fi9f.PNG",
      "bytes": 2672,
      "reused": true,
      "local_path": "attachments/31b239fd6789/images/007.png",
      "src": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffghofho6q2mr0ga2fi9f.PNG",
      "alt": "Alt Text",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhe0x1vwgwq6jo9wgpoxp.png",
      "bytes": 35358,
      "reused": true,
      "local_path": "attachments/31b239fd6789/images/008.png",
      "src": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhe0x1vwgwq6jo9wgpoxp.png",
      "alt": "Alt Text",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8wtadgcjzyu07j22nx8q.png",
      "bytes": 25334,
      "reused": true,
      "local_path": "attachments/31b239fd6789/images/009.png",
      "src": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8wtadgcjzyu07j22nx8q.png",
      "alt": "Alt Text",
      "downloaded": true
    }
  ],
  "audio": [],
  "videos": [],
  "links": [
    {
      "href": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fz1zks71mpkxfa1q47mx5.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgevzhg6d8c4roj4zbpls.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fle6f1atdwbwc270y2bwb.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2yj0phisraimleft5jte.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F52081fk29092l0v95y26.PNG",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffghofho6q2mr0ga2fi9f.PNG",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhe0x1vwgwq6jo9wgpoxp.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8wtadgcjzyu07j22nx8q.png",
      "label": "",
      "type": "a"
    }
  ],
  "repair_version": 2,
  "repaired_at": "2026-10-14T10:49:21Z",
  "source_url": "https://dev.to/amananandrai/6-famous-data-visualization-libraries-4e4j",
  "papers": [],
  "actual_video_files": [],
  "body_chars": 8019,
  "expected_body_images": 8,
  "discovery_status": "ok",
  "delivery_status": "ok",
  "missing_reason": "",
  "raw_html": "attachments/31b239fd6789/pages/source.html",
  "local_html": "attachments/31b239fd6789/pages/article.html",
  "body_base_path": "attachments/31b239fd6789/pages/",
  "body_markdown_path": "attachments/31b239fd6789/pages/article.md"
}