我想做一个这样的图表:

问题是,我从一些外部文件获取数据,我可以制作背景图,但我不知道如何在我已经拥有的图中添加另一个图并更改数据以获得不同的结果他们都:
下面我要添加我用来做背景图的代码.希望有人能提供帮助.
from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
plt.rc('text',usetex=True)
font = {'family':'serif','size':16}
plt.rc('font',**font)
plt.rc('legend',**{'fontsize':14})
matplotlib.rcParams['text.latex.preamble']=[r'\usepackage{amsmath}']
data=np.loadtxt(r'C:\...\file.txt')
plt.plot(data[:,0],data[:,6],linewidth = 3,label='B$_0$ = 1.5 T d',linestyle= '--', color='black')
plt.show()
Run Code Online (Sandbox Code Playgroud) 我想修改我在正方形格子上操作的Python脚本(它是基于代理的生物学模型),在六边形世界中工作.
这就是我在方形模型中创建和初始化2D矩阵的方法:基本上,N是晶格的大小,R给出矩阵部分的半径,我需要在算法开始时改变值:
a = np.zeros(shape=(N,N))
center = N/2
for i in xrange(N):
for j in xrange(N):
if( ( pow((i-center),2) + pow((j-center),2) ) < pow(R,2) ):
a[i,j] = 1
Run Code Online (Sandbox Code Playgroud)
然后我让矩阵根据某些规则进化,最后通过创建一个pickle文件进行打印:
name = "{0}-{1}-{2}-{3}-{4}.pickle".format(R, A1, A2, B1, B2)
pickle.dump(a, open(name,"w"))
Run Code Online (Sandbox Code Playgroud)
现在,我想在六角形格子上做同样的事情.我读到了这个有趣的StackOverflow问题,该问题清楚地表明了如何用三个坐标表示六边形网格上的位置,但是有些事情在我的知识中仍然模糊不清,即
(a)我应该如何处理Python中的三个轴,考虑到由于坐标的限制,我想要的并不等同于3D矩阵,以及
(b)如何策划?
至于(a),这就是我想要做的:
a = np.zeros(shape=(N,N,N))
for i in xrange(N/2-R, N/2+R+1):
for j in xrange(N/2-R, N/2+R+1):
for k in xrange(N/2-R, N/2+R+1):
if((abs(i)+abs(j)+abs(k))/2 <= 3*N/4+R/2):
a[i,j,k] = 1
Run Code Online (Sandbox Code Playgroud)
在我看来,初始化像这样的NxNxN矩阵,然后根据坐标上的约束找到一种打印它的子集的方法.我正在寻找一种更简单的方法,更重要的是,要了解如何绘制算法产生的六边形格子(没有任何线索,我暂时没有尝试过任何东西).
上下文:我需要随机删除一些数字列表中的一些精确元素,提取一些随机索引并将它们保存在一个名为aleaindex的集合中(完成后,由于一些SO用户的帮助,它正常工作).现在,我想用新的,最终更短的newa,newb等替换旧的列表a,b等.这是函数:
def myfunction(N, other_parameters, a, b, c):
...
while (...):
aleaindex.add(random.randint(..., ...))
...
new_a = [v for i, v in enumerate(a) if i not in aleaindex]
while a: a.pop()
a = new_a[:]
...
Run Code Online (Sandbox Code Playgroud)
等等其他列表b,c等
问题:该函数似乎在模块中正确修改它们(通过打印检查)但是,当我在模块外部打印修改后的列表时,即"主"文件中,列表是因为它们没有被修改.我哪里错了?
如何计算给定列表中的前k项?
例如:
myList = [1,2,5]
Run Code Online (Sandbox Code Playgroud)
如何使用ķ返回1 ķ为= 1,3 ķ = 2和8用于ķ = 3?