我喜欢将所有内容存储在一个变量中,因为我制作的每个gnuplot脚本会一次生成数十个绘图,这样可以更容易地跟踪。以下是一个图表(感兴趣的变量:ytics
)的示例:
# Setup style
set terminal pngcairo dashed
unset key
set style line 1 pointtype 7 pointsize 0.3 linecolor rgb "black"
# Setup the plots' ytics
ytics_H2 = (0,0.002,0.004,0.006,0.008,0.010,0.012);
# Store the range for each variable
min_T = 200; max_T = 1800;
min_H2 = 0; max_H2 = 0.012;
# Plot
set output 'my_output_H2.png'
set ytics ytics_H2
set xrange [min_T :max_T ]
set yrange [min_H2:max_H2]
plot 'scatter.dat' using 1:2 with points linestyle 1
如您所见,只打印最后一个刻度。如果我将变量ytics
替换为它所设置的向量,那么一切都按预期工作。
答案 0 :(得分:1)
对于这种用例,gnuplot有宏:
set macros # necessary only for v < 5.0
ytics = "(1, 5, 8)"
set ytics @ytics
plot x
为了使用宏,您必须定义一个字符串变量,其中包含您稍后要使用的命令部分,此处为ytics = "(1, 5, 8)"
。稍后您可以将其内容与@ytics
一起使用。
这里的重要事实是,gnuplot首先将@ytics
替换为字符串变量ytics
的内容,即将set ytics @ytics
扩展为set ytics (1, 5, 5)
然后才执行整个命令。
答案 1 :(得分:0)
由于您的时间间隔是固定的并且相同,您也可以使用import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
public class TrackMap<K, V> extends HashMap<K,V>{
private static final long serialVersionUID = 1L;
Set<Object> usedKeys = new HashSet<>();
@Override
public V get(Object key) {
usedKeys.add(key);
return super.get(key);
}
public Set<Object> getUsedKeys() {
return usedKeys;
}
public static void main(String[] args) {
TrackMap<Integer, String> test = new TrackMap<>();
for(int i = 0;i<100;++i) {
test.put(i, Integer.toString(i));
}
System.out.println(test.get(5));
System.out.println(test.get(10));
System.out.println(test.get(15));
System.out.println(test.get(17));
System.out.println(test.get("what?"));
for(Object i : test.getUsedKeys()) {
System.out.println("The key " + i + " was accessed");
}
}
}
形式:
start, incr, end