AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 746474
Accepted
coderodde
coderodde
Asked: 2023-05-21 02:07:11 +0800 CST2023-05-21 02:07:11 +0800 CST 2023-05-21 02:07:11 +0800 CST

gnuplot - 不同颜色的直方图条,顶部有值

  • 772

我有这个数据文件(TotalDurationBarPlot.dat):

Indexed list 934
Tree list 3692
Array list 12274
Linked list 48188

我希望实现的是一个带有 4 个条形图的直方图:一个用于Indexed list,一个用于Tree list,一个用于Array list,一个用于Linked list。我的要求是:

  1. 每个酒吧都有它独特的颜色,
  2. 在每个栏的顶部,有一个数字表示栏的高度。(例如,在Tree list上方,有3692。)
  3. 如果在浅灰色背景上有一个图例,右上角有一个细黑色图例边框,那就太好了。

我目前的尝试

截至目前,我的数据文件如下所示:

# ILL TL AL LL
934 3692 12274 48188

...我的 gnuplot 脚本如下所示:

set title font "Monospaced,13" 'Total duration'
set grid
set key right top
set style data histograms
set style histogram cluster gap 2
set style fill solid border 2
set xtics format ""
set grid ytics
set ylabel "Milliseconds"
set yrange [0:70000]
# set boxwidth 0.5 relative
# set label "Array list\n134908 ms" at graph 0.145,0.9

ArrayListColor   = "#491d75";
IndexedListColor = "#b32929";
LinkedListColor  = "#d49435";
TreeListColor    = "#12520b";

plot 'TotalDurationBarPlot.dat' using 1 title "Indexed list" linecolor rgb IndexedListColor, '' using 2 title "Tree list" linecolor rgb TreeListColor, '' using 3 title "Array list" linecolor rgb ArrayListColor, '' using 4 title "Linked list" linecolor rgb LinkedListColor, '' u 0:1:1 with labels offset -6.0,-100.0 title ""

set terminal png size 650,350 enhanced font "Monospaced,13"
set output 'TotalDuration.png'
replot
exit

它产生:

列表比较

编辑 1

@meuhgnuplot的答案中提供的代码生成以下图:

烂吧

gnuplot
  • 1 1 个回答
  • 84 Views

1 个回答

  • Voted
  1. Best Answer
    meuh
    2023-05-25T17:12:25+08:002023-05-25T17:12:25+08:00

    我遵循了您从 stackoverflow 获得的一些提示,如果您还没有自己的解决方案,我将使用原始多行数据文件以这种足够接近的近似值结束。

    set terminal png size 650,350 enhanced font "Monospaced,13"
    set output 'TotalDuration.png'
    set style fill solid border 2
    set key noautotitle
    set key box opaque fillcolor "0x7faaaaaa"
    set grid x,y
    set boxwidth 0.8 relative
    set ylabel "Milliseconds"
    set yrange [0:90000]
    
    Array   = 0x491d75
    Indexed = 0xb32929
    Linked  = 0xd49435
    Tree    = 0x12520b
    
    list=""
    plot 'TotalDurationBarPlot.dat' \
        u 0:3:(value(strcol(1))):xtic(1)   with boxes lc rgb var, \
     '' u 0:3:3:(list=list." ".stringcolumn(1)) with labels offset 0,0.7, \
     for [i=1:4] '' u (NaN):(NaN):(value(word(list,i))) with boxes lc rgb var title word(list,i)
    

    我不得不求助于 gnuplot 6.1,以获得关键的“fillcolor”选项,但它也应该在 5.4 中,我不必动手。这里使用的主要功能是将第 1 列文本(“Indexed”、“Tree”、...)保存在一个字符串变量中list,然后用于word(list,i)提取一个单词作为标题。for 循环读取文件但不绘制任何内容,因为所有数据均无效,NaN.

    颜色设置在 4 个变量中,这些变量与数据的第 1 列同名。您将第 1 列作为带有 的字符串获取strcol(1),然后使用函数 value()获取具有该名称的变量的值。这是一个整数,由lc rgb var. 同样在for循环中完成,但这里的名称是从收集list的名称中获取的。

    阴谋

    我建议对于您想要更改的此输出的任何单个方面,您在 stackoverflow 上发布一个问题,以便迭代地获得您想要的答案。

    • 1

相关问题

  • 使用 GNUplot 设置轴标签和直方图标签

  • 如何从更改日志中显示 gnuplot 时间序列图

  • 使用 x 范围内具有相同值的文件的统计信息进行绘图

  • 重新排序 filledcurved 的绘图标题

  • 用文件中的点绘制二维图形

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve