我在Python中使用Matplotlib来绘制简单的xy数据集.这会生成漂亮的图形,但是当我使用图形视图(执行时出现plt.show())在绘制图形的各个部分上"放大"太近时,x轴值从标准数字形式(1050,1060, 1070等)具有指数表示法的科学形式(例如1,1,5,2.0,其中x轴标记为+1.057e3).
我更喜欢我的数字保留轴的简单编号,而不是使用指数形式.有没有办法可以强制Matplotlib这样做?
我正在尝试使用具有固定颜色边缘的透明标记在matplotlib中制作绘图.但是,我似乎无法实现透明填充的标记.
我这里有一个最小的工作示例:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(10)
y1 = 2*x + 1
y2 = 3*x - 5
plt.plot(x,y1, 'o-', lw=6, ms=14)
plt.plot(x,y2, 'o', ms=14, markerfacecolor=None, alpha=0.5, markeredgecolor='red', markeredgewidth=5)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我尝试了两种在线发现的技术来实现这一目的:1)设置alpha参数.然而,这使得标记边缘也是透明的,这不是期望的效果.2)设置markerfacecolor = None,虽然这对我的情节没有影响
请问有解决方案吗?
我正在寻找一种通过一些实验数据绘制曲线的方法.数据显示具有浅梯度的小线性区域,然后是阈值之后的陡峭线性区域.
我的数据在这里:http: //pastebin.com/H4NSbxqr

我可以相对容易地使用两条线来拟合数据,但我希望理想地使用连续线 - 这应该看起来像两条线,其中有一条平滑的曲线将它们连接在阈值附近(数据中约为5000,如上所示).
我试图使用scipy.optimize curve_fit并尝试一个包含直线和指数之和的函数:
y = a*x + b + c*np.exp((x-d)/e)
Run Code Online (Sandbox Code Playgroud)
尽管经过多次尝试,但它没有找到解决方案.
如果有人有任何建议,无论是选择配件分配/方法还是curve_fit实施,他们将不胜感激.
我对Python比较陌生,想知道如何最好地将多个文件中的数据导入到一个数组中.我有很多文本文件包含50行两列数据(列分隔),例如:
Length=10.txt:
1, 10
2, 30
3, 50
#etc
END OF FILE
Run Code Online (Sandbox Code Playgroud)
-
Length=20.txt
1, 50.7
2, 90.9
3, 10.3
#etc
END OF FILE
Run Code Online (Sandbox Code Playgroud)
假设我有10个文本文件要导入并导入到名为data的变量中.
我想创建一个包含所有数据的3D数组.这样,我可以通过引用数据来轻松地绘制和操作数据,data[:,:,n]其中where n指的是文本文件的索引.
我认为我这样做的方法是拥有一个形状数组(50,2,10),但不知道如何最好地使用python来创建它.我已经考虑过使用循环将每个文本文件导入为2D数组,然后将它们堆叠起来创建一个2D数组,尽管找不到合适的命令来执行此操作(我在numpy中查看了vstack和column_stack但是这些似乎没有添加额外的维度).
到目前为止,我已经编写了导入代码:
file_list = glob.glob(source_dir + '/*.TXT') #Get folder path containing text files
for file_path in file_list:
data = np.genfromtxt(file_path, delimiter=',', skip_header=3, skip_footer=18)
Run Code Online (Sandbox Code Playgroud)
但是这段代码的问题在于我只能在for循环中处理数据.
我真正想要的是从文本文件导入的所有数据的数组.
非常感谢任何帮助!
我正在使用Scipy CurveFit将高斯曲线拟合到数据中,并且有兴趣分析拟合的质量.我知道CurveFit返回一个有用的pcov矩阵,从中可以将参数popt [0]的每个拟合参数的标准偏差计算为sqrt(pcov [0,0]).
例如代码片段:
import numpy as np
from scipy.optimize import curve_fit
def gaussian(self, x, *p):
A, sigma, mu, y_offset = p
return A*np.exp(-(x-mu)**2/(2.*sigma**2)) + y_offset
p0 = [1,2,3,4] #Initial guess of parameters
popt, pcov = curve_fit(gaussian, x,y, p0) #Return co-effs for fit and covariance
‘Parameter A is %f (%f uncertainty)’ % (popt[0], np.sqrt(pcov[0, 0]))
Run Code Online (Sandbox Code Playgroud)
这给出了拟合曲线方程中每个系数拟合参数的不确定性的指示,但我想知道如何最好地获得整体"拟合参数质量",以便我可以比较不同曲线方程之间的拟合质量(例如高斯,超高斯等)
在一个简单的层面上,我可以计算每个系数的不确定性百分比,然后平均,虽然我想知道是否有更好的方法?从在线搜索,以及特别有用的"适合度"维基百科页面,我注意到有很多措施来描述这一点.我想知道是否有人知道是否有任何内置到Python包/有任何一般建议的好方法来量化曲线拟合.
谢谢你的帮助!
我正在尝试使用Python和Matplotlib可视化3D中的数据集,该数据集包含xz数据的时间序列(沿y).
我想创建一个如下图所示的图(用Python制作:http://austringer.net/wp/index.php/2011/05/20/plotting-a-dolphin-biosonar-click-train /),但颜色随Z变化 - 即,为了清楚起见,强度由色图和峰高显示.
可以使用MATLAB中的瀑布绘图选项创建此效果,但我知道在Python中没有直接的等效.
我也尝试在Python(下面)中使用plot_surface选项,它工作正常,但我想"强制"在表面上运行的线只在x方向(即使它看起来更像堆叠时间系列比表面).这可能吗?

任何帮助或建议都非常欢迎.谢谢.
我正在尝试并行化 afor loop以加速我的代码,因为循环处理操作都是独立的。按照在线教程,multiprocessingPython 中的标准库似乎是一个好的开始,我已经将它用于基本示例。
但是,对于我的实际用例,我发现在 Windows 上运行时,并行处理(使用双核机器)实际上要慢一点(<5%)。然而,与串行执行相比,在 Linux 上运行相同的代码会使并行处理速度提高约 25%。
从文档中,我认为这可能与 Window 缺少 fork() 函数有关,这意味着该进程每次都需要重新初始化。但是,我不完全理解这一点,想知道是否有人可以确认这一点?
特别,
--> 这是否意味着调用 python 文件中的所有代码都会为 Windows 上的每个并行进程运行,甚至初始化类和导入包?
--> 如果是这样,是否可以通过将类的副本(例如使用 deepcopy)传递给新进程来避免这种情况?
--> 是否有任何提示/其他策略可以有效地并行化 unix 和 windows 的代码设计。
我的确切代码很长并且使用了很多文件,所以我创建了一个伪代码样式的示例结构,希望能显示这个问题。
# Imports
from my_package import MyClass
imports many other packages / functions
# Initialization (instantiate class and call slow functions that get it ready for processing)
my_class = Class()
my_class.set_up(input1=1, input2=2)
# Define main processing function to be used in loop
def calculation(_input_data):
# …Run Code Online (Sandbox Code Playgroud) python parallel-processing multithreading multiprocessing python-multiprocessing
我想知道是否可以根据绘制的数据来遮蔽典型matplotlib图的背景.
为简单起见,我们说:
x=arange(1,5,0.01)
y=sin(x)
plot(x,y)
Run Code Online (Sandbox Code Playgroud)
那么可以根据y值遮蔽轴的背景吗?
可以通过将包含x和y的数组传递给imshow来实现着色,例如:
imshow(array, cmap='hot')
Run Code Online (Sandbox Code Playgroud)
虽然我希望在这个imshow数字的顶部有一个x和y的线图.
这可能吗?
我正在学习python并向OOP介绍自己.但是,我正在努力理解如何最好地构建类,特别是,以下类定义之间的差异以及何时应该使用每个类:
class my_class:
content...
class my_class():
content...
class my_class(object):
content...
Run Code Online (Sandbox Code Playgroud)
我一直在阅读非常有用的python在线帮助,虽然没有找到这个问题的具体答案.所以任何想法或推荐的参考将不胜感激,谢谢.