Align at left side of nodes

hi all, I want to use graphviz for recording the callpath in my code reading, and I like to use "rankdir=LR" to arrange the function hierachy. Here my question is, how to align the nodes by its left side? it looks that the default alignment of nodes is "center".
I show an example like below:
============================================
digraph __cpufreq_set_policy{
    node [shape = box];
    compound = "true";
    rankdir=LR;

    //POINT IN
    cpufreq_add_dev_interface [shape = tab, style = filled, fillcolor = yellow,
    label =
    <
        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">  
            <TR> <TD HREF="cpufreq_add_dev_interface.dot.svg">cpufreq_add_dev_interface</TD> </TR>
        </TABLE>
    >]

    __cpufreq_set_policy [shape = invhouse, style = filled, fillcolor = green]
    cpufreq_add_dev_interface -> __cpufreq_set_policy  

    __cpufreq_set_policy -> "cpufreq_driver->verify()" [label = "1"]
    __cpufreq_set_policy -> "blocking_notifier_call_chain(CPUFREQ_ADJUST)" [label = "2"]
    __cpufreq_set_policy -> "blocking_notifier_call_chain(CPUFREQ_INCOMPATIBLE)" [label = "3"]
    __cpufreq_set_policy -> "blocking_notifier_call_chain(CPUFREQ_NOTIFY)" [label = "3"]
    __cpufreq_set_policy -> "if (cpufreq_driver->setpolicy)" [label = "4"]
    "if (cpufreq_driver->setpolicy)" -> "cpufreq_driver->setpolicy(policy)" [label = "y"]
    "if (cpufreq_driver->setpolicy)" -> "__cpufreq_governor(data, CPUFREQ_GOV_STOP)" [lhead=cluster_1] [label = "n"]
    
    subgraph cluster_1 {
        "__cpufreq_governor(data, CPUFREQ_GOV_STOP)"
        "data->governor = policy->governor"
        "__cpufreq_governor(data, CPUFREQ_GOV_START)"
        "__cpufreq_governor(data, CPUFREQ_GOV_LIMITS)"
    }
}
=====================================================
please see the attachment for png result:
thanks.

AttachmentSize
__cpufreq_set_policy.dot_.png72.71 KB

Align at left side of nodes

At present, there is no way to get such alignment. A node is placed on its rank using its center point. In theory, it would not be difficult to provide this feature, but there are bound to be hidden assumptions to complicate an implementation. The simplest sollution might be to use a gvpr script to do a realignment, then pass the output through neato -n to add the edges and render it.

Align at left side of nodes

Hi erg, thanks for your reply. I read gvpr's manual at a glance, it is some complex for me to write scripts for gvpr's prog file. so I think I have to give up.

Recent comments