如何更改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)
所以,显然这不起作用.我已经看到很多用于刻度尺寸的东西,但轴标签本身没有.
我试图用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")

我正在尝试在我的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脚本:
#!/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没有运气.我正在努力实现的目标是什么,或者我的数据是不允许的?计算成本很高,因此获得更多数据点并非易事.
谢谢!
我对 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) 我对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文档,但是还没有能够找到更好的东西.