Creating a histogram graph
To use the code in this topic, modify the following parameters:
- pathToShapeFile - Path to shapefile to build the histogram.
- seriesFieldName - Numerical field to use to build the histogram.
- pathToOutImage - Output file containing an image of the graph. Refer to the application programming interface (API) documentation for the appropriate format extension in IDataGraphBase.ExportToFile).
To create a histogram graph and adjust its properties, see the following code:
[VB.NET] Namespace ConsoleApplication1VBNET
Class Program
Shared Sub Main(ByVal args() As String)
Dim ao As IAoInitialize=New AoInitializeClass()
ao.Initialize(esriLicenseProductCode.esriLicenseProductCodeBasic)
SampleHistogram(@"path to your shapefile", "field name", binCount , @"path to your output image")
ao.Shutdown()
End Sub
Shared Sub SampleHistogram(ByVal pathToShapeFile As String, ByVal seriesFieldName As String, ByVal binCount As Integer, ByVal pathToOutImage As String)
' Open a workspace for the input shapefile.
Dim shapefileWorkspaceFactory As IWorkspaceFactory=New ShapefileWorkspaceFactoryClass()
Dim shapefileWorkspace As IWorkspace
shapefileWorkspace=shapefileWorkspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(pathToShapeFile), 0)
Dim featureWorkspace As IFeatureWorkspace=CType(shapefileWorkspace, IFeatureWorkspace)
' Create a data graph.
Dim dataGraphT As IDataGraphT=New DataGraphTClass()
' Get the table for the input shapefile.
Dim table As ITable=CType(featureWorkspace.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(pathToShapeFile)), ITable)
' Add the histogram series.
Dim seriesProps As ISeriesProperties=dataGraphT.AddSeries("bar:histogram")
seriesProps.SourceData=table
seriesProps.SetField(0, seriesFieldName)
' Set the histogram properties.
Dim histogramSeriesProps As IHistogramSeriesProperties=CType(seriesProps, IHistogramSeriesProperties)
histogramSeriesProps.BinCount=binCount
' Set titles.
dataGraphT.GeneralProperties.Title="Histogram of " + seriesFieldName
dataGraphT.AxisProperties(0).Title="COUNT"
' Update the data graph.
dataGraphT.Update(Nothing)
' Export the graph to file (the format depends on the file extension).
dataGraphT.ExportToFile(pathToOutImage)
End Sub
End Class
End Namespace
[C#] namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
IAoInitialize ao=new AoInitializeClass();
ao.Initialize(esriLicenseProductCode.esriLicenseProductCodeBasic);
SampleHistogram("path to your shapefile", "field name", binCount,
"path to your output image")ao.Shutdown();
}
static void SampleHistogram(String pathToShapeFile, String seriesFieldName,
int binCount, String pathToOutImage)
{
// Open a workspace for the input shapefile.
IWorkspaceFactory shapefileWorkspaceFactory=new
ShapefileWorkspaceFactoryClass();
IWorkspace shapefileWorkspace;
shapefileWorkspace=shapefileWorkspaceFactory.OpenFromFile
(System.IO.Path.GetDirectoryName(pathToShapeFile), 0);
IFeatureWorkspace featureWorkspace=(IFeatureWorkspace)
shapefileWorkspace;
// Create a data graph.
IDataGraphT dataGraphT=new DataGraphTClass();
// Get the table for the input shapefile.
ITable table=(ITable)featureWorkspace.OpenFeatureClass
(System.IO.Path.GetFileNameWithoutExtension(pathToShapeFile));
// Add the histogram series.
ISeriesProperties seriesProps=dataGraphT.AddSeries("bar:histogram");
seriesProps.SourceData=table;
seriesProps.SetField(0, seriesFieldName);
// Set the histogram properties.
IHistogramSeriesProperties histogramSeriesProps=
(IHistogramSeriesProperties)seriesProps;
histogramSeriesProps.BinCount=binCount;
// Set titles.
dataGraphT.GeneralProperties.Title="Histogram of " + seriesFieldName;
dataGraphT.VerticalAxisProperties.Title="COUNT";
// Update the data graph.
dataGraphT.Update(null);
// Export the graph to file (the format depends on the file extension).
dataGraphT.ExportToFile(pathToOutImage);
}
}
}
To use the code in this topic, reference the following assemblies in your Visual Studio project. In the code files, you will need using (C#) or Imports (VB .NET) directives for the corresponding namespaces (given in parenthesis below if different from the assembly name):
- ESRI.ArcGIS.System (ESRI.ArcGIS.esriSystem)
- ESRI.ArcGIS.Geodatabase
- ESRI.ArcGIS.DataSourcesFile
- ESRI.ArcGIS.Catalog
- ESRI.ArcGIS.Display
- ESRI.ArcGIS.Carto
- ESRI.ArcGIS.CartoUI
- System
- System.Collections.Generic
- System.Text
Development licensing | Deployment licensing |
---|---|
ArcGIS Desktop Basic | ArcGIS Desktop Basic |
ArcGIS Desktop Standard | ArcGIS Desktop Standard |
ArcGIS Desktop Advanced | ArcGIS Desktop Advanced |