【问题标题】:How to make dashed / dotted / dash-dotted line in octave?如何在八度音阶中制作虚线/点线/点划线?
【发布时间】:2012-12-22 14:20:51
【问题描述】:

我想使用plot 命令以八度音阶创建单色图表/图形。 这就是为什么我想使用线条样式制作不同的图形线条,例如虚线/点线/点划线样式。 Standard plot 建议了几种线条样式,但它们都不像列出的变体。


EDIT-1: 标准绘图样式不适用于我的情况:":"、"-."、"--" 等样式不起作用,八度在任何情况下都会绘制实线。此外,菱形和正方形(d 和 s 选项)丑陋且大得不成比例。可能是有用的信息:我在 Windows 下使用 Octave。


EDIT-2:例如,这样的命令plot(A(:,1),A(:,2),"-.dk")给了我这样的(不适用!!!)图


更具体地说,我想要这样的东西(部分线条样式)

(图片来自文章:McCallum 和 K. Nigam。1998 年。朴素贝叶斯文本分类的事件模型比较。在 AAAI-98 文本分类学习研讨会论文集上)

【问题讨论】:

    标签: plot octave


    【解决方案1】:

    这些可以使用plot 的FMT 参数设置。基本上,这些似乎是您的选择(请参阅manual entrey on line styles):

    • "-"实线
    • ":"积分
    • "-."dash 后跟点
    • "--"虚线
    • "none" 没有行(只有标记)

    还有用于点的选项".",但这是用于实际数据点,而不是线。因此,要重新创建您的图片,应该可以使用以下方法

    plot (multinominal, "-dk", "MarkerFaceColor", "k")
    hold on;
    plot (mv-bernoulli, ":sk", "MarkerFaceColor", "k")
    

    语法可能看起来有点奇怪,但这里是如何阅读它。对于-dk,- 是实线,d 是菱形标记,k 是黑色(b 是蓝色)。在:sk,它是黑色的虚线和方形标记。

    请参阅手册中advanced plotting 的部分。

    编辑:参见下面的 cmets。这可能不适用于非常旧的 Octave 版本。

    【讨论】:

    • 感谢您的回复。但实际上,正如我在上面的问题中提到的,标准绘图样式不适用于我的情况:":"、"-."、"--" 等样式不起作用,八度在任何情况下都会绘制实线。此外,菱形和正方形(d 和 s 选项)丑陋且大得不成比例。可能是有用的信息:我在 Windows 下使用 Octave。
    • 您使用的是哪个版本的 Octave?还有什么图形工具包?因为它对我来说很好用。如果要更改标记的大小,请参阅手册上的标记样式部分。它们的大小可以改变。我在 Debian 上使用 Octave 3.6.2 和 fltk 进行图形处理(您可以使用 graphics_toolkit fltk 设置它,但也应该使用 gnuplot)。
    • 亲爱的,@carandraug,我在 Windows 7 下使用 Octave-3.2.4。我应该将它更新到新版本吗?我会尽力。谢谢你的建议。
    • @Andremoniy 是的! Octave 3.2.4 现在是一个相当老的版本了。从那时起已经发布了 8 个版本(2 个主要版本),并且已经有一个新版本的候选版本。另外,有人对我的回答投了反对票(猜测是因为您对不工作的评论)。如果是你,你能把反对票去掉吗?
    • 我正在使用 Octave 4.0.0(Linux、Zorin OS(基于 Ubuntu)、3.19.0-28)并且有同样的问题。我只有实线或只有点标记。我有 3 个graphics_toolkits 可用(qt - 默认一个,fltk 和 gnuplot),但都不能正常工作。可能是其他版本的原因吗? OP 帖子和问题仍然存在已超过 2 年。
    【解决方案2】:

    好吧,我自己找到了一个简单的解决方案(使用 Google ;)) 为了在 Octave 中获得具有不同线条样式的单色图表/图形,我们不需要使用 plot 的样式,例如 "--" 或 "-."(因为它们不起作用)。

    我们只需要命令print。例如,可以以eps 格式创建单色图形:

    print -deps "diagram.eps"

    这给了我一个很好的画面:

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,我认为使线条样式可见的解决方案是改变线宽。使用默认线宽值(即 1)时,许多线型无法区分。

      试试下面的代码,看看是否有效:

      x = ( 0:0.4:10 );
      f = sin(x) .* exp(-4 .* x);
      g = sin(x);
      plot(x,f,'r:','linewidth',5,x,g,'-.','linewidth',2)
      print(gcf,"PlotSimple.pdf")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多