我有一些数据如下图所示,

我能够插入数据点(虚线),并期待在两个方向上推断它们.
如何使用NumPy/SciPy在Python中推断这些曲线?
我用于插值的代码如下,
import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate
x = np.array([[0.12, 0.11, 0.1, 0.09, 0.08],
[0.13, 0.12, 0.11, 0.1, 0.09],
[0.15, 0.14, 0.12, 0.11, 0.1],
[0.17, 0.15, 0.14, 0.12, 0.11],
[0.19, 0.17, 0.16, 0.14, 0.12],
[0.22, 0.19, 0.17, 0.15, 0.13],
[0.24, 0.22, 0.19, 0.16, 0.14],
[0.27, 0.24, 0.21, 0.18, 0.15],
[0.29, 0.26, 0.22, 0.19, 0.16]])
y = np.array([[71.64, 78.52, 84.91, 89.35, 97.58],
[66.28, 73.67, 79.87, 85.36, 93.24],
[61.48, 69.31, 75.36, 81.87, 89.35], …Run Code Online (Sandbox Code Playgroud) 我有以下形式的数据:
X Y
3.53 0
4.93 50
5.53 60
6.21 70
7.37 80
9.98 90
16.56 100
Run Code Online (Sandbox Code Playgroud)
我想找出n,以便这适合表格的功能:

我试图通过Box-Cox转换确定n.如何在Python中完成?
我在matplotlibrc文件的axes.color_cycle中设置了以下颜色.当我绘制线条和步骤时,它工作正常.但是当我使用它来绘制带有axvline的垂直线时,它不会使用设置的颜色,如图所示:
它使用matplotlib的默认颜色.如何让axvline继续颜色循环?
可重现的代码
import numpy as np
import matplotlib.pyplot as plt
import itertools
m = 5
n = 5
x = np.zeros(shape=(m, n))
plt.figure(figsize=(5.15, 5.15))
plt.clf()
plt.subplot(111)
marker = itertools.cycle(('o', 'v', '^', '<', '>', 's', '8', 'p'))
ax = plt.gca()
for i in range(1, n):
x = np.dot(i, [1, 1.1, 1.2, 1.3])
y = x ** 2
color = next(ax._get_lines.color_cycle)
plt.plot(x, y, linestyle='', markeredgecolor='none', marker=marker.next(), color=color, label = str(i))
plt.plot(x, y, linestyle='-', color = color)
plt.axvline(2.)
plt.axvline(3.)
plt.axhline(4.)
plt.axhline(6.)
plt.ylabel(r'y', …Run Code Online (Sandbox Code Playgroud) 我试图通过Web界面在Gitlab中创建文件夹.我能够看到一些 带文件夹的存储库.我找不到创建此类文件夹的任何选项.这些文件夹是如何创建的?
我有一个嵌套列表,如下所示:
A = [('a', 'b', 'c'),
('d', 'e', 'f'),
('g', 'h', 'i')]
Run Code Online (Sandbox Code Playgroud)
我试图使用代码打印每个列表的第一个元素:
A = [('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'h', 'i')]
print A[:][0]
Run Code Online (Sandbox Code Playgroud)
但我得到以下输出:
('a', 'b', 'c')
Run Code Online (Sandbox Code Playgroud)
所需输出:
('a', 'd', 'g')
Run Code Online (Sandbox Code Playgroud)
如何在Python中获得此输出?
我试图使用matplotlib的注释在两端绘制带箭头的线条.但是当我绘制它们时,箭头头不会在指定的坐标处开始或结束,如图所示.提示应该以0.6和0.8开始和结束,但它们不会.
可重现的代码
import matplotlib.pyplot as plt
fig = plt.figure(figsize = (5, 5))
plt = plt.subplot(111)
plt.axvline(0.6)
plt.axvline(0.8)
plt.axhline(0.6)
plt.axhline(0.8)
plt.annotate('', xy = (0.6, 0.33), xycoords = 'axes fraction', \
xytext = (0.8, 0.33), textcoords = 'axes fraction', fontsize = 7, \
color = '#303030', arrowprops=dict(edgecolor='black', arrowstyle = '<->'))
plt.annotate('', xy = (0.33, 0.6), xycoords = 'axes fraction', \
xytext = (0.33, 0.8), textcoords = 'axes fraction', fontsize = 7, \
color = '#303030', arrowprops=dict(edgecolor='black', arrowstyle = '<->'))
fig.savefig('arrow_head.pdf')
Run Code Online (Sandbox Code Playgroud)
为什么会这样?以及如何获得在相应坐标处开始或结束的提示?
我试图使用Python 获得数据(链接)的双高斯分布.原始数据的格式如下:
对于给定的数据,我想获得图中所示峰值的两个高斯分布.我尝试使用以下代码(源代码):
from sklearn import mixture
import matplotlib.pyplot
import matplotlib.mlab
import numpy as np
from pylab import *
data = np.genfromtxt('gaussian_fit.dat', skiprows = 1)
x = data[:, 0]
y = data[:, 1]
clf = mixture.GMM(n_components=2, covariance_type='full')
clf.fit((y, x))
m1, m2 = clf.means_
w1, w2 = clf.weights_
c1, c2 = clf.covars_
fig = plt.figure(figsize = (5, 5))
plt.subplot(111)
plotgauss1 = lambda x: plot(x,w1*matplotlib.mlab.normpdf(x,m1,np.sqrt(c1))[0], linewidth=3)
plotgauss2 = lambda x: plot(x,w2*matplotlib.mlab.normpdf(x,m2,np.sqrt(c2))[0], linewidth=3)
fig.savefig('gaussian_fit.pdf')
Run Code Online (Sandbox Code Playgroud)
但我无法获得所需的输出.那么,如何在Python中获得双高斯分布?
更新
我能够使用以下代码拟合单个高斯分布:
import pylab …Run Code Online (Sandbox Code Playgroud) 我正在尝试缩进pprint的输出,以便使用pprint获得8个空格的缩进。我使用的代码是:
import numpy as np
from pprint import pprint
A = np.array([1, 2, 3, 4])
f = open("log.txt", 'w')
n = 2
for i in range(n):
A = A + 1
f.writelines(list(u' \u27B3 - %s\n'.encode('utf-8') % i for i in A))
pprint(globals())
Run Code Online (Sandbox Code Playgroud)
输出量
import numpy as np
from pprint import pprint
A = np.array([1, 2, 3, 4])
f = open("log.txt", 'w')
n = 2
for i in range(n):
A = A + 1
f.writelines(list(u' \u27B3 - %s\n'.encode('utf-8') % i for …Run Code Online (Sandbox Code Playgroud) 我想找出最合适的数据.我做的是循环遍历各种n值并使用公式((y_fit - y_actual)/ y_actual)x 100计算每个p的残差.然后我计算每个n的平均值,然后找出最小残差均值和相应的n值并使用此值拟合.可重现的代码包括:
import numpy as np
import matplotlib.pyplot as plt
from scipy import optimize
x = np.array([12.4, 18.2, 20.3, 22.9, 27.7, 35.5, 53.9])
y = np.array([1, 50, 60, 70, 80, 90, 100])
y_residual = np.empty(shape=(1, len(y)))
residual_mean = []
n = np.arange(0.01, 10, 0.01)
def fit(x, a, b):
return a * x + b
for i in range (len(n)):
x_fit = 1 / np.log(x) ** n[i]
y_fit = y
fit_a, fit_b = optimize.curve_fit(fit, x_fit, y_fit)[0]
y_fit = …Run Code Online (Sandbox Code Playgroud) 我正在尝试在两个y轴上绘制两条曲线,如图所示。但是即使我将红色图(压力)的zorder设置为1和2,绿色图(针升力)也会绘制在主轴图上方。

我使用的代码:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import ticker as tick
data = np.genfromtxt("secondary_axis.dat", skiprows = 2, delimiter = ',')
time = data[:, 0]
pressure = data[:, 1] * 0.006894759086775369
pressure_charge = data[0, 0]
needle_lift = data[:, 2]
figure = plt.figure(figsize=(5.15, 5.15))
figure.clf()
plot = plt.subplot(111)
plot.plot(time, pressure, label = r'\textit{Raw}', zorder = 2)
plot.set_xlabel(r'\textit{X}', labelpad=6)
plot.set_ylabel(r'\textit{Y}', labelpad=6)
primary_ticks = len(plot.yaxis.get_major_ticks())
ax2 = plot.twinx()
ax2.plot(time, needle_lift, color='#4DAF4A', zorder = 1)
ax2.grid(False)
ax2.set_ylabel(r'\textit{Z}', labelpad=6)
ax2.yaxis.set_major_locator(tick.LinearLocator(primary_ticks))
plt.show() …Run Code Online (Sandbox Code Playgroud) 我试图通过按照此处给出的步骤定义全局函数来更改图例的字体.使用的代码是:
import numpy as np
import matplotlib.pyplot as plt
import itertools
import matplotlib
import matplotlib.font_manager as font_manager
path = 'palatino-regular.ttf'
prop = font_manager.FontProperties(fname=path)
def change_matplotlib_font():
figures = [x for x in matplotlib._pylab_helpers.Gcf.get_all_fig_managers()]
for figure in figures:
for ax in figure.canvas.figure.get_axes():
ax.legend(prop = prop)
for label in ax.get_xticklabels():
label.set_fontproperties(prop)
for label in ax.get_yticklabels():
label.set_fontproperties(prop)
m = 5
n = 5
x = np.zeros(shape=(m, n))
plt.figure(figsize=(5.15, 5.15))
plt.clf()
plt.subplot(111)
marker = itertools.cycle(('o', 'v', '^', '<', '>', 's', '8', 'p'))
ax …Run Code Online (Sandbox Code Playgroud) 我有一个如下所示的图形火焰:
我试图检测相机视图的外边缘并将图形居中,以便火焰的圆形视图正好位于绘图的中心。因为圆圈的位置可能会随着图像拍摄日期而变化。有时可能在上半部分,有时可能在下半部分,等等。
Python 中是否有任何模块可以检测视图并将其居中?
可重现的代码
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img=mpimg.imread('flame.png')
lum_img = img[:,:,0]
img_plot = plt.imshow(lum_img)
img_plot.set_cmap('jet')
plt.axis('Off')
plt.show()
Run Code Online (Sandbox Code Playgroud) python ×11
matplotlib ×5
numpy ×4
scipy ×4
plot ×3
directory ×1
fonts ×1
gaussian ×1
gitlab ×1
graph ×1
indentation ×1
nested-lists ×1
pprint ×1
pretty-print ×1
scikit-image ×1
scikit-learn ×1