如何用python绘制圆_如何在python中绘制300万个圆圈
我在熊猫数据框中有许多(〜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万个圆圈相关推荐
- matlab绘制线性回归_如何在Excel中绘制线性校准曲线
matlab绘制线性回归 Excel has built-in features that you can use to display your calibration data and calcu ...
- python turtle渐变色_如何在matplotlib中绘制渐变色线?
我最近用类似的请求(creating over 20 unique legend colors using matplotlib)回答了一个问题.在这里,我展示了你可以将绘制线条所需的颜色循环映射到颜 ...
- python画十字_如何在pyqtgraph中绘制十字线和绘制鼠标位置?
我是Python和pyqtgraph的新手.我正在研究一种不同类型信号的查看器.当我想要包含一个十字线和一个带有鼠标位置的文本标签时,我被卡住了.我正在使用GridLayout,因为稍后图形将与其他几 ...
- python图片马赛克_如何在Matplotlib中绘制马赛克图
color_label:向y记号标签添加背景色.[对/错]def mosaic_plot(df, dic_color_row, row_labels=None, col_labels=None, al ...
- xmind可以画流程图吗_如何在XMind 中绘制流程图?
XMind 是专业强大的思维导图软件,由于其结构没有任何限制,很多朋友特别喜欢用它来绘制流程图.那么,就出现这样一个问题,如何在 XMind 中绘制流程图?下面就和小编一起来看看吧! 如何在 XMin ...
- python 线性回归模型_如何在Python中建立和训练线性和逻辑回归ML模型
python 线性回归模型 Linear regression and logistic regression are two of the most popular machine learning ...
- python自增_如何在python语言实现自增和自减功能并显示结果
在python语言中,跟Java和JavaScript语言不一样,python中没有自增和自减功能,而Java和JavaScript中有.但是,python语言可以使用变量加1或减1替换.下面利用几个 ...
- unbantu上python安装步骤_如何在Ubuntu中安装Python 3.6?
Python是增长最快的主要通用编程语言.原因有很多,比如它的可读性和灵活性,易于学习和使用,可靠和高效. 有两个主要的Python版本被使用- 2和3 (Python的现在和未来);前者将看不到新的 ...
- python进程暂停_如何在Python中暂停多进程?
我希望用户能够在怎么开始的实现它?在 我的代码是:# -*- coding: utf-8 -*- from PySide import QtCore, QtGui from Ui_MainWindow ...
最新文章
- 2019 半导体领袖新年展望(一)| 半导体行业观察
- android广播intent原理,Android中BroadcastReceiver详解
- R语言实战应用精讲50篇(二十五)-时空数据统计模型:确定性预测模型
- 转载--CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡
- 【VS开发】Wix 安装教程
- php 将一个字符串转换成数组,PHP将一个字符串转换成数组
- Spring Cloud各组件超时
- P4320-道路相遇,P5058-[ZJOI2004]嗅探器【圆方树,LCA】
- 启动mac版docker自带的k8s
- 高性能Javascript HTML集合访问的学习笔记
- 深度学习课程笔记(七):模仿学习(imitation learning)
- Python3.6 的字符串内建函数
- C#开发移动应用 - 环境搭建
- django form 介绍
- (转)《精通比特币》原码分析: rpc_block
- Flash cs6 学习(一) 制作一个包含几个按钮控件的影片剪辑
- 计算机应用程序无响应怎么回事啊,win10程序无响应怎么办?程序无响应的解决方法...
- 免费中通快递对接快递鸟单号查询接口对接方法
- php中array_unshift,php中array_unshift()修改数组key注意事项分析
- mysql增加字段 first_MySQL教程41-MySQL数据表添加字段