help-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Graphing a list of values


From: Alex fxmbsw7 Ratchev
Subject: Re: Graphing a list of values
Date: Sat, 18 Sep 2021 12:07:14 +0200

well, congrants..

On Sat, Sep 18, 2021, 11:54 hancooper <hancooper@protonmail.com> wrote:

> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> On Saturday, September 18, 2021 8:08 AM, Alex fxmbsw7 Ratchev <
> fxmbsw7@gmail.com> wrote:
>
> well its in two mails
> however the first one made it of an array content of without more than one
> field each block, ..and this one does $2 parsing
> you just exchange the printf by the command that gives you the data
>
> greets
>
>
> Have come up with a neater version
>
> Awk='BEGIN \
>         {
>           printf ("width: terminal %d\n", width);
>           stars = sprintf ("%200s", "");
>           printf ("stars: %s\n", stars);
>           gsub (".", "*", stars);
>         }
>       { printf ("%.*s\n", $1, stars); }'
>
> printf '%s\n' 4 1 0 3.75 17 |
>    awk -v width="$( tput cols )" "${Awk}"
>
> I can capture the width of the terminal and pass it into an awk variable,
> make a long array of characters in awk and print a clipped section.
>
> Also need to add auto-scaling to use the width of the terminal, using the
> largest the largest vales, and output the graph in an END block.
>
>
>
>
>
> On Sat, Sep 18, 2021, 10:01 hancooper <hancooper@protonmail.com> wrote:
>
>> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
>> On Saturday, September 18, 2021 7:55 AM, Alex fxmbsw7 Ratchev <
>> fxmbsw7@gmail.com> wrote:
>>
>> i posted awk code that does similiar
>> you can extract $2 by a awk '{ print $2 }' before it, and not using
>> ${t[*]} for your data piped as input
>>
>> just curious, did you recieve a mail post with the awk code ?
>>
>>
>> Cannot see your code around, except the parts below
>>
>> let me actually fix up the code for your usage
>>
>> printf %s\ %s\\n @ 20 + 100 . 50 | awk '{ print $2 }' | gawk -v c=15 -v
>> S=+ '{ m = m < $1 ? $1 : m ; s[NR] = $1 } END { while ( ++i <= NR ) print
>> l( int( s[i] / m * c ) ) } function l( n, t ) { t = sprintf( "%-" n "s", ""
>> ) ; gsub( " ", S , t ) ; return t }'
>>
>> +++
>> +++++++++++++++
>> +++++++
>>
>> On Sat, Sep 18, 2021, 09:49 hancooper <hancooper@protonmail.com> wrote:
>>
>>> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
>>> On Saturday, September 18, 2021 5:46 AM, Alex fxmbsw7 Ratchev <
>>> fxmbsw7@gmail.com> wrote:
>>>
>>> i used in the awk post i did the max of seen in data yes
>>>
>>>
>>> Somehow I got to pass the second field of each element in the array.
>>> Perhaps sed can help here.
>>>
>>>
>>> On Sat, Sep 18, 2021, 07:46 hancooper <hancooper@protonmail.com> wrote:
>>>
>>>> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
>>>> On Saturday, September 18, 2021 5:26 AM, Alex fxmbsw7 Ratchev <
>>>> fxmbsw7@gmail.com> wrote:
>>>>
>>>> > you have a max_mb per maxcols too ?
>>>> >
>>>> > i wanted to give it a try but the max_mb is missing, for scaling right
>>>> >
>>>> > .. ?
>>>>
>>>> I can set a maximum (7200 is a sensible value), or use the maximum in
>>>> the array.
>>>>
>>>> > On Sat, Sep 18, 2021, 06:09 hancooper via help-bash@gnu.org wrote:
>>>> >
>>>> > > I have an array composed of the following elements and want to
>>>> generate a
>>>> > > graph of the values, distributed over a number of columns (ncols=80)
>>>> > >
>>>> > >     + 3665.64686592 MB
>>>> > >     + 1261.64520768 MB
>>>> > >     + 96.35131584 MB
>>>> > >     + 61.17171840 MB
>>>> > >     + 99.81615072 MB
>>>> > >     + 541.22517696 MB
>>>> > >     + 1067.42695488 MB
>>>> > >     + 462.11600448 MB
>>>> > >     + 970.72017120 MB
>>>> > >     + 1539.70699584 MB
>>>> > >     + 2207.06856864 MB
>>>> > >     + 2522.07166848 MB
>>>> > >     + 645.12725472 MB
>>>> > >     + 104.71848192 MB
>>>> > >     + 70.59747552 MB
>>>> > >     + 44.05066848 MB
>>>> > >
>>>> > >
>>>> > > For instance
>>>> > >
>>>> > >     + 10 MB
>>>> > >     + 50 MB
>>>> > >     + 100 MB
>>>> > >
>>>> > >
>>>> > > Here would be the result with `ncols=10`
>>>> > >
>>>> > >     *
>>>> > >     *****
>>>> > >     **********
>>>> > >
>>>> > >
>>>> > > Have started with the following, but have to modify to take values
>>>> from an
>>>> > > array. Using `awk` seems as the better way to do this.
>>>> > >
>>>> > >     oaggr=("+ 659.28737472 MB" "+ 316.94840736 MB" "+ 163.69489344
>>>> MB")
>>>> > >     awk '{$2=sprintf("%-*s", $2, ""); gsub(" ", "=", $2); \\
>>>> > >     printf("%-10s%s\\n", $1, $2)}' file
>>>> > >
>>>>
>>>>
>>>>
>>>
>>
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]