我需要制作一个剧情,就像剧情中高密度地区的密度图一样,但低于某个阈值则使用个别点.我找不到任何与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 – 有效地为高密度区域创建密度图,稀疏区域的点相关推荐

  1. python蜡烛图预测_Python数据可视化:如何用mplfinance创建蜡烛图

    一图胜千言,使用Python的matplotlib库,可以快速创建高质量的图形. 我们团队推出一个新的系列教程:Python数据可视化,针对初级和中级用户,将理论和示例代码相结合,使用matplotl ...

  2. python画代码-Python教程_Python画Mandelbrot集 代码

    Python教程_Python画Mandelbrot集 代码 作者:Comet 来源: 课课家 www.kokojia.com点击数:278发布时间:2015-06-19 11:17:19 曼德勃罗集 ...

  3. python编程语言_python编程语言的简要历史

    python编程语言 The Python programming language is a general-purpose programming language that has carved ...

  4. python学好了能干啥_新手该如何学python怎么学好python?_python学好了能干什么

    1)学好python的第一步,就是马上到www.python.org网站上下载一个python版本.我建议初学者,不要下载具有IDE功能的集成开发环境,比如Eclipse插件等. 2)下载完毕后,就可 ...

  5. python相关函数_python常用函数精讲

    原标题:python常用函数精讲 返回值为bool类型的函数 bool是Boolean的缩写,只有真(True)和假(False)两种取值 bool函数只有一个参数,并根据这个参数的值返回真或者假. ...

  6. python在匿名函数作和_跟光磊学Python开发-匿名函数函数和高阶函数

    跟光磊学Python开发-匿名函数函数和高阶函数 跟光磊学Python开发-匿名函数函数和高阶函数跟光磊学Python开发 匿名函数 匿名函数就是函数定义时没有名字的函数,也称为匿名表达式. 普通函数 ...

  7. 一文看懂Python(八)-----内置高阶函数用法总结

    函数是Python的核心内容之一,能够提高代码的重复利用率.为了更好的使用函数,有必要了解函数的一些高级用法. Python内置了三个高阶函数:所谓高阶函数就是以函数作为参数,或者返回一个函数的函数, ...

  8. 利用python进行数据分析第二版pdf百度云_参考《利用Python进行数据分析(第二版)》高清中文PDF+高清英文PDF+源代码...

    第2版针对Python 3.6进行全面修订和更新,涵盖新版的pandas.NumPy.IPython和Jupyter,并增加大量实际案例,可以帮助高效解决一系列数据分析问题. 第2版中的主要更新了Py ...

  9. python删除行_python 删除文件中指定行

    原博文 2017-03-20 19:18 − 代码适用情况:xml文件,循环出现某几行,根据这几行中的某个字段删掉这几行这段代码的作用删除jenkins中config.xml中在自动生成pipline ...

最新文章

  1. size-t数据类型 ssize-t数据类型
  2. excel大作业素材_Excel | 同一单元格内多个姓名,如何统计人数
  3. java在控制台打印余弦曲线,java打印正弦曲线示例
  4. DELPHI GetClassName - 获取指定窗口的类名
  5. 理解Java对象序列化——Serializable接口
  6. OLAP-impala-大数据Week13-DAY6-impala
  7. c/c++中关于sizeof、strlen的使用说明
  8. 母亲节第二期|有哪些母亲节祝福贺卡的素材灵感来源?
  9. 如何把电脑加上公司的域
  10. [ArcGIS] 空间分析(八) 水文分析
  11. 如何设置word的默认输入法——搜狗输入法
  12. 写在2021最后一天
  13. 如何让AR拥有镜子的反光效果(ios)
  14. B+树算法在mysql中能存多少行数据?
  15. 天猫精灵设备拆机及系统分析
  16. linux 挂载iso系统镜像文件
  17. 时滞电力系统matlab,基于Wirtinger不等式的时滞电力系统稳定性判定方法
  18. 利用Peakscanner软件对测序仪获取的分子标记数据进行初步识别
  19. 第十五课(1)Nor FLash原理及硬件介绍
  20. Cesuim中线的波动纹理

热门文章

  1. 淘宝 oracle mysql_Oracle 与 MySQL 的区别-阿里云开发者社区
  2. java aes 工具类_Java AES加密算法工具类
  3. 获取以逗号分隔的多个数据输入成列表,计算基本统计值(平均值、标准差、中位数)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬
  4. VTK:可编程字形过滤器用法实战
  5. wxWidgets:wxCriticalSectionLocker类用法
  6. boost::mpl模块实现pair_view相关的测试程序
  7. boost::mp11::mp_eval_or相关用法的测试程序
  8. boost::math::tools::sum_series用法的测试程序
  9. boost::math::skew_normal用法的测试程序
  10. boost::hana::detail::wrong用法的测试程序