哪里可以找到LogLog算法的有效实现?试图自己实现它,但我的草案实现产生了奇怪的结果.
这是:
function LogLog(max_error, max_count)
{
function log2(x)
{
return Math.log(x) / Math.LN2;
}
var m = 1.30 / max_error;
var k = Math.ceil(log2(m * m));
m = Math.pow(2, k);
var k_comp = 32 - k;
var l = log2(log2(max_count / m));
if (isNaN(l)) l = 1; else l = Math.ceil(l);
var l_mask = ((1 << l) - 1) >>> 0;
var M = [];
for (var i = 0; i < m; ++i) M[i] = 0; …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用seaborn JointGrid对象创建一个带有KDE和与每个轴相关联的直方图的loglog图.这让我非常接近,但直方图箱不能很好地转换为logspace.有没有办法在不重新创建边缘轴的情况下轻松完成这项工作?
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
data = sns.load_dataset('tips')
g = sns.JointGrid('total_bill', 'tip', data)
g.plot_marginals(sns.distplot, hist=True, kde=True, color='blue')
g.plot_joint(plt.scatter, color='black', edgecolor='black')
ax = g.ax_joint
ax.set_xscale('log')
ax.set_yscale('log')
g.ax_marg_x.set_xscale('log')
g.ax_marg_y.set_yscale('log')
Run Code Online (Sandbox Code Playgroud)

我已经对数据进行分箱以绘制直方图。因此,我正在使用该plt.bar()功能。我想将绘图中的两个轴都设置为对数刻度。
如果设置plt.bar(x, y, width=10, color='b', log=True),则可以将y轴设置为log,但不能设置x轴为对数。plt.xscale('log')不幸的是,我尝试了这种方法。x轴刻度消失,条形的大小没有相等的宽度。
我将不胜感激。
我和我有一个情节,两个轴都是对数的.我有pyplot的loglog功能来做到这一点.它还给出了两个轴上的对数刻度.
现在,使用numpy我直线到我拥有的点集.但是,当我在情节上绘制这条线时,我无法得到一条直线.我得到一条曲线.

蓝线是所谓的"直线".它没有直接绘制.我想将这条直线拟合到由红点绘制的曲线上
这是我用来绘制点数的代码:
import numpy
from matplotlib import pyplot as plt
import math
fp=open("word-rank.txt","r")
a=[]
b=[]
for line in fp:
string=line.strip().split()
a.append(float(string[0]))
b.append(float(string[1]))
coefficients=numpy.polyfit(b,a,1)
polynomial=numpy.poly1d(coefficients)
ys=polynomial(b)
print polynomial
plt.loglog(b,a,'ro')
plt.plot(b,ys)
plt.xlabel("Log (Rank of frequency)")
plt.ylabel("Log (Frequency)")
plt.title("Frequency vs frequency rank for words")
plt.show()
Run Code Online (Sandbox Code Playgroud) 我有 58 个文件需要绘制。其中一些是空的(并不重要,我已经用 if 条件跳过了它们)。我需要使用对数刻度和误差线绘制文件中的数据。我想最后保存这些情节。我正在使用Python,spyder。我编写了以下代码:
route='/......./'
L=np.arange (1,59, 1)
for i in range (L.shape[0]):
I=L[i]
name_sq= 'Spectra_without_quiescent_'+('{}'.format(I))+'.dat'
Q=np.loadtxt(route+name_sq)
if (len(Q) != 0):
x=Q[:,1]
y=Q[:,2]
z=Q[:,3]
fig=plt.errorbar(x,y,yerr=z, fmt = 'b')
fig.set_yscale('log')
fig.set_xscale('log')
xlabel='Frequency'
ylabel='Flux'
title='Spectrum_'+('{}'.format(I))+'.dat'
name='Spectrum_without_quiescent_'+('{}'.format(I))+'.pdf'
fig.savefig(route+name, fig)
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,出现以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 540, in runfile
execfile(filename, namespace)
File "/media/chidiac/My Passport/DOCUMENTS/My_Publications/2-3C273_radio_spectra/Maximum_flux_code.py", line 49, in <module>
fig.set_yscale('log')
AttributeError: 'ErrorbarContainer' object has no attribute 'set_yscale'
Run Code Online (Sandbox Code Playgroud)
我仍然是Python的初学者,我找不到错误,或者如何修复它。非常感谢任何帮助。
loglog ×5
matplotlib ×3
python ×3
algorithm ×1
bar-chart ×1
counting ×1
errorbar ×1
hyperloglog ×1
javascript ×1
numpy ×1
plot ×1
seaborn ×1