我在熊猫数据框中有许多(〜3M)圆的数据集(每个圆都有x,y和od属性).我想将它们相互绘制以可视化图案

我以前使用较小的数据集(大约15,000个圆圈)完成了此操作,但现在似乎很king琐(到我只有几十万的时候,内存就增加到了16GB)

df是数据框

plt是matplotlib.pyplot

ax2=plt.gca(xlim=(-.25,.25),ylim=(-0.25,0.25))

for i,row in df.iterrows():

x=row.X_delta

y=row.Y_delta

od=float(row.OD)

circle=plt.Circle((x,y),od/2,color='r',fill=False,lw=5,alpha=0.01)

ax2.add_artist(circle)

有什么想法可以提高内存效率吗?

解决方法:

在一个图中绘制所有300万个圆圈似乎不是一种可行的方法.这是一个只有1000个圆圈的示例(example by matt_s之后):

相反,我建议减少画圆的数量,使其达到合理的值,例如50或100.一种方法是在数据集中运行KMeans,以按坐标和直径对圆进行聚类.下图举例说明了100,000个随机圆的聚类.这应该很容易扩展到300万个圈子.

标记的尺寸表示直径(s,按比例缩放以适合图表),颜色表示每个聚类中心的圆数(c).青年汽车

用于绘制第一个图表的代码(ipython)

%matplotlib inline

import pandas as pd

import numpy as np

n = 1000

circles = pd.DataFrame({'x': np.random.random(n), 'y': np.random.random(n), 'r': np.random.random(n)},)

circles.plot(kind='scatter', x='x', y='y', s=circles['r']*1000, c=circles.r * 10, facecolors='none')

用于绘制第二张图表的代码(ipython)

%matplotlib inline

from sklearn.cluster import KMeans

import matplotlib.pyplot as plt

import pandas as pd

import numpy as np

# parameters

n = 100000

n_clusters = 50

# dummy data

circles = pd.DataFrame({'x': np.random.random(n), 'y': np.random.random(n), 'r': np.random.random(n)})

# cluster using kmeans

km = KMeans(n_clusters=n_clusters, n_jobs=-2)

circles['cluster'] = pd.Series(km.fit_predict(circles.as_matrix()))

# bin by cluster

cluster_size = circles.groupby('cluster').cluster.count()

# plot, using #circles / per cluster as the od weight

clusters = km.cluster_centers_

fig = plt.figure()

ax = plt.scatter(x=clusters[:,0], y=clusters[:,1], # clusters x,y

c=cluster_size, #color

s=clusters[:,2] * 1000, #diameter, scaled

facecolors='none') # don't fill markers

plt.colorbar()

fig.suptitle('clusters by #circles, c/d = size')

plt.xlabel('x')

plt.ylabel('y')

标签:pandas,matplotlib,memory,data-visualization,python

来源: https://codeday.me/bug/20191119/2036287.html

如何用python绘制圆_如何在python中绘制300万个圆圈相关推荐

  1. matlab绘制线性回归_如何在Excel中绘制线性校准曲线

    matlab绘制线性回归 Excel has built-in features that you can use to display your calibration data and calcu ...

  2. python turtle渐变色_如何在matplotlib中绘制渐变色线?

    我最近用类似的请求(creating over 20 unique legend colors using matplotlib)回答了一个问题.在这里,我展示了你可以将绘制线条所需的颜色循环映射到颜 ...

  3. python画十字_如何在pyqtgraph中绘制十字线和绘制鼠标位置?

    我是Python和pyqtgraph的新手.我正在研究一种不同类型信号的查看器.当我想要包含一个十字线和一个带有鼠标位置的文本标签时,我被卡住了.我正在使用GridLayout,因为稍后图形将与其他几 ...

  4. python图片马赛克_如何在Matplotlib中绘制马赛克图

    color_label:向y记号标签添加背景色.[对/错]def mosaic_plot(df, dic_color_row, row_labels=None, col_labels=None, al ...

  5. xmind可以画流程图吗_如何在XMind 中绘制流程图?

    XMind 是专业强大的思维导图软件,由于其结构没有任何限制,很多朋友特别喜欢用它来绘制流程图.那么,就出现这样一个问题,如何在 XMind 中绘制流程图?下面就和小编一起来看看吧! 如何在 XMin ...

  6. python 线性回归模型_如何在Python中建立和训练线性和逻辑回归ML模型

    python 线性回归模型 Linear regression and logistic regression are two of the most popular machine learning ...

  7. python自增_如何在python语言实现自增和自减功能并显示结果

    在python语言中,跟Java和JavaScript语言不一样,python中没有自增和自减功能,而Java和JavaScript中有.但是,python语言可以使用变量加1或减1替换.下面利用几个 ...

  8. unbantu上python安装步骤_如何在Ubuntu中安装Python 3.6?

    Python是增长最快的主要通用编程语言.原因有很多,比如它的可读性和灵活性,易于学习和使用,可靠和高效. 有两个主要的Python版本被使用- 2和3 (Python的现在和未来);前者将看不到新的 ...

  9. python进程暂停_如何在Python中暂停多进程?

    我希望用户能够在怎么开始的实现它?在 我的代码是:# -*- coding: utf-8 -*- from PySide import QtCore, QtGui from Ui_MainWindow ...

最新文章

  1. 2019 半导体领袖新年展望(一)| 半导体行业观察
  2. android广播intent原理,Android中BroadcastReceiver详解
  3. R语言实战应用精讲50篇(二十五)-时空数据统计模型:确定性预测模型
  4. 转载--CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
  5. 【VS开发】Wix 安装教程
  6. php 将一个字符串转换成数组,PHP将一个字符串转换成数组
  7. Spring Cloud各组件超时
  8. P4320-道路相遇,P5058-[ZJOI2004]嗅探器【圆方树,LCA】
  9. 启动mac版docker自带的k8s
  10. 高性能Javascript HTML集合访问的学习笔记
  11. 深度学习课程笔记(七):模仿学习(imitation learning)
  12. Python3.6 的字符串内建函数
  13. C#开发移动应用 - 环境搭建
  14. django form 介绍
  15. (转)《精通比特币》原码分析: rpc_block
  16. Flash cs6 学习(一) 制作一个包含几个按钮控件的影片剪辑
  17. 计算机应用程序无响应怎么回事啊,win10程序无响应怎么办?程序无响应的解决方法...
  18. 免费中通快递对接快递鸟单号查询接口对接方法
  19. php中array_unshift,php中array_unshift()修改数组key注意事项分析
  20. mysql增加字段 first_MySQL教程41-MySQL数据表添加字段

热门文章

  1. 大文娱,文学与文娱(2)
  2. 《薄冰实用英语语法详解》独家连载之十四:介词
  3. skt计算机仿真,基于AnyCasting的机床床身铸造工艺计算机仿真与优化_朱旭刚
  4. Microsoft微软公司硬件控制编程技术介绍
  5. 基于单片机的四层电梯控制系统设计
  6. 记录软件帮助很大---写给2018年1月的自己
  7. 智能云原生应用的崛起
  8. C-TPAT认证咨询,当实体加入CTPAT时,将与CBP达成协议以保护供应链
  9. CentOS 6.5下搭建Maven私服nexus
  10. 最新七合一收款码合成系统源码+34款样式