小编zje*_*zje的帖子

matplotlib设置yaxis标签大小

如何更改yaxis标签的大小?现在,我使用更改所有标签的大小

pylab.rc('font', family='serif', size=40)
Run Code Online (Sandbox Code Playgroud)

但在我的情况下,我想使y轴标签大于x轴.但是,我想单独留下刻度标签.

我试过,例如:

pylab.gca().get_ylabel().set_fontsize(60)
Run Code Online (Sandbox Code Playgroud)

但我只得到:

AttributeError: 'str' object has no attribute 'set_fontsize'
Run Code Online (Sandbox Code Playgroud)

所以,显然这不起作用.我已经看到很多用于刻度尺寸的东西,但轴标签本身没有.

python graphing label matplotlib

70
推荐指数
1
解决办法
12万
查看次数

第二个y轴标签被切断

我试图用matplotlib在条形图中绘制两组数据,所以我在方法中使用了两个轴twinx().但是,第二个y轴标签被切断.我尝试了几种不同的方法但没有成功(tight_layout()设置major_pads rcParams等等).我觉得解决方案很简单,但我还没有遇到过.

这是一个MWE:

#!/usr/bin/env python
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

matplotlib.rcParams.update({'font.size': 21})
ax = plt.gca()
plt.ylabel('Data1') #Left side
ax2 = ax.twinx()
for i in range(10):
  if(i%2==0):
    ax.bar(i,np.random.randint(10))
  else:
    ax2.bar(i,np.random.randint(1000),color='k')


plt.ylabel('Data2') #Right
Run Code Online (Sandbox Code Playgroud)

side plt.savefig("test.png")

Data2截止的示例图

python graph matplotlib

27
推荐指数
2
解决办法
3万
查看次数

python matplotlib imshow()自定义标记

我正在尝试在我的imshow()输出上设置自定义刻度线,但是没有找到正确的组合.

下面的脚本总结了我的尝试.在这个脚本中,我试图在每个轴上的所有偶数上打勾,而不是默认值(-10,-5,0,5,10)

#!/usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np

#Generate random histogram
N=25
middle=N/2
hist=np.random.random_sample((N,N))

#Ticks at even numbers, data centered at 0
ticks=np.arange(-middle,middle+2,2)

extent=(-middle,middle,-middle,middle)
plt.imshow(hist, interpolation='nearest', extent=extent, origin='lower')
plt.colorbar()

#
#These are my attempts to set the tick marks
#
#plt.gcf().gca().set_ticks(ticks)

#plt.gca().set_ticks(ticks)

#ax=plt.axes()
#ax.set_ticks(ticks)

plt.show()
Run Code Online (Sandbox Code Playgroud)

我开始觉得set_ticks()可能不是这样做的,但我不确定还有什么可以尝试.

谢谢!

python plot matplotlib histogram

14
推荐指数
1
解决办法
4万
查看次数

试图从scipy powerlaw fit获得合理的价值

我正在尝试从我运行的模拟代码中拟合一些数据,以便找出幂律依赖性.当我绘制线性拟合时,数据不太适合.

这是我用来拟合数据的python脚本:

#!/usr/bin/env python
from scipy import optimize
import numpy

xdata=[ 0.00010851,  0.00021701,  0.00043403,  0.00086806,  0.00173611, 0.00347222]
ydata=[ 29.56241016,  29.82245508,  25.33930469,  19.97075977,  12.61276074, 7.12695312]

fitfunc = lambda p, x: p[0] + p[1] * x ** (p[2])
errfunc = lambda p, x, y: (y - fitfunc(p, x))

out,success = optimize.leastsq(errfunc, [1,-1,-0.5],args=(xdata, ydata),maxfev=3000)

print "%g + %g*x^%g"%(out[0],out[1],out[2])
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:-71205.3 + 71174.5*x ^ -9.79038e-05

虽然在情节上,合体看起来和你期望的最小方形一样好,但输出的形式让我感到困扰.我希望常数接近你预期的零点(大约30).而且我期望找到比10 ^ -5更大的功率依赖性.

我已经尝试重新调整我的数据并使用参数来优化.leastsq没有运气.我正在努力实现的目标是什么,或者我的数据是不允许的?计算成本很高,因此获得更多数据点并非易事.

谢谢!

python numpy curve-fitting scipy least-squares

11
推荐指数
2
解决办法
8311
查看次数

通用方法 - “private <T> boolean (T[], T[])”

我对 Java 中的泛型真的很陌生。我正在尝试创建一个简单的方法来比较两个相同类型的数组,但我想使用通用方法。我在下面附上了一个 MWE:

public class MWE {
  public static void main(String[] args){
    int[] test1,test2;
    test1 = new int[2];
    test2 = new int[2];
    checkArray(test1,test2);
  }

  private <T> boolean checkArray(T[] check, T[] test) {
    if(check.length != test.length)
      return false;

    for(int i=0;i<check.length;i++)
      if(check[i]!=test[i])
        return false;

    return true;
  }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时,我得到:

MWE.java:6: <T>checkArray(T[],T[]) in MWE cannot be applied to (int[],int[])
    checkArray(test1,test2);
    ^
1 error
Run Code Online (Sandbox Code Playgroud)

java arrays generics

5
推荐指数
2
解决办法
7205
查看次数

在ruby 1.8中使用正则表达式从字符串中提取多个值的正确方法

我对ruby比较陌生,我试图找出从字符串中提取多个值的"ruby"方法,基于正则表达式中的分组.我正在使用ruby 1.8(所以我认为我没有命名捕获).

我可以匹配,然后分配1美元,2美元 - 但我觉得必须有一个更优雅的方式(毕竟这是红宝石).

我也有一些与grep一起工作的东西,但是因为我正在使用一个数组并且只是抓住第一个元素,所以它看起来很像hackish:

input="FOO: 1 BAR: 2"
foo, bar = input.grep(/FOO: (\d+) BAR: (\d+)/){[$1,$2]}[0]
p foo
p bar
Run Code Online (Sandbox Code Playgroud)

我已经尝试在线搜索并浏览ruby文档,但是还没有能够找到更好的东西.

ruby regex string ruby-1.8

2
推荐指数
1
解决办法
2128
查看次数