{
  "source_file": "0930",
  "source_platform": "Medium",
  "author": "Bex T.",
  "title_listed": "How to Visualize Differentially Private Datasets in Matplotlib with Antigranular",
  "keywords": "差分隐私,可视化,Matplotlib",
  "domain": "数据处理",
  "content_type": "深度技术解析",
  "is_paid_flag": "部分免费/会员墙",
  "url": "https://medium.datadriveninvestor.com/how-to-visualize-differentially-private-datasets-in-matplotlib-with-antigranular-c4ca7c0309ae",
  "publish_date": "2024-07",
  "corpus_stage": "预训练/SFT",
  "notes": "",
  "id": "d00897109eff",
  "collected_at": "2026-10-02T00:40:06",
  "title": "How to Visualize Differentially Private Datasets in Matplotlib with Antigranular | by Bex T. | DataDrivenInvestor",
  "body_markdown": "[Sitemap](https://medium.datadriveninvestor.com/sitemap/sitemap.xml)\n[Open in app](https://play.google.com/store/apps/details?id=com.medium.reader&referrer=utm_source%3DmobileNavBar&source=---top_nav_layout_nav-------------------------------------------)\nSign up\n[Sign in](https://medium.com/m/signin?operation=login&redirect=https%3A%2F%2Fmedium.datadriveninvestor.com%2Fhow-to-visualize-differentially-private-datasets-in-matplotlib-with-antigranular-c4ca7c0309ae&source=post_page---top_nav_layout_nav-----------------------global_nav--------------------)\n[Medium Logo](https://medium.com/?source=---top_nav_layout_nav-------------------------------------------)\nGet app\n[Write](https://medium.com/m/signin?operation=register&redirect=https%3A%2F%2Fmedium.com%2Fnew-story&source=---top_nav_layout_nav-----------------------new_post_topnav--------------------)\n[Search](https://medium.com/search?source=---top_nav_layout_nav-------------------------------------------)\nSign up\n[Sign in](https://medium.com/m/signin?operation=login&redirect=https%3A%2F%2Fmedium.datadriveninvestor.com%2Fhow-to-visualize-differentially-private-datasets-in-matplotlib-with-antigranular-c4ca7c0309ae&source=post_page---top_nav_layout_nav-----------------------global_nav--------------------)\n![Unknown user](https://miro.medium.com/v2/resize:fill:64:64/1*dmbNkD5D-u45r44go_cf0g.png)\n## [DataDrivenInvestor](https://medium.datadriveninvestor.com/?source=post_page---publication_nav-32881626c9c9-c4ca7c0309ae-----------------------------------------)\n·\nFollow publication\n[![DataDrivenInvestor](https://miro.medium.com/v2/resize:fill:76:76/1*2mBCfRUpdSYRuf9EKnhTDQ.png)](https://medium.datadriveninvestor.com/?source=post_page---post_publication_sidebar-32881626c9c9-c4ca7c0309ae-----------------------------------------)\nempowerment through data, knowledge, and expertise. Join DDI community at <https://join.datadriveninvestor.com>\nFollow publication\nMember-only story\n[Privacy](https://medium.com/tag/privacy?source=post_page---header_tags--c4ca7c0309ae-----------------------------------------)\n[Data Science](https://medium.com/tag/data-science?source=post_page---header_tags--c4ca7c0309ae-----------------------------------------)\n[Data Visualization](https://medium.com/tag/data-visualization?source=post_page---header_tags--c4ca7c0309ae-----------------------------------------)\n[Machine Learning](https://medium.com/tag/machine-learning?source=post_page---header_tags--c4ca7c0309ae-----------------------------------------)\n[Dataset](https://medium.com/tag/dataset?source=post_page---header_tags--c4ca7c0309ae-----------------------------------------)\n# How to Visualize Differentially Private Datasets in Matplotlib with Antigranular\n## A novel approach that still preserves the privacy of dataset while being fully-functional\n[![Bex T.](https://miro.medium.com/v2/resize:fill:64:64/1*utsNunS-76Mnd3RMNXz5MA.png)](https://ibexorigin.medium.com/?source=post_page---byline--c4ca7c0309ae-----------------------------------------)\n[Bex T.](https://ibexorigin.medium.com/?source=post_page---byline--c4ca7c0309ae-----------------------------------------)\nFollow\n15 min read\n·\nJul 20, 2024\n[](https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fdatadriveninvestor%2Fc4ca7c0309ae&operation=register&redirect=https%3A%2F%2Fmedium.datadriveninvestor.com%2Fhow-to-visualize-differentially-private-datasets-in-matplotlib-with-antigranular-c4ca7c0309ae&user=Bex+T.&userId=39db050c2ac2&source=---header_actions--c4ca7c0309ae---------------------clap_footer--------------------)\n[](https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Frepost%2Fp%2Fc4ca7c0309ae&operation=register&redirect=https%3A%2F%2Fmedium.datadriveninvestor.com%2Fhow-to-visualize-differentially-private-datasets-in-matplotlib-with-antigranular-c4ca7c0309ae&user=Bex+T.&userId=39db050c2ac2&source=---header_actions--c4ca7c0309ae---------------------repost_header--------------------)\n[](https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Fc4ca7c0309ae&operation=register&redirect=https%3A%2F%2Fmedium.datadriveninvestor.com%2Fhow-to-visualize-differentially-private-datasets-in-matplotlib-with-antigranular-c4ca7c0309ae&source=---header_actions--c4ca7c0309ae---------------------bookmark_footer--------------------)\n[Listen](https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2Fplans%3Fdimension%3Dpost_audio_button%26postId%3Dc4ca7c0309ae&operation=register&redirect=https%3A%2F%2Fmedium.datadriveninvestor.com%2Fhow-to-visualize-differentially-private-datasets-in-matplotlib-with-antigranular-c4ca7c0309ae&source=---header_actions--c4ca7c0309ae---------------------post_audio_button--------------------)\nShare\n![image.png](https://miro.medium.com/v2/1*hskkLa4rTzMkRuc-9XF6OQ.png)\nImage by author with Leonardo AI\n### Introduction\nIn March 2024, Oblivious AI held a bootcamp on differential privacy at Oxford University. While attending the event, I got to work on a very interesting problem — preserving individual privacy in web analytics datasets using differential privacy.\nMany websites can track mouse and keyboard activity of their users by capturing features such as X and Y coordinates, velocity, and analyze this data with the intent to improve website experience. However, since this data is collected at user level, it is only possible to share it with third parties after anonymization.\nThe question we tackled was — can a malicious actor de-anonymize this data by analyzing users’ mouse and keyboard tracking data? Specifically, we wanted to explore whether older people are more at risk of a targeted attack if the speed of their typing and mouse movements are exposed.\nOn the surface, age group itself might seem like a harmless piece of information. However, certain parties can exploit it in several ways such as:\n  * **Targeted scams** : Knowing…\n\n\n## \nCreate an account to read the full story.\nThe author made this story available to Medium members only.  \nIf you’re new to Medium, create a new account to read this story on us.\n[Continue in app](https://play.google.com/store/apps/details?id=com.medium.reader&referrer=utm_source%3Dregwall&source=-----c4ca7c0309ae---------------------post_regwall--------------------)\nOr, continue in mobile web\nAlready have an account? [Sign in](https://medium.com/m/signin?operation=login&redirect=https%3A%2F%2Fmedium.datadriveninvestor.com%2Fhow-to-visualize-differentially-private-datasets-in-matplotlib-with-antigranular-c4ca7c0309ae&source=-----c4ca7c0309ae---------------------post_regwall--------------------)\n[](https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fdatadriveninvestor%2Fc4ca7c0309ae&operation=register&redirect=https%3A%2F%2Fmedium.datadriveninvestor.com%2Fhow-to-visualize-differentially-private-datasets-in-matplotlib-with-antigranular-c4ca7c0309ae&user=Bex+T.&userId=39db050c2ac2&source=---footer_actions--c4ca7c0309ae---------------------clap_footer--------------------)\n[](https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fdatadriveninvestor%2Fc4ca7c0309ae&operation=register&redirect=https%3A%2F%2Fmedium.datadriveninvestor.com%2Fhow-to-visualize-differentially-private-datasets-in-matplotlib-with-antigranular-c4ca7c0309ae&user=Bex+T.&userId=39db050c2ac2&source=---footer_actions--c4ca7c0309ae---------------------clap_footer--------------------)\n[](https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Frepost%2Fp%2Fc4ca7c0309ae&operation=register&redirect=https%3A%2F%2Fmedium.datadriveninvestor.com%2Fhow-to-visualize-differentially-private-datasets-in-matplotlib-with-antigranular-c4ca7c0309ae&user=Bex+T.&userId=39db050c2ac2&source=---footer_actions--c4ca7c0309ae---------------------repost_footer--------------------)\n[](https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Fc4ca7c0309ae&operation=register&redirect=https%3A%2F%2Fmedium.datadriveninvestor.com%2Fhow-to-visualize-differentially-private-datasets-in-matplotlib-with-antigranular-c4ca7c0309ae&source=---footer_actions--c4ca7c0309ae---------------------bookmark_footer--------------------)\n[![Bex T.](https://miro.medium.com/v2/resize:fill:96:96/1*utsNunS-76Mnd3RMNXz5MA.png)](https://ibexorigin.medium.com/?source=post_page---post_author_info--c4ca7c0309ae-----------------------------------------)\n[![Bex T.](https://miro.medium.com/v2/resize:fill:128:128/1*utsNunS-76Mnd3RMNXz5MA.png)](https://ibexorigin.medium.com/?source=post_page---post_author_info--c4ca7c0309ae-----------------------------------------)\nFollow\n## [Written by Bex T.](https://ibexorigin.medium.com/?source=post_page---post_author_info--c4ca7c0309ae-----------------------------------------)\n[41K followers](https://ibexorigin.medium.com/followers?source=post_page---post_author_info--c4ca7c0309ae-----------------------------------------)\n·[188 following](https://medium.com/@ibexorigin/following?source=post_page---post_author_info--c4ca7c0309ae-----------------------------------------)\nBEXGBoost | DataCamp Instructor |🥇Top 10 AI/ML Writer on Medium | Kaggle Master | <https://www.linkedin.com/in/bextuychiev/>\nFollow\n[![DataDrivenInvestor](https://miro.medium.com/v2/resize:fill:96:96/1*2mBCfRUpdSYRuf9EKnhTDQ.png)](https://medium.datadriveninvestor.com/?source=post_page---post_publication_info--c4ca7c0309ae-----------------------------------------)\n[![DataDrivenInvestor](https://miro.medium.com/v2/resize:fill:128:128/1*2mBCfRUpdSYRuf9EKnhTDQ.png)](https://medium.datadriveninvestor.com/?source=post_page---post_publication_info--c4ca7c0309ae-----------------------------------------)\nFollow\n## [Published in DataDrivenInvestor](https://medium.datadriveninvestor.com/?source=post_page---post_publication_info--c4ca7c0309ae-----------------------------------------)\n[110K followers](https://medium.datadriveninvestor.com/followers?source=post_page---post_publication_info--c4ca7c0309ae-----------------------------------------)\n·[Last published 3 days ago](https://medium.datadriveninvestor.com/the-best-ai-diagnostic-may-be-the-one-that-proves-itself-wrong-00e9f9d158b0?source=post_page---post_publication_info--c4ca7c0309ae-----------------------------------------)\nempowerment through data, knowledge, and expertise. Join DDI community at <https://join.datadriveninvestor.com>\nFollow\n[Help](https://help.medium.com/hc/en-us?source=post_page-----c4ca7c0309ae-----------------------------------------)\n[Status](https://status.medium.com/?source=post_page-----c4ca7c0309ae-----------------------------------------)\n[About](https://medium.com/about?autoplay=1&source=post_page-----c4ca7c0309ae-----------------------------------------)\n[Careers](https://medium.com/jobs-at-medium/work-at-medium-959d1a85284e?source=post_page-----c4ca7c0309ae-----------------------------------------)\nPress\n[Blog](https://blog.medium.com/?source=post_page-----c4ca7c0309ae-----------------------------------------)\n[Store](https://medium.com/store)\n[Privacy](https://policy.medium.com/medium-privacy-policy-f03bf92035c9?source=post_page-----c4ca7c0309ae-----------------------------------------)\n[Rules](https://policy.medium.com/medium-rules-30e5502c4eb4?source=post_page-----c4ca7c0309ae-----------------------------------------)\n[Terms](https://policy.medium.com/medium-terms-of-service-9db0094a1e0f?source=post_page-----c4ca7c0309ae-----------------------------------------)\n[Text to speech](https://speechify.com/medium?source=post_page-----c4ca7c0309ae-----------------------------------------)\n",
  "metadata": {
    "title": "How to Visualize Differentially Private Datasets in Matplotlib with Antigranular | by Bex T. | DataDrivenInvestor",
    "description": "How to Visualize Differentially Private Datasets in Matplotlib with Antigranular A novel approach that still preserves the privacy of dataset while being fully-functional Introduction In March 2024 …",
    "keywords": null,
    "author": "Bex T.",
    "og:site_name": "Medium",
    "og:type": "article",
    "og:title": "How to Visualize Differentially Private Datasets in Matplotlib with Antigranular",
    "og:description": "Introduction",
    "og:url": "https://medium.datadriveninvestor.com/how-to-visualize-differentially-private-datasets-in-matplotlib-with-antigranular-c4ca7c0309ae",
    "og:image": "https://miro.medium.com/v2/resize:fit:1200/1*hskkLa4rTzMkRuc-9XF6OQ.png",
    "og:image:alt": "image.png",
    "twitter:app:name:iphone": "Medium",
    "twitter:app:id:iphone": "828256236",
    "twitter:site": "@DDInvestorHQ",
    "twitter:app:url:iphone": "medium://p/c4ca7c0309ae",
    "twitter:image:src": "https://miro.medium.com/v2/resize:fit:1200/1*hskkLa4rTzMkRuc-9XF6OQ.png",
    "twitter:image:alt": "image.png",
    "twitter:card": "summary_large_image",
    "twitter:creator": "@BexTuychiev",
    "twitter:label1": "Reading time",
    "twitter:data1": "15 min read",
    "article:published_time": "2024-07-20T07:20:52.869Z",
    "article:author": "https://ibexorigin.medium.com"
  },
  "paywall": {
    "listed_paid": true,
    "detected": false,
    "marker": "",
    "public_only": true,
    "policy": "付费/会员内容只保留页面公开可见部分，不绕过付费墙"
  },
  "crawl": {
    "success": true,
    "status_code": 200,
    "error": "",
    "retried": true
  },
  "code_blocks": [],
  "images": [
    {
      "src": "https://miro.medium.com/v2/resize:fill:64:64/1*dmbNkD5D-u45r44go_cf0g.png",
      "alt": "Unknown user",
      "local_path": "attachments/d00897109eff/images/000.png",
      "bytes": 1474,
      "downloaded": true
    },
    {
      "src": "https://miro.medium.com/v2/resize:fill:76:76/1*2mBCfRUpdSYRuf9EKnhTDQ.png",
      "alt": "DataDrivenInvestor",
      "local_path": "attachments/d00897109eff/images/001.png",
      "bytes": 2265,
      "downloaded": true
    },
    {
      "src": "https://miro.medium.com/v2/resize:fill:64:64/1*utsNunS-76Mnd3RMNXz5MA.png",
      "alt": "Bex T.",
      "local_path": "attachments/d00897109eff/images/002.png",
      "bytes": 7181,
      "downloaded": true
    },
    {
      "src": "https://miro.medium.com/v2/1*hskkLa4rTzMkRuc-9XF6OQ.png",
      "alt": "image.png",
      "local_path": "attachments/d00897109eff/images/003.png",
      "bytes": 1023336,
      "downloaded": true
    },
    {
      "src": "https://miro.medium.com/v2/format:webp/1*hskkLa4rTzMkRuc-9XF6OQ.png",
      "alt": "image.png",
      "local_path": "attachments/d00897109eff/images/004.png",
      "bytes": 58886,
      "downloaded": true
    }
  ],
  "audio": [],
  "videos": [],
  "links": [
    {
      "type": "external",
      "href": "https://www.cloudflare.com/5xx-error-landing"
    }
  ],
  "retry_at": "2026-10-03T08:01:05",
  "repair_version": 2,
  "repaired_at": "2026-10-14T11:11:49Z",
  "source_url": "https://medium.datadriveninvestor.com/how-to-visualize-differentially-private-datasets-in-matplotlib-with-antigranular-c4ca7c0309ae",
  "delivery_status": "excluded_paid",
  "discovery_status": "excluded_paid",
  "missing_reason": "按原约定排除付费/会员全文"
}