python区域增长_Python – 有效地为高密度区域创建密度图,稀疏区域的点
我需要制作一个剧情,就像剧情中高密度地区的密度图一样,但低于某个阈值则使用个别点.我找不到任何与matplotlib缩略图库或谷歌搜索中所需的代码类似的代码.我有一个我自己写的工作代码,但是当点/仓数量很大时,它有点棘手,(更重要的是)花费了不可接受的长时间.这是代码:
import numpy as np
import math
import matplotlib as mpl
import matplotlib.pyplot as plt
import pylab
import numpy.random
#Create the colormap:
halfpurples = {'blue': [(0.0,1.0,1.0),(0.000001, 0.78431373834609985, 0.78431373834609985),
(0.25, 0.729411780834198, 0.729411780834198), (0.5,
0.63921570777893066, 0.63921570777893066), (0.75,
0.56078433990478516, 0.56078433990478516), (1.0, 0.49019607901573181,
0.49019607901573181)],
'green': [(0.0,1.0,1.0),(0.000001,
0.60392159223556519, 0.60392159223556519), (0.25,
0.49019607901573181, 0.49019607901573181), (0.5,
0.31764706969261169, 0.31764706969261169), (0.75,
0.15294118225574493, 0.15294118225574493), (1.0, 0.0, 0.0)],
'red': [(0.0,1.0,1.0),(0.000001,
0.61960786581039429, 0.61960786581039429), (0.25,
0.50196081399917603, 0.50196081399917603), (0.5,
0.41568627953529358, 0.41568627953529358), (0.75,
0.32941177487373352, 0.32941177487373352), (1.0,
0.24705882370471954, 0.24705882370471954)]}
halfpurplecmap = mpl.colors.LinearSegmentedColormap('halfpurples',halfpurples,256)
#Create x,y arrays of normally distributed points
npts = 1000
x = numpy.random.standard_normal(npts)
y = numpy.random.standard_normal(npts)
#Set bin numbers in both axes
nxbins = 25
nybins = 25
#Set the cutoff for resolving the individual points
minperbin = 1
#Make the density histrogram
H, yedges, xedges = np.histogram2d(y,x,bins=(nybins,nxbins))
#Reorient the axes
H = H[::-1]
extent = [xedges[0],xedges[-1],yedges[0],yedges[-1]]
#Compute all bins where the density plot value is below (or equal to) the threshold
lowxleftedges = [[xedges[i] for j in range(len(H[:,i])) if H[j,i] <= minperbin] for i in range(len(H[0,:]))]
lowxrightedges = [[xedges[i+1] for j in range(len(H[:,i])) if H[j,i] <= minperbin] for i in range(len(H[0,:]))]
lowyleftedges = [[yedges[-(j+2)] for j in range(len(H[:,i])) if H[j,i] <= minperbin] for i in range(len(H[0,:]))]
lowyrightedges = [[yedges[-(j+1)] for j in range(len(H[:,i])) if H[j,i] <= minperbin] for i in range(len(H[0,:]))]
#Flatten and convert to numpy array
lowxleftedges = np.asarray([item for sublist in lowxleftedges for item in sublist])
lowxrightedges = np.asarray([item for sublist in lowxrightedges for item in sublist])
lowyleftedges = np.asarray([item for sublist in lowyleftedges for item in sublist])
lowyrightedges = np.asarray([item for sublist in lowyrightedges for item in sublist])
#Find all points that lie in these regions
lowdatax = [[x[i] for j in range(len(lowxleftedges)) if lowxleftedges[j] <= x[i] and x[i] <= lowxrightedges[j] and lowyleftedges[j] <= y[i] and y[i] <= lowyrightedges[j]] for i in range(len(x))]
lowdatay = [[y[i] for j in range(len(lowyleftedges)) if lowxleftedges[j] <= x[i] and x[i] <= lowxrightedges[j] and lowyleftedges[j] <= y[i] and y[i] <= lowyrightedges[j]] for i in range(len(y))]
#Flatten and convert into numpy array
lowdatax = np.asarray([item for sublist in lowdatax for item in sublist])
lowdatay = np.asarray([item for sublist in lowdatay for item in sublist])
#Plot
fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
ax1.plot(lowdatax,lowdatay,linestyle='.',marker='o',mfc='k',mec='k')
cp1 = ax1.imshow(H,interpolation='nearest',extent=extent,cmap=halfpurplecmap,vmin=minperbin)
fig1.colorbar(cp1)
fig1.savefig('contourtest.eps')
此代码生成的图像如下所示:
但是,当使用较大的数据集时,程序需要几秒钟到几分钟.有什么想法如何加速?谢谢!
python区域增长_Python – 有效地为高密度区域创建密度图,稀疏区域的点相关推荐
- python蜡烛图预测_Python数据可视化:如何用mplfinance创建蜡烛图
一图胜千言,使用Python的matplotlib库,可以快速创建高质量的图形. 我们团队推出一个新的系列教程:Python数据可视化,针对初级和中级用户,将理论和示例代码相结合,使用matplotl ...
- python画代码-Python教程_Python画Mandelbrot集 代码
Python教程_Python画Mandelbrot集 代码 作者:Comet 来源: 课课家 www.kokojia.com点击数:278发布时间:2015-06-19 11:17:19 曼德勃罗集 ...
- python编程语言_python编程语言的简要历史
python编程语言 The Python programming language is a general-purpose programming language that has carved ...
- python学好了能干啥_新手该如何学python怎么学好python?_python学好了能干什么
1)学好python的第一步,就是马上到www.python.org网站上下载一个python版本.我建议初学者,不要下载具有IDE功能的集成开发环境,比如Eclipse插件等. 2)下载完毕后,就可 ...
- python相关函数_python常用函数精讲
原标题:python常用函数精讲 返回值为bool类型的函数 bool是Boolean的缩写,只有真(True)和假(False)两种取值 bool函数只有一个参数,并根据这个参数的值返回真或者假. ...
- python在匿名函数作和_跟光磊学Python开发-匿名函数函数和高阶函数
跟光磊学Python开发-匿名函数函数和高阶函数 跟光磊学Python开发-匿名函数函数和高阶函数跟光磊学Python开发 匿名函数 匿名函数就是函数定义时没有名字的函数,也称为匿名表达式. 普通函数 ...
- 一文看懂Python(八)-----内置高阶函数用法总结
函数是Python的核心内容之一,能够提高代码的重复利用率.为了更好的使用函数,有必要了解函数的一些高级用法. Python内置了三个高阶函数:所谓高阶函数就是以函数作为参数,或者返回一个函数的函数, ...
- 利用python进行数据分析第二版pdf百度云_参考《利用Python进行数据分析(第二版)》高清中文PDF+高清英文PDF+源代码...
第2版针对Python 3.6进行全面修订和更新,涵盖新版的pandas.NumPy.IPython和Jupyter,并增加大量实际案例,可以帮助高效解决一系列数据分析问题. 第2版中的主要更新了Py ...
- python删除行_python 删除文件中指定行
原博文 2017-03-20 19:18 − 代码适用情况:xml文件,循环出现某几行,根据这几行中的某个字段删掉这几行这段代码的作用删除jenkins中config.xml中在自动生成pipline ...
最新文章
- size-t数据类型 ssize-t数据类型
- excel大作业素材_Excel | 同一单元格内多个姓名,如何统计人数
- java在控制台打印余弦曲线,java打印正弦曲线示例
- DELPHI GetClassName - 获取指定窗口的类名
- 理解Java对象序列化——Serializable接口
- OLAP-impala-大数据Week13-DAY6-impala
- c/c++中关于sizeof、strlen的使用说明
- 母亲节第二期|有哪些母亲节祝福贺卡的素材灵感来源?
- 如何把电脑加上公司的域
- [ArcGIS] 空间分析(八) 水文分析
- 如何设置word的默认输入法——搜狗输入法
- 写在2021最后一天
- 如何让AR拥有镜子的反光效果(ios)
- B+树算法在mysql中能存多少行数据?
- 天猫精灵设备拆机及系统分析
- linux 挂载iso系统镜像文件
- 时滞电力系统matlab,基于Wirtinger不等式的时滞电力系统稳定性判定方法
- 利用Peakscanner软件对测序仪获取的分子标记数据进行初步识别
- 第十五课(1)Nor FLash原理及硬件介绍
- Cesuim中线的波动纹理
热门文章
- 淘宝 oracle mysql_Oracle 与 MySQL 的区别-阿里云开发者社区
- java aes 工具类_Java AES加密算法工具类
- 获取以逗号分隔的多个数据输入成列表,计算基本统计值(平均值、标准差、中位数)
- VTK:可编程字形过滤器用法实战
- wxWidgets:wxCriticalSectionLocker类用法
- boost::mpl模块实现pair_view相关的测试程序
- boost::mp11::mp_eval_or相关用法的测试程序
- boost::math::tools::sum_series用法的测试程序
- boost::math::skew_normal用法的测试程序
- boost::hana::detail::wrong用法的测试程序