我有一个网页,我希望用户在将鼠标放在图像的某个部分上时看到新图像.我用了一张图片地图.
<img src="pic.jpg" usemap="#picmap" />
<map id="picmap" name="picmap"><area shape="rect" coords ="10,20,30,40"
onMouseOver="mouse_on_write('mouse is on spot')"
onMouseOut="mouse_off('mouse is off spot')"
href="http://www....html" target="_blank" />
</map>
<p id="desc"></p>
Run Code Online (Sandbox Code Playgroud)
在标题中我定义了这些函数:
<script type="text/javascript">
function mouse_off(txt)
{
document.getElementById("desc").innerHTML=txt;
document.p1.src="pic.jpg";
}
function mouse_on_write(txt)
{
document.getElementById("desc").innerHTML=txt;
document.p1.src="pic2.jpg";
</script>
Run Code Online (Sandbox Code Playgroud)
它有效,但速度很慢.将鼠标放在第二张图像上时,需要几秒钟才能显示; 我的临时解决方案是大幅减小图像的大小,因为它们很大(现在它们快速切换为2.5mb,但仍然不是无缝的). 如何在不降低图像质量的情况下使图像切换更加无缝? 在第二个想法,我意识到我也可以只显示两个图像,小规模和大规模,并在鼠标上,他们会切换位置; 我该怎么做?这会减少滞后吗?
有人使用一种名为Interactive Data Language,IDL的语言吗?它很受科学家欢迎.我认为这是一种糟糕的语言,因为它是专有的(运行它的每个终端必须购买昂贵的许可证)并且它具有最小的支持(尝试搜索IDL,语言,现在在堆栈上).我试图说服我的同事停止使用它并学习C/C++/Python/Fortran/Java/Ruby.有没有人知道甚至关心IDL足以对它有意见?你怎么看呢?我应该告诉我的同事现在不要浪费时间吗?我怎么能说服他们?
编辑:人们会得到我不知道或使用IDL的印象.另外,我说IDL的支持很少,这在某种意义上是正确的,所以我必须澄清科学图书馆确实很大.我一直使用IDL,但这正是问题:我只使用IDL,因为同事使用它.IDL使用的文件格式为.sav,只能在IDL中打开.所以我必须使用IDL来处理这些数据并将数据传回给同事,但我知道我会用另一种语言更有效率.这就像有人在电子邮件附件中向您发送微软word文件,如果您不明白它有多么错,那么您可能会写太多单词而没有足够的代码并且您购买了Microsoft Word.
编辑:作为IDL的替代品,Python很受欢迎.以下是AstroBetter 的IDL优缺点列表(以及缺点):
IDL的优点
IDL的缺点
Python的优点
Python的缺点
我试图用matplotlib在Python中绘制一堆数据点(数千个),所以我需要每个标记都非常小而精确.如何获得最小的最简单的标记?我使用此命令绘制我的数据:
matplotlib.pyplot( x , y ,'.',markersize=0.1,linewidth=None,markerfacecolor='black')
Run Code Online (Sandbox Code Playgroud)
然后我可以用它来查看它pl.show()然后保存它.或者直接plt.savefig('filename.ps')在代码中使用来保存它.问题是这样的:当我pl.show()用来查看GUI中的文件时,它看起来很小,带有小的黑色标记,但是当我从show()GUI 保存到文件或直接使用savefig然后查看ps我创建的它看起来不同!每个标记都在它周围获得了一点蓝色光环(好像它从每个点开始将它们与默认的蓝线连接起来,但没有)并且样式都是错误的.保存时为什么会改变风格?如何阻止python强制标记的样式?是的,我已经看过一些像CairoPlot这样的替代软件包,但我现在想继续使用matplotlib.
更新:原来,保存为PNG首先使颜色变成好的,但它迫使图像的转换,当我想再次将其保存为.ps更高版本(包含在PDF),然后我失去质量.如何保留文件的矢量性质并获得正确的格式?
我试图让Python运行swig来做C/C++.我在这里运行教程,'构建一个python模块'.当我打电话的时候
gcc -c example.c example_wrap.c -I /my_correct_path/python2.5
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
my_correct_path/python2.5/pyport.h:761:2: error: #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)."
example_wrap.c: In function 'SWIG_Python_ConvertFunctionPtr':
example_wrap.c:2034: warning: initialization discards qualifiers from pointer target type
example_wrap.c: In function 'SWIG_Python_FixMethods':
example_wrap.c:3232: warning: initialization discards qualifiers from pointer target type
Run Code Online (Sandbox Code Playgroud)
它确实创建了一个example.o文件,但它不起作用.我在使用python2.5而不是2.1,例如,这是一个问题吗?错误(其他一切只是一个'警告')说错误的平台.这是一台64位的机器; 这是一个问题吗?我的gcc配置错误了吗?我如何通过这个?
更新:我还有问题.我如何实际实现这个"修复"?
我正在按关键列顺序合并一些数据框,但我发现这些列没有按预期使用后缀参数重命名。我使用的是 Python 3.5 和 Panadas 0.19.2。
import pandas as pd
df0 = pd.DataFrame({'serial_num': ['01', '02', '03'], 'vals': ['A2', 'A3', 'A6']})
df1 = pd.DataFrame({'serial_num': ['01', '02', '03'], 'vals': ['B2', 'B3', 'B6']})
df2 = pd.DataFrame({'serial_num': ['01', '02', '03'], 'vals': ['C2', 'C3', 'C6']})
df_01 = pd.merge(df0, df1, on="serial_num", suffixes=("_df0","_df1"), copy=True)
print(df_01.columns)
df_012 = pd.merge(df_01, df2, on="serial_num", suffixes=("_foobar","_df2"), copy=True)
print(df_012.columns)
Run Code Online (Sandbox Code Playgroud)
结果是:
Index(['serial_num', 'vals_df0', 'vals_df1'], dtype='object')
Index(['serial_num', 'vals_df0', 'vals_df1', 'vals'], dtype='object')
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为关于合并的Pandas 文档没有建议,这应该是结果。的预期结果print(df_012.columns)是Index(['serial_num', 'vals_df0_foobar', 'vals_df1_foobar', 'vals_df2'], dtype='object')。看起来数据结果是正确的。我试过几件事情,包括 …
我的$ SHELL是tcsh.我想运行ac shell脚本,它会多次调用程序,每次更改一些参数.我需要调用的程序是在Fortran中.我不想编辑它.程序只有在执行后才会获取参数,但不会在命令行中获取.在脚本中调用程序后,程序将获得控制权(这是我当前卡住的地方,我永远无法离开,因为脚本在程序进程停止之后才会执行任何操作); 此时我需要传递一些变量,然后经过几次迭代后我需要从程序中按ctrl-c继续编写脚本.
如何才能做到这一点?
我发现AWK非常有用.这是我用来操纵数据的一个班轮.
ls | awk '{ print "awk " "'"'"'" " {print $1,$2,$3} " "'"'"'" " " $1 ".old_ext > " $1 ".new_ext" }' > file.csh
Run Code Online (Sandbox Code Playgroud)
我用这个AWK制作了一个脚本文件,它可以重命名一些文件,只打印出选择性列.有人知道更好的方法吗?什么是最好的AWK一个衬垫或聪明的操作?
我需要同时对两个数组进行排序,或者更确切地说,我需要对其中一个数组进行排序,并在排序时将其关联数组的相应元素与它一起使用.那就是如果数组是[(5,33),(4,44),(3,55)]并且我按第一轴排序(标记为dtype ='alpha')那么我想:[(3.0,55.0 )(4.0,44.0)(5.0,33.0)].这些都是非常大的数据集,我需要先排序(对于nlog(n)速度),然后再进行其他操作.我不知道如何以正确的方式合并我的两个单独的数组,以使排序算法工作.我认为我的问题很简单.我尝试了三种不同的方法:
import numpy
x=numpy.asarray([5,4,3])
y=numpy.asarray([33,44,55])
dtype=[('alpha',float), ('beta',float)]
values=numpy.array([(x),(y)])
values=numpy.rollaxis(values,1)
#values = numpy.array(values, dtype=dtype)
#a=numpy.array(values,dtype=dtype)
#q=numpy.sort(a,order='alpha')
print "Try 1:\n", values
values=numpy.empty((len(x),2))
for n in range (len(x)):
values[n][0]=y[n]
values[n][1]=x[n]
print "Try 2:\n", values
#values = numpy.array(values, dtype=dtype)
#a=numpy.array(values,dtype=dtype)
#q=numpy.sort(a,order='alpha')
###
values = [(x[0], y[0]), (x[1],y[1]) , (x[2],y[2])]
print "Try 3:\n", values
values = numpy.array(values, dtype=dtype)
a=numpy.array(values,dtype=dtype)
q=numpy.sort(a,order='alpha')
print "Result:\n",q
Run Code Online (Sandbox Code Playgroud)
我评论了第一个和第二个版本,因为它们会产生错误,我知道第三个版本会起作用,因为这反映了我在RTFM时所看到的内容.给定数组x和y(非常大,只显示示例)如何构造可以被numpy.sort正确调用的数组(称为值)?
***Zip很棒,谢谢.奖金问题:我怎样才能将排序后的数据再次解压缩成两个数组?
python ×4
algorithm ×1
arrays ×1
astronomy ×1
awk ×1
coding-style ×1
csh ×1
dataframe ×1
html ×1
javascript ×1
matplotlib ×1
merge ×1
numpy ×1
pandas ×1
python-3.x ×1
scripting ×1
shell ×1
swig ×1
unix ×1