zoukankan      html  css  js  c++  java
  • (4)


    http://blog.sciencenet.cn/blog-373392-501454.html


    回首看看我们以前所有的作图,横坐标都标示在底部,而纵坐标都标示在左侧。其实,在图像顶部和右侧,还隐藏着一对不太引人注意的坐标轴,我们可以管它们叫做“第二坐标轴”。平时,它们只是第一对坐标轴的镜像;在我们需要的时候,它们可以用来表示不同的物理量。有时候,我们会有两组性质不同但是又相互关联的数据,这时候我们或许想把他们画在同一副图上,以便比较。

    还拿北京市月平均降水量举例,但是这次,我们把温度也加上。下面是我们的数据文件 weather_beijing.dat

    ### 文件开始 ###
    # 北京月平均降水量(毫米)及气温(摄氏度)
    #
    # 月份  降水量  气温
    # ===================
    1       2.5     -4
    2       5.1     -2
    3       10.2    6
    4       25.4    13
    5       27.9    20
    6       71.1    24
    7       175.3   26
    8       182.9   25
    9       48.3    20
    10      17.8    13
    11      5.1     5
    12      2.5     -2
    ### 文件结束 ###


    我们之前讲过的所有有关坐标的参数,在第二坐标轴上均适用,只不过相应的名字起始字母改为 x2 或者 y2,例如 ylabel 改为 y2label。另外,plot 命令有一个新的参数 axis,用来控制使用哪个坐标轴,例如 axis x1y2 就表示使用第一横轴和第二纵轴。现在我们来看用上面数据作图的例子:

    gnuplot> set xlabel "月份"
    gnuplot> set ylabel "降水量(毫米)"
    gnuplot> set y2label "气温(摄氏度)"
    gnuplot> set title "北京市月平均降水量及气温"
    gnuplot> set xrange [0.5:12.5]
    gnuplot> set xtics 1,1,12
    gnuplot> plot "weather_beijing.dat" u 1:2 w lp pt 5 lc rgbcolor "#2B60DE" axis x1y1 t "降水量", "weather_beijing.dat" u 1:3 w lp pt 7 lc rgbcolor "#F62817" axis x1y2 t "气温"


    这里的气温数据使用了图像右边的第二纵轴 y2,但是 y2 轴上的刻度并没有变化,依然是左边 y1 轴的镜像。我们在这里有两件事要做:
    1. 去除右边纵轴上的 y1 刻度镜像,否则这些刻度标记将和新的 y2 刻度标记混起来,导致无法识别;
    2. 在右边纵轴上加上 y2 刻度标记。
    我们执行下面的命令:
    gnuplot> set ytics nomirror
    gnuplot> set y2tics
    gnuplot> replot

    好了,现在降水量和温度数据分别对应于左侧和右侧的纵坐标。

    看到这里,我们可能有点怀念我们上一讲谈到的 grid。如果能加上栅格,数据图示就更清楚了。但是现在我们有两组不同的纵坐标,如果都开启栅格,还不乱套了?set grid 命令允许我们在开启栅格时,选择使用哪一组坐标。例如:
    gnuplot> set grid xtics y2tics
    会开启 x1 y2 的栅格。但是这还是不能兼顾两组数据。最好的解决方案是,让两个纵轴有相同数目的分格,这样两套 grid 也就重合了,开启任何一个就可以了。例如,上面的图中左侧纵轴有 10 个分格,我们让右侧纵轴也有 10 个分格:
    gnuplot> set y2range [-10:40]
    gnuplot> set y2tics 5
    gnuplot> set grid
    gnuplot> replot

    现在看起来好多了。

    最后,不知道大家注意到没有,在开始的 plot 命令里,我们用了新的方式定义图线颜色。在第七讲“点线风格”里,我们提到过,可以用预定义的数字代码来定义图线颜色。但是在这里,我们使用了 rgbcolor 来定义颜色,这很大程度上增加了颜色选择范围,允许更好的显示效果。而其用法也很简单,就是在 rgbcolor 之后,加上颜色的 RGB 代码,了解 HTML 的朋友应该对这个不陌生。

  • 相关阅读:
    Android 7.0 UICC 分析(二)
    Android 7.0 UICC 分析(一)
    痛风有治吗?
    <学习笔记> 数论
    <学习笔记> 高精度 +
    <学习笔记> 线段树
    <学习笔记?> 链表
    <学习笔记> 手打堆模板
    <学习笔记> 倍增 lca
    <学习笔记> 最小生成树 Kruskal
  • 原文地址:https://www.cnblogs.com/ztguang/p/12644737.html
Copyright © 2011-2022 走看看