稍微调整一下这里的代码:http://pyinsci.blogspot.com/2009/09/violin-plot-with-matplotlib.html,如下所示,我可以得到用Python生成的小提琴图,如下所示:
# Import modules
import pylab as pl
from scipy import stats
import numpy as np
# Function for Violin Plot
def violin_plot(ax,data,groups,bp=False):
'''Create violin plot along an axis'''
dist = max(groups) - min(groups)
w = min(0.15*max(dist,1.0),0.5)
for d,p in zip(data,groups):
k = stats.gaussian_kde(d) #calculates the kernel density
m = k.dataset.min() #lower bound of violin
M = k.dataset.max() #upper bound of violin
x = np.arange(m,M,(M-m)/100.) # support for violin
v = k.evaluate(x) #violin profile (density curve)
v = …Run Code Online (Sandbox Code Playgroud) 我正在为NetworkX中的有向图制作一些代码,并且遇到了一个块,这可能是我可疑的编程经验的结果.我想要做的是以下内容:
我有一个有向图G,顶部有两个"父节点",所有其他节点都从这些节点流出.在绘制这个网络的图形时,我想将每个节点作为"父1"的后代绘制一种颜色,而所有其他节点绘制另一种颜色.这意味着我需要一个名单Parent 1的继承者.
现在,我可以轻松地使用它们获得第一层:
descend= G.successors(parent1)
Run Code Online (Sandbox Code Playgroud)
问题是这只给了我第一代接班人.最好是,我想要继承者的继承者,继承者的继承者的继承者等等.任意地,因为能够运行分析并制作图表而不必确切知道其中有多少代是非常有用的.
知道如何处理这个问题吗?
假设您的数据集类似于包含温和敏感信息的CSV文件,例如谁在12年级英语课程中传递了一个注释.虽然如果这些数据消失不是危机,但剥离识别信息以便将数据公开,与协作者共享等等将是一件好事.数据看起来像这样:
给予者,收件人:
安娜,乔
安娜,马克·
马克,柯以敏
柯以敏,乔
你将如何处理这个列表,为每个名称分配一个唯一但任意的标识符,然后删除名称并用Python中的所述标识符替换它们,以便最终得到如下结果:
1,2
1,3
3,4
4,2
我有以下使用NetworkX在Python 2.7中工作的代码。基本上,它只是绘制度数节点的直方图,如下所示:
plt.hist(nx.degree(G).values())
plt.xlabel('Degree')
plt.ylabel('Number of Subjects')
plt.savefig('network_degree.png') #Save as file, format specified in argument
Run Code Online (Sandbox Code Playgroud)
当我尝试在Python 3下运行相同的代码时,出现以下错误:
Traceback (most recent call last):
File "filename.py", line 71, in <module>
plt.hist(nx.degree(G).values())
File "/Users/user/anaconda/envs/py3/lib/python3.5/site-packages/matplotlib/pyplot.py", line 2958, in hist
stacked=stacked, data=data, **kwargs)
File "/Users/user/anaconda/envs/py3/lib/python3.5/site-packages/matplotlib/__init__.py", line 1812, in inner
return func(ax, *args, **kwargs)
File "/Users/user/anaconda/envs/py3/lib/python3.5/site-packages/matplotlib/axes/_axes.py", line 5960, in hist
x = _normalize_input(x, 'x')
File "/Users/user/anaconda/envs/py3/lib/python3.5/site-packages/matplotlib/axes/_axes.py", line 5902, in _normalize_input
"{ename} must be 1D or 2D".format(ename=ename))
ValueError: x must be 1D or 2D
Run Code Online (Sandbox Code Playgroud)
我现在刚刚开始使用我希望是非常简单的代码来搞混Python 3。有什么变化?
我正在使用以下代码使用matplotlib在Python中生成包含大量过度绘制线的图:
def a_run(n, t, s):
xaxis = np.arange(t, dtype=float)
#Scale x-axis by the step size
for i in xaxis:
xaxis[i]=(xaxis[i]*s)
for j in range(n):
result = a_solve(t,s)
plt.plot(result[:,1], color = 'r', alpha=0.1)
def b_run(n, t, s):
xaxis = np.arange(t, dtype=float)
#Scale x-axis by the step size
for i in xaxis:
xaxis[i]=(xaxis[i]*s)
for j in range(n):
result = b_solve(t,s)
plt.plot(result[:,1], color = 'b', alpha=0.1)
a_run(100, 300, 0.02)
b_run(100, 300, 0.02)
plt.xlabel("Time")
plt.ylabel("P")
plt.legend(("A","B"), shadow=True, fancybox=True) Legend providing same color for both …Run Code Online (Sandbox Code Playgroud) 我有一些数据,表示为Numpy数组,其序列看起来像这样:
np.array([1, 0, 2, 5, 10, 6, 2, 0, 4, 1, 0, 1, 2, 3, 4, 2, 0, 0, 0, 0, 0, 0, 0])
Run Code Online (Sandbox Code Playgroud)
我想知道这个数组的最后一个非零值的位置 - 所以在这种情况下,在位置15发生的"2".
什么是最快最简单的方法?我可能会生成大量的这些,所以我的初始计划是迭代数组,如果它= 0则删除最后一个元素,然后取得结果数组的长度,这似乎可能太慢而无法使用.