PHPlot

  • phplot.php - PHPlot 本体
  • phplot_data.php - データ行列を扱うためのルーチン
  • rgb.inc.php - カラーマップ
  • COPYING - GNU LGPL Licence 文書
  • Changelog - 変更履歴
  • News.txt - おしらせ

NEWS

このファイルはリリース文書を含んだ PHPlotに関するお知らせです。 プロジェクトのWeb Site は、http://sourceforge.net/projects/phplot/ で プロジェクトのホームページは、http://phplot.sourceforge.net/ となっています。 ソースの詳細な変更を知りたい場合は、ChangeLog?を参照してください。


Changelog

This is the Change Log for PHPlot. The project home page is http://sourceforge.net/projects/phplot/

2010-04-04 (lbayuk) ===== Released as 5.1.1 =====
  • phplot.php: Updated version
  • README.txt: Updated for new release
  • NEWS.txt: Add text for new release
2010-04-01
  • Remove & from argument in SetDataValues?(). The data array is not modified and does not need to be passed by reference. (There is no performance advantage, either.)
2010-03-29
  • Feature request 2947679 "Support for alpha blending/Truecolor":Implemented truecolor image support with a new class PHPlot_truecolor, extended color specifications to allow specification of an alpha value, and added a new optional parameter to SetDataColors? for a default alpha value for all data colors.
    This feature is *EXPERIMENTAL* (see next item).
  • Truecolor.txt: New file, documentation for the new truecolor capability. (The Truecolor feature is experimental, which means it is subject to change in incompatible ways and the documentation has not yet been incorporated into the PHPlot Reference Manual.)
  • Makefile: Include new documentation file in release.
2010-03-26
  • Fixed bug 2976735 "Improvements and fixes for 'area' plots":
    Rewrote DrawArea?() function which handles 'area' plot.
    • Part 1: This is related to feature request 2947679, Truecolor support with transparency. The area plot function was filling each area from the X axis up to the Y value, resulting in area overlaps. This wasn't a problem with opaque colors, but with transparency, the overlapping areas resulted in changed colors. The rewritten function fills the area between each line instead of from each line down to the X axis. Plots with opaque colors will not change.
    • Part 2: Area plots now work when the X axis is moved up with
      SetXAxisPosition?().
    • Part 3: Fixed FindDataLimits?() for area (and stackedbars too) to take absolute values of Y values. The drawing function was doing this, but not FindDataLimits?, resulting in incorrect limits if any Y<0.
    • Part 4: The rewritten DrawArea?() also handles a new plot type 'stackedarea'. This is an area plot where the Y values are stacked,similar to 'stackedbars'.
      • Note: As part of the changes, it is now an error to try an area plot with an unequal number of Y points for each X.
2010-03-23
  • Feature request 2973995 "Add y-Data to Stackedbars":
    Implemented Y Data Labels for Stacked Bar charts (stackedbars).The labels are enabled with SetYDataLabelPos?, same as with bar charts.There are two types of labels: above the stack with the total, and within the bars at each segment. 'plotin' turns on the upper ones, and 'plotstack' turns both on.
  • Other changes:
    • Removed unimplemented second argument to SetYDataLabelPos?.
    • Fixed questionable logic in SetYDataLabelPos? when given an argument that belongs with SetYTickLabelPos?.
    • Fix comments at top of plot-type Draw functions.
    • Fix for bug 2974639 "Stacked bars plot breaks with X axis != 0": Stacked bar plots with non-zero X axis position no longer break apart into segments with gaps. The bars are drawn up from the X axis, and any segments or partial segments below the X axis are not drawn.
2010-03-22
  • Change related to feature request 2947679 - Fix 'dot' point shape:
         Use imagefilledellipse(), not imagefilledarc(), when drawing the 'dot'
         point shape. The fix was needed for future support of truecolor images
         with transparency, but filled dots from imagefilledellipse() look
         better (rounder) with regular images and opaque colors.
         Credit to mvaldez for identifying the problem and providing the fix.

2010-03-04

   * Fix for bug 2963757 "point_counts undefined error in 5.1.0":
     Fixed CheckPointParams so it sets point_counts even when the point shape
     and point size arrays are already the same size and do not need padding.

2010-01-26

   * Fix for bug 2938219 "Bars go in wrong direction":
     Fixed CalcAxisPositions() to be consistent in positioning the X axis.
     When all Y values are <0 and the Y=0 line is not part of the plot range,
     PHPlot will now default the X axis to the top of the plot, not the
     bottom.  This fixes the problem with bars to negative Y values being
     drawn downward if Y=0 is visible, but upward if Y=0 is not visible.
     This also affects thinbarline plots.
     Credit to lauryn1298 for finding the bug.

2009-06-14 Release 5.0.7

概要:

これは、PHPlotの最新の安定版です。一つの新たな機能の追加、いくつかのバグ修正、そしてPHPlotが公開されているライセンスの変更が行われています。

PHPlot のリファレンスマニュアルは、この公開版に合わせて改定されています。マニュアルは、Sourceforgeから独立したダウンロードとして提供されています。マニュアルは、http://phplot.sourceforge.netにおいてオンラインで閲覧することもできます。

変更点やバグ修正の詳細は ChangeLog? ファイルをご覧ください。

Licensing:

PHPlot is now released on the terms of the GNU Lesser General Public License, version 2.1. (Previous versions of PHPlot were released under a dual "PHP/GPL" license.) The licensing change was authorized by the original author and copyright holder of PHPlot.

New feature in 5.0.7:

  1. Plot area margins can now be partially specified, using either
     SetMarginsPixels or SetPlotAreaPixels. In previous releases of
     PHPlot you had to either specify all 4 margins or none.
     Credit to adoll for this feature.

Visible Changes and Possible Incompatibilities:

  1. Y data range can change:
     As a result of the bug fixes in this release, automatically-calculated
     Y data ranges can change. If you have missing Y values in your data,
     and you let PHPlot calculate the Y data range (that is, you do not
     call SetPlotAreaWorld with a Ymin value), then the lower limit for Y
     can change. If you have a plot with data-data-error data type, different
     error values for different points, and let PHPlot calculate the Y data
     range, then either Y limit can change.

Bug Fixes in 5.0.7:

  1. Fix for bug 2803900: SetRGBArray('large') does not work:
     Corrected an array name usage problem. You can now select the large
     color map. Also PHPlot no longer overrides use of the PHP include
     path when loading the large color map, and now reports an error if the
     file is needed and not found.
  1. Fix for bug 2791502 "Error plots treat missing Y values as 0":
     Missing Y values now with with data-data-error plots.
  1. Fix for bug 2792860 "Wrong DataLabelLines? with missing Y":
     Data label lines are now suppressed at missing Y values.
  1. Fix for bug 2786350 "Missing Y data results in bad auto-range":
     Missing Y values are now ignored when calculating the Y data range.
     Bug report and analysis by mrten.
  1. Fix for bug 2786354 "Incorrect auto-range for data-data-error":
     The Y data range is now correctly calculated for data-data-error plots
     when the error values differ from point to point.

2009-01-20 Release 5.0.6

Overview:

This is the current stable release of PHPlot. The purpose of this release is to fix additional problems with text spacing and positioning, and introduce some minor new features.

The PHPlot reference manual has been updated to match this release. The manual is available as a separate download from Sourceforge. The manual is also now available for on-line viewing at http://phplot.sourceforge.net

New features in 5.0.6:

  1. Allow mixing GD and TrueType? font text on the same plot
     You can use the new method functions SetFontGD() and SetFontTTF() to
     select a font and font type for text element (labels, titles, etc.) For
     example, you can have TrueType plot titles, and GD-fixed font labels.
     SetUseTTF() now sets the default text type, TTF or GD. This is fully
     backward compatible.
  1. Extended label formatting
     See the reference manual for more information on these.
 New label formatting types are added: 'printf' (using a user-defined
 format), and 'custom' (using a callback function).
 For 'data' type formatting, a prefix and suffix can be added. (PHPlot
 previously had an undocumented suffix for 'data' type, which still
 works.)
 For 'time' formatting, the format can now be specified in the same function
 call rather than using SetXTimeFormat and SetYTimeFormat.
 For 'data' formatting, the precision can now be specified in the same
 function call, rather than using SetPrecisionX and SetPrecisionY.
  1. Better control over line spacing in multi-line labels
 Line spacing can now be set separately for each text element using an
 additional argument to SetFont, SetFontGD, and SetFontTTF.  The overall
 SetLineSpacing() value is the default for each text element that does not
 have a specific line spacing set.
 PHPlot now interprets the value set for line spacing as the number of
 pixels only for GD text. For TrueType text, it is a scale factor for the
 font's built-in line spacing for TrueType text. The equation used is:
     interline_spacing = line_spacing * font_natural_spacing / 6
 where line_spacing is either the global value set with SetLineSpacing
 or a more specific value set with SetFont(), and font_natural_spacing
 is the amount of space between lines built-in to the TrueType font. The
 factor 6 should really be 4 (since PHPlot always used 4 as the default
 line_spacing, this would give the natural font spacing by default). But
 the text is too widely spaced with this value, and 6 was chosen to be
 more compatible for typical font sizes.

Visible Changes and Possible Incompatibilities:

  1. Line spacing
     Multi-line TrueType titles and labels will have different inter-line
     spacing. Since the text size affects the margin and plot area sizes,
     this results in slightly different sized features on any plot with
     multi-line TrueType text.
     Previous versions of PHPlot used a default 4 pixels for inter-line
     spacing of multi-line TrueType text, regardless of the font size.
     PHPlot now uses the 'natural' font inter-line spacing, adjusted by a line
     spacing parameter (per text type, with a global default).
 The same change can also increase the size of the legend box slightly.
  1. Internal changes were made to the way font information is stored. Anything
     that directly references PHPlot internals regarding fonts will break. Usage
     also changed for the internal functions to size and draw text (ProcessText*,
     SizeText*) due to font data storage changes.
  1. Changes were made to internal class variables used to store label
     formatting information. Anything relying on these internals may break.

Bug Fixes in 5.0.6:

#1932571: Data-Data Plot fails with same X values

 PHPlot will no longer hang if all X values are the same. But this is
 interim fix to force the X range to 1 to prevent the hang. Eventually,
 smarter automatic range code will handle this better.
 Credit to andyl for finding this.

#1891636: Misaligned TTF X Labels

 PHPlot will now correctly line-up TrueType labels along the X axis. There
 were small but very noticeable errors before, when the text had descenders
 or lines with all short letters.

2008-01-13 Released 5.0.5

Overview:

This is the current stable release of PHPlot. The emphasis of this release is to improve text positioning, margin calculation, and error handling.

Although this is considered a stable release, it has a large amount of changed code compared to the previous release 5.0.4. Two of the more complex components of PHPlot - text and margin calculations - were mostly re-written in this release. You are advised to carefully test your own applications with PHPlot-5.0.5 to see how your plots look. Refer to the README.txt file included in the release for information on reporting problems.

Starting with this release, PHPlot no longer supports PHP4, since the PHP group officially declared end-of-life for PHP4 as of 31 December 2007. PHPlot-5.0.5 was tested only with PHP-5.2.5 and we are unlikely to address any issues using PHPlot with older versions of PHP.

The PHPlot reference manual has been updated to match this release. The manual is available as a separate download from Sourceforge. The manual is now also now available for on-line viewing at http://phplot.sourceforge.net

The callback feature added in 5.0.4 is now documented in the reference manual. It is still considered experimental and subject to change, however.

Visible Changes and Possible Incompatibilities:

  1. Dropped support for PHP4.
  1. Eliminated remaining order-dependent behavior related to margins and text. PHPlot should now do nothing at all, except record parameters, until you draw the graph with DrawGraph?. I believe this was always the intended behavior of PHPlot, but over time perhaps various pre-calculations and dependencies crept in. Fixing this simplifies processing and should lead to more consistent behavior.
  1. The rewritten margin calculation code now uses actual sizes of all tick and data labels and tick marks, rather than guesses. Margins collapse to remove unused elements, but a minimum margin (currently fixed at 15 pixels) is applied so the plot edges don't get to close to the image edges. The result is that most graphs with auto-calculated margins will change in appearance. It most cases, the margins get slightly smaller. In other cases, earlier releases mis-calculated the margins, so this release will produce much neater margins.
  1. The X and Y titles are now offset out from the plot area, not in from the image area. For auto-calculated margins this should not make any difference, but if you use SetMarginsPixels? or SetPlotAreaPixels? to set larger margins, the axis titles will move in closer to the plot with this release.
  1. Changes were made to PHPlot internals, including removal of some class variables and functions, and addition of new variables and functions. These are documented in the ChangeLog?. Relying on any internal variables or functions in an application using PHPlot is unwise. The following internal functions were removed:
        SetImageArea() DrawDotSeries() DrawLineSeries() CalcXHeights()
        CalcYWidths() DrawLabels() InitImage() DrawDashedLine()
            These were marked 'deprecated', were undocumented and unmaintained.
        TTFBBoxSize()
            This was replaced with SizeText().
  1. Line spacing set with SetLineSpacing?() now affects TTF text as well as GD text. Previously, it only affected GD text. The default line spacing happens to be usable for TTF text.
  1. Changes were made to error handling. PHPlot will now trigger a user-level error after producing an error image, instead of exiting. If no error handler has been set, it will exit, as before. But now the error message should also get logged, or written to the standard error stream, depending on the SAPI in use. You can now establish an error handler to catch most PHPlot errors and do some cleanup before exit.
  1. PHPlot no longer accepts some invalid option values (such as a substring of a valid value, or empty strings) passed to functions. If your application aborts in CheckOption? with PHPlot-5.0.5 but 'worked' with previous releases, them you were probably using an invalid option value.

Bug Fixes in 5.0.5:

#945439: x_tick_label_height not set correctly

 Exact sizes of labels are now used to calculate margins.

#1813070: Bad position for multi-line TrueType? text

 Fixed as part of text functions rewrite. Use correct basepoint
 (lower left of each line) when positioning text lines.

#1813071: Wrong title height for multi-line TTF text

 Fixed as part of text functions rewrite: calculate height of
 multi-line text correctly. Also now uses the line-spacing setting.

#1813474: DrawText? alignment arguments wrong

 Fixed so 'top' and 'bottom' now have the usual meaning: top means
 align top of text with reference, bottom means align bottom of text.
 This was switched before. Changed every internal caller to compensate.

#1816844: Fix order dependency for setting titles

 Defer processing of title strings until DrawGraph(),
 so it doesn't matter if fonts, etc. are set before or after.

#1819668: Horiz. align multi-line text: GD vs TTF

 The text functions were rewritten to draw TTF text line-by-line,
 like GD text, and correctly align each line.

#1823774: Default Font Path and Error Message

 Error handling has been improved to make sure a message is logged, in
 addition to the error image, and use error_trigger rather than exit.

#1826513: FIXME in DrawLegend?: Max label length

 The actual size needed for legend text is now used.

#1827263: Spoiled up pie-chart if $val is close to zero

 Fixed by skipping over any segment that rounds to 0 degrees of
 arc. (The GD function uses integer angles only, and 0 degrees
 means draw a complete circle.)

#1836528: Insufficient checking of parameter values

 Rewrote validator function to reject improper parameter values.

#1843012: Make margins, drawing consistent

 Margin code logic was rewritten and checked for consistency.

#1856207: Margin error with 'xaxis'/'yaxis' position

 Margin space is now allocated for ticks and labels if their position
 is 'xaxis' or 'yaxis' and the axis is at the plot edge. This is not
 a perfect fix (the axis could be close but not at the edge).

2007-10-20 Released 5.0.4

Overview:

This is the latest stable release of PHPlot. We are abandoning the 'rc' version naming style, because we don't consider these last releases 'release candidate' versions. As we continue to make changes to PHPlot, we are not converging toward a final "5.0" release, however we do consider these releases stable and complete enough for production use.

This release fixes a number of problems and introduces a few new features.

The PHPlot reference manual has also been updated to match this release. New material has been added documenting some of the PHPlot internals. The manual is available as a separate download from Sourceforge.

Code Cleanup:

Some code cleanup is going in to this release. It is hoped that these changes will not impact any existing scripts using PHPlot, but will make the PHPlot code itself easier to understand and maintain.

PHPlot now avoids making changes outside its own class definition. There are no longer any functions defined outside the class, nor any constants. Three constants (MINY MAXY TOTY) were removed, and 2 functions were removed (see Visible Changes below). Also PHPlot no longer sets the PHP error reporting level to E_ALL. Although we highly recommend setting error reporting to E_ALL in your php.ini file or scripts, it is not right for PHPlot to assume that you want it.

Visible Changes and Possible Incompatibilities:

Arrays containing color and style information are used with several PHPlot functions to control the plot style array. These functions are:

   SetPointShapes, SetPointSizes, SetLineWidths, SetLineStyles,
   SetDataColors, SetDataBorderColors, and SetErrorBarColors.

The arrays passed to these functions MUST used sequential integer 0-based indexes. This is what the PHP manual calls "Usual integer indices (starting from zero, increasing by one)". This is the type of array you get in PHP by default if you use array() without specifying key values, or use the empty-bracket assignment operator to add values onto an array. In previous versions of PHPlot, some of these functions would also work with string-indexed or non-sequentially-indexed arrays, but this was not clearly defined. Starting with PHPlot-5.0.4, only arrays with "usual integer indices" work, and other array indexes will cause errors.

Some internal-use-only functions have had their usage changed or been removed. If you are using functions that are not documented in the PHPlot Function Reference in the manual, your code may have to be changed.

As part of the code cleanup, two functions which were defined outside the PHPlot class were removed: array_pad_array(), and array_merge_php4(). If your code used these, you need to fix your code.

The routines which accept a color name, value, or array now check for a valid color name. If you specify a color name which is not in your current color table, PHPlot will draw an error and exit. Previously, PHP would report an index error, continue, and get a 'headers already sent' message.

Bug Fixes in 5.0.4:

#1813021: Miss-positioned right-justified vertical GD text.

 Fixed DrawText() to correctly position 90 degree right-justified text
 drawn in a fixed GD font. This could be seen with 90 degree Y tick labels.

#1790441 Removed destructor/shutdown function, and no longer recommend

 using reference assignment when creating a PHPlot object. This was
 interfering with memory usage.
 Credit to annajilly for analysis.

#1779115 SetLegendWorld?() failed because of undefined variables. The

 required order dependency was too hard to meet. This is now fixed.
 You can now use SetLegendWorld anywhere before DrawGraph.

#1726810 (feature request, but actually a bug fix) Ignore empty strings

 as data labels when doing time or data label formatting. These would
 previously produce errors or bad formatting. Now you can omit labels
 as needed even with time and data formatting.
 Credit to exgerhardr for finding this.

#1605555 Y data labels used wrong font and not formatted (bar charts only).

#1208054 Localization of number formatting in 'data' format type. PHPlot

 will attempt to format the numbers in a way appropriate to your locale.
 You can also force the formatting with the new function SetNumberFormat.
 Credit to David Hern瘤dez Sanz.

#937944 X/Y Tick counts: PHPlot could draw one two few Y tick counts, and

 one too many X tick counts. This is not a perfect fix, and more work is
 needed here, but this fixes an error case in both X and Y values.

New Features in 5.0.4:

New function SetLegendStyle? allows control of the alignment of text and

 color boxes within the legend.  Also allows removing the color boxes.
 Based on bug #1208054.
 Credit to David Hern瘤dez Sanz.

New function SetNumberFormat?. See bug report #1208054 above.

Callbacks are added. PHPlot can call back your functions while generating the

 plot. This is experimental, and documented only in the file "Callbacks".
 Credit to annajilly for the idea and design.

2006-11-13 Released 5.0rc3

Overview:

This is an interim release. It has been a long time since the previous release 5.0rc2, and there have been a lot of changes. There are still more changes likely to go in before we have "5.0", but there are enough for now.

The PHPlot Reference Manual has also been released, and is available as a separate download from Sourceforge. PHPlot users and developers are strongly encouraged to read the manual.

This release does not include the "doc/" and "examples/" directories of previous releases. The Reference Manual contains more complete and up-to-date information and examples, and I am unable to maintain the doc/ and examples/ files while also maintaining the Reference Manual. If you need those files, they can be accessed with the Sourceforge web CVS browser.

New Features:

The emphasis for this release is bug fixing, so there are few new features.

  1. You can now suppress lines or points on individual plots in a linepoints
     graph. This feature was added because I needed a graph with several
     linepoints lines, but also with a solid line showing an "80% goal".
     Use SetPointShapes with the value 'none' in the array to suppress the
       point markers for that plot (and only draw the line).
     Use SetLineStyles with the value 'none' in the array to suppress the
       line for that plot (and only draw the point markers).
     [Bug # 1594458]
  1. Bar charts can have data labels above the bar with the value. Turn
     these on with SetYDataLabelPos('plotin'). This is somewhat experimental,
     since there isn't a lot of room for labels on top of the bars and you
     may find the results are not useful.

Visible Changes:

Here are the more significant changes in this release. These are changes which may affect existing scripts and output from PHPlot. See the ChangeLog? file for information about all changes and bug fixes.

  1. A bug fix on bar chart bar borders results in black borders around the
     bars if shading is turned off. The border was previously covered up,
     but was supposed to be there. If you need borderless, unshaded bars,
     you need to use SetDataBorderColors to make the borders the same colors
     as the bars. [Bug # 1096197]
  1. TrueType? font pathname handling was fixed. You no longer need to use
     SetUseTTF(True). You can either use full paths to the font files with
     SetDefaultTTFont() and SetFont(), or you can call SetTTFPath() to point
     to a directory of font files, and then use simple font filenames without
     paths in SetDefaultTTFont() and SetFont().
     [Bug # 1144644 plus several others]
  1. There have been several fixes regarding automatically calculated ranges
     and scales. The result is that you may see less extra space and fewer
     tick marks in some cases.
  1. A fix was made to bar and stackedbar graph bar widths in order to get
     the X axis labels to properly center. As part of the fix, the bar widths
     now match between the two graph types. (Before this fix, the bars were
     narrower in bar graphs compared to the same data plotted as a stacked
     bar.) As a result, bar graph bars will now be drawn with wider bars, and
     stackedbar graph bars will be narrower. You can adjust this with the new
     class variable bar_extra_space.     [Bug # 1437912]
  1. Dot shapes and sizes were off by 1 or 2 slots in the array of shapes or
     sizes. After the fix, you may get different dot shapes or sizes per
     plot line. [Bug # 1096194]

Testing:

Since its output is visual (graphics), and it has so many interconnected modes and options, PHPlot is difficult to test. But at least we are now trying. I have a collection of PHPlot scripts (currently about 60) and a script to run through them. The script automatically checks that:

   1) Nothing was written to the standard error stream;
   2) An image file of size greater than 0 was written;
   3) Neither the test script nor PHPlot did exit(). This catches cases
      where PHPlot aborts with DrawError().

The automated test is an easy way to check for serious regression, but you really need to inspect the output files to validate PHPlot. This takes a little time, and it is easy to overlook problems.

The real issue is test coverage. Just as we can be sure that future PHPlot releases will pass the test collection, we can also be sure that future bug reports will be written against untested cases.


2006-11-08 PHPlot on Sourceforge has a new maintainer: lbayuk


2004-10-24 Released 5.0rc2



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-04-15 (木) 14:31:10 (4049d)