Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Graph Title Issue within a Program, The Case of the Missing Titles

    Hi everybody,

    I wrote a short program for a Stata programming class that I teach that pulled together many aspects of Stata for my students. But, the program had an interesting issue. When I run the program code below it does what it is supposed to do. It creates three individual graphs, a graph used as a title, and combines them into one graph. Each of the three graphs shows a title based on the variable label.

    Here is the problem. If I run the program a second time, the titles disappear or are not shown. In fact, I lose the ability to display titles on any graphs created later by any method. I also cannot add titles using the graph editor.

    I have tried this on two computers with the same results and I have tried changing different parts of the program to try to isolate where the problem appears, but I am not seeing the cause of this issue.

    I would appreciate any ideas that you have about how my program may have caused this behavior.

    Here is the program code with data:

    Code:
    sysuse auto, clear
    **# Graphing Program
    capture program drop graphit
    program graphit
     local ttl : variable label `0'
     quietly summarize `0', meanonly
     local mean = strofreal(r(mean),"%4.1f")
     #d ;
      kdensity `0', normal normopts(lpattern(longdash))
        lwidth(vthick) lcolor(maroon)
        title(`ttl', position(11))
        xtitle("")
        note("mean=`mean'")
        yscale(off)
        xlabel(, noticks)
        graphregion(color(white))
        legend(off)
        xline(`r(mean)', lwidth(medthick) lpattern(dash))
        scheme(s2color)
        nodraw
        name(`0', replace);
     #d cr
    end
    
    graphit mpg
    graphit price
    graphit displacement
    
    #d ;
    graph twoway scatteri 0 0 100 100, m(i)
      xscale(off) yscale(off)
      ylabel(, nogrid)
      text(50 50 "Kernal Density" "Plots", size(*3))
      graphregion(color(white))
      nodraw
      name(title, replace);
    #d cr
    
    graph combine mpg price displacement title, nocopies graphregion(color(white)) name(cmbplot, replace)
    Best,
    Alan

  • #2
    That is a very interesting example
    Took me a while to figure out what is happening.
    It seems to me that what is happening is a name conflict. Specifically, that the graph name "title" should be reserved for Stata internal procedures, because that info is used internally to create the graph titles.
    If you change the name(title) to name(mytitle), Everything else seems to work fine.
    HTH
    F

    Comment


    • #3
      Thank you, Fernando, that indeed seems to be the problem.

      Best,
      Alan

      Comment

      Working...
      X