我正在使用matplotlib.pyplot.annotate在我的情节上绘制一个箭头,如下所示:
import matplotlib.pyplot as plt
plt.annotate("",(x,ybottom),(x,ytop),arrowprops=dict(arrowstyle="->"))
Run Code Online (Sandbox Code Playgroud)
我想使用箭头样式,一端是扁平线,另一端是箭头,所以组合样式"| - |" 和" - >"做一些我们称之为"| - >"的东西,但我无法弄清楚如何定义自己的风格.
我想我可能会尝试类似的东西
import matplotlib.patches as patches
myarrow = patches.ArrowStyle("Fancy", head_length=0.4,head_width=0.2)
Run Code Online (Sandbox Code Playgroud)
(现在应该与" - >"相同;我可以稍后调整样式)但是如何告诉plt.annotate使用myarrow作为样式?plt.annotate没有arrowstyle属性,而arrowprops = dict(arrowstyle = myarrow)也不起作用.
我也尝试在arrowprops字典中定义它,例如
plt.annotate("",(x,ybottom),(x,ytop),arrowprops=dict(head_length=0.4,head_width=0.2))
Run Code Online (Sandbox Code Playgroud)
但这给了我关于没有属性'set_head_width'的错误.
那么,我如何定义自己的pyplot.annotate样式呢?
我试图将三次样条拟合到给定的一组点.我的观点没有订购.我不能对点进行排序或重新排序,因为我需要这些信息.
但由于函数scipy.interpolate.splrep仅适用于非重复和单调增加的点,因此我定义了一个将x坐标映射到单调增加空间的函数.
我的观点是:
xpoints=[4913.0, 4912.0, 4914.0, 4913.0, 4913.0, 4913.0, 4914.0, 4915.0, 4918.0, 4921.0, 4925.0, 4932.0, 4938.0, 4945.0, 4950.0, 4954.0, 4955.0, 4957.0, 4956.0, 4953.0, 4949.0, 4943.0, 4933.0, 4921.0, 4911.0, 4898.0, 4886.0, 4874.0, 4865.0, 4858.0, 4853.0, 4849.0, 4848.0, 4849.0, 4851.0, 4858.0, 4864.0, 4869.0, 4877.0, 4884.0, 4893.0, 4903.0, 4913.0, 4923.0, 4935.0, 4947.0, 4959.0, 4970.0, 4981.0, 4991.0, 5000.0, 5005.0, 5010.0, 5015.0, 5019.0, 5020.0, 5021.0, 5023.0, 5025.0, 5027.0, 5027.0, 5028.0, 5028.0, 5030.0, 5031.0, 5033.0, 5035.0, 5037.0, 5040.0, 5043.0]
ypoints=[10557.0, 10563.0, 10567.0, 10571.0, 10575.0, 10577.0, 10578.0, …Run Code Online (Sandbox Code Playgroud) 我想用这样的东西:
class Board():
...
def __getitem__(self, y, x):
return self.board[y][x]
Run Code Online (Sandbox Code Playgroud)
但不幸的是,当我打电话的时候:
board[x][y]
Run Code Online (Sandbox Code Playgroud)
我明白了:
TypeError: __getitem__() takes exactly 3 arguments (2 given)
我有一个3D点的列表,我通过numpy.linalg.lstsq - 方法计算了一个平面.但是现在我想对每个点进行正交投影到这个平面,但我找不到我的错误:
from numpy.linalg import lstsq
def VecProduct(vek1, vek2):
return (vek1[0]*vek2[0] + vek1[1]*vek2[1] + vek1[2]*vek2[2])
def CalcPlane(x, y, z):
# x, y and z are given in lists
n = len(x)
sum_x = sum_y = sum_z = sum_xx = sum_yy = sum_xy = sum_xz = sum_yz = 0
for i in range(n):
sum_x += x[i]
sum_y += y[i]
sum_z += z[i]
sum_xx += x[i]*x[i]
sum_yy += y[i]*y[i]
sum_xy += x[i]*y[i]
sum_xz += x[i]*z[i]
sum_yz += y[i]*z[i]
M = ([sum_xx, …Run Code Online (Sandbox Code Playgroud) 我将数据加载到一个数据框中,该数据框具有列标题的多索引.目前我一直按列索引对数据进行分组,以获取组的平均值并计算95%置信区间,如下所示:
from pandas import *
import pandas as pd
from scipy import stats as st
#Normalize to starting point then convert
normalized = (data - data.ix[0]) * 11.11111
#Group normalized data based on slope and orientation
grouped = normalized.groupby(level=['SLOPE','DEPTH'], axis=1)
#Obtain mean of each group
means = grouped.mean()
#Calculate 95% confidence interval for each group
ci = grouped.aggregate(lambda x: st.sem(x) * 1.96)
Run Code Online (Sandbox Code Playgroud)
但问题是组上使用的平均函数忽略NaN值,而如果组中有NaN,则scipy函数st.sem返回NaN.我需要计算标准误差,而忽略NaNs,就像平均函数那样.
我试过计算这样的95%置信区间:
#Calculate 95% confidence interval for each group
ci = grouped.aggregate(lambda x: np.std(x) / ??? * 1.96) …Run Code Online (Sandbox Code Playgroud) 我想计算积分图像.例如
a=array([(1,2,3),(4,5,6)])
b = a.cumsum(axis=0)
Run Code Online (Sandbox Code Playgroud)
这将生成另一个数组b.我可以执行cumsum就地.如果不 .还有其他方法可以做到这一点
random.gauss(mu,sigma)
以上是允许从给定均值和方差的正态分布中随机抽取数字的函数.但是,我们如何从仅由两个第一时刻定义的正态分布中绘制值?
就像是:
random.gauss(mu,sigma,skew,kurtosis)
我真的想知道如何在numpy/pandas上利用多核处理进行矩阵乘法.
我在想的是:
M = pd.DataFrame(...) # super high dimensional square matrix.
A = M.T.dot(M)
Run Code Online (Sandbox Code Playgroud)
由于产品数量众多,这需要大量的处理时间,我认为使用多线程进行巨大的矩阵乘法是很简单的.所以,我在谷歌搜索,但我找不到如何在numpy/pandas上做到这一点.我是否需要使用一些python内置线程库手动编写多线程代码?
我有一系列的价值观 a = (2,3,0,0,4,3)
y=0
for x in a:
y = (y+x)*.95
Run Code Online (Sandbox Code Playgroud)
在添加下一个值之前,有没有办法cumsum在numpy每行中使用.95衰变?
我有一个9行的图,表示具有两个不同参数的数据集,比如f_11,f_12,f_13,...,f_33.为了使图(有点)更清晰,我将第一个参数编码为线的颜色,第二个参数编码为线型(因此f_11为红色和虚线,f12为红色和虚线,f21为绿色和虚线,f22为绿色和点缀等).所以,对于传说,我想做一个3x3的桌子,看起来像
| value1 | value2 | value3
---------------------------------
value1 |
value2 | <artists go there>
value3 |
Run Code Online (Sandbox Code Playgroud)
有什么办法可以用matplotlib来做这个吗?一个想法是用LaTeX制作这个盒子,但是我需要一种方法来将传奇艺术家绘制在正确的位置.
谢谢!
(来自matplotlib-users的crosspossted)
python ×10
numpy ×8
arrays ×4
scipy ×3
cumsum ×2
matplotlib ×2
pandas ×2
plot ×2
annotate ×1
distribution ×1
legend ×1
matrix ×1
nan ×1
python-2.7 ×1
spline ×1