C# 绘制统计图(柱状图, 折线图, 扇形图)
统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有Flash制作的统计图形, 有水晶报表生成统计图形, 有专门制图软件制作, 也有编程语言自己制作的;这里我们用就C# 制作三款最经典的统计图: 柱状图, 折线图和扇形图;既然是统计, 当然需要数据, 这里演示的数据存于Sql Server2000中, 三款统计图形都是动态生成. 其中柱状图我会附上制作步骤, 其他两款统计图直接附源码.
说明: 需求不一样, 统计图形绘制后的显示效果也不一样, 比如这里柱状图的主要需求是为了比较每一期报名人数与通过人数的差, 因此会把两根柱子放在一起会使比较结果一目了然. 因此大家可以根据需要灵活绘制.
一. 柱状图的绘制.
绘制步骤如下:
1. 定义绘图用到的类.
int height = , width = ;
Bitmap image = new Bitmap(width, height);
Graphics g = Graphics.FromImage(image);
Pen mypen = new Pen(brush, );
2. 绘制图框.
g.FillRectangle(Brushes.WhiteSmoke, , , width, height);
3. 绘制横向坐标线
for (int i = ; i < ; i++)
{
g.DrawLine(mypen, x, , x, );
x = x + ;
}
4. 绘制纵向坐标线
for (int i = ; i < ; i++)
{
g.DrawLine(mypen, , y, , y);
y = y + ;
}
5. 绘制横坐标值
String[] n = { "第一期", "第二期", "第三期", "第四期", "全年" };
for (int i = ; i < ; i++)
{
g.DrawString(n[i].ToString(), font, Brushes.Blue, x, );
x = x + ;
}
6. 绘制纵坐标值
String[] m = {"","", "", "", "", "", "100“};
for (int i = ; i < ; i++)
{
g.DrawString(m[i].ToString(), font, Brushes.Blue, , y);
y = y + ;
}
7. 定义数组存储数据库中统计的数据
int[] Count1 = new int[]; //存储从数据库读取的报名人数
int[] Count2 = new int[]; //存储从数据库读取的通过人数
8. 从数据库中读取报名人数与通过人数
SqlConnection Con = new SqlConnection(
"Server=(Local);Database=committeeTraining;");
Con.Open();
string cmdtxt2 = "SELECT * FROM ##Count
where Company='" + ****+ "'";
SqlDataAdapter da = new SqlDataAdapter(cmdtxt2, Con);
DataSet ds = new DataSet();
da.Fill(ds);
9. 将读取的数据存储到数组中
Count1[] = Convert.ToInt32(ds.Tables[].Rows[][“count1”].ToString());
Count1[] = Convert.ToInt32(ds.Tables[].Rows[][“count3”].ToString());
Count2[] = Convert.ToInt32(ds.Tables[].Rows[][“count2”].ToString());
Count2[] = Convert.ToInt32(ds.Tables[].Rows[]["count4"].ToString());
10.定义画笔和画刷准备绘图
x = ;
Font font2 = new System.Drawing.Font(
"Arial", , FontStyle.Bold);
SolidBrush mybrush = new SolidBrush(Color.Red);
SolidBrush mybrush2 = new SolidBrush(Color.Green);
11. 根据数组中的值绘制柱状图
()第一期报名人数
g.FillRectangle(mybrush, x, - Count1[], , Count1[]);
g.DrawString(Count1[].ToString(), font2,
Brushes.Red, x, - Count1[] - ); () 第一期通过人数
x = x + ;
g.FillRectangle(mybrush2, x, - Count2[], , Count2[]);
g.DrawString(Count2[].ToString(), font2,
Brushes.Green, x, - Count2[] - );
12. 将图形输出到页面.
System.IO.MemoryStream ms = new
System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
Response.ClearContent();
Response.ContentType = "image/Jpeg";
Response.BinaryWrite(ms.ToArray());
最终柱状图的效果图:
柱状图的完整代码:
private void CreateImage()
{
int height = , width = ;
Bitmap image = new Bitmap(width, height);
//创建Graphics类对象
Graphics g = Graphics.FromImage(image); try
{
//清空图片背景色
g.Clear(Color.White); Font font = new Font("Arial", , FontStyle.Regular);
Font font1 = new Font("宋体", , FontStyle.Bold); LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(, , image.Width, image.Height),
Color.Blue, Color.BlueViolet, 1.2f, true);
g.FillRectangle(Brushes.WhiteSmoke, , , width, height);
// Brush brush1 = new SolidBrush(Color.Blue); g.DrawString(this.ddlTaget.SelectedItem.Text + " " + this.ddlYear.SelectedItem.Text +
" 成绩统计柱状图", font1, brush, new PointF(, ));
//画图片的边框线
g.DrawRectangle(new Pen(Color.Blue), , , image.Width - , image.Height - ); Pen mypen = new Pen(brush, );
//绘制线条
//绘制横向线条
int x = ;
for (int i = ; i < ; i++)
{
g.DrawLine(mypen, x, , x, );
x = x + ;
}
Pen mypen1 = new Pen(Color.Blue, );
x = ;
g.DrawLine(mypen1, x, , x, ); //绘制纵向线条
int y = ;
for (int i = ; i < ; i++)
{
g.DrawLine(mypen, , y, , y);
y = y + ;
}
g.DrawLine(mypen1, , y, , y); //x轴
String[] n = { "第一期", "第二期", "第三期", "第四期", "上半年", "下半年", "全年统计" };
x = ;
for (int i = ; i < ; i++)
{
g.DrawString(n[i].ToString(), font, Brushes.Blue, x, ); //设置文字内容及输出位置
x = x + ;
} //y轴
String[] m = {"","", "", "", "", "", "", "",
"", "", ""};
y = ;
for (int i = ; i < ; i++)
{
g.DrawString(m[i].ToString(), font, Brushes.Blue, , y); //设置文字内容及输出位置
y = y + ;
} int[] Count1 = new int[];
int[] Count2 = new int[]; SqlConnection Con = new SqlConnection("Server=(Local);Database=committeeTraining;Uid=sa;Pwd=**");
Con.Open();
string cmdtxt2 = "SELECT * FROM ##Count where Company='" + this.ddlTaget.SelectedItem.Text.Trim() + "'";
SqlDataAdapter da = new SqlDataAdapter(cmdtxt2, Con);
DataSet ds = new DataSet();
da.Fill(ds); Count1[] = Convert.ToInt32(ds.Tables[].Rows[]["count1"].ToString());
Count1[] = Convert.ToInt32(ds.Tables[].Rows[]["count3"].ToString());
Count1[] = Convert.ToInt32(ds.Tables[].Rows[]["count5"].ToString());
Count1[] = Convert.ToInt32(ds.Tables[].Rows[]["count7"].ToString()); Count1[] = Count1[] + Count1[];
Count1[] = Count1[] + Count1[]; Count1[] = Convert.ToInt32(ds.Tables[].Rows[]["count9"].ToString()); Count2[] = Convert.ToInt32(ds.Tables[].Rows[]["count2"].ToString());
Count2[] = Convert.ToInt32(ds.Tables[].Rows[]["count4"].ToString());
Count2[] = Convert.ToInt32(ds.Tables[].Rows[]["count6"].ToString());
Count2[] = Convert.ToInt32(ds.Tables[].Rows[]["count8"].ToString()); Count2[] = Count2[] + Count2[];
Count2[] = Count2[] + Count2[]; Count2[] = Convert.ToInt32(ds.Tables[].Rows[]["count10"].ToString()); //绘制柱状图.
x = ;
Font font2 = new System.Drawing.Font("Arial", , FontStyle.Bold);
SolidBrush mybrush = new SolidBrush(Color.Red);
SolidBrush mybrush2 = new SolidBrush(Color.Green); //第一期
g.FillRectangle(mybrush, x, - Count1[], , Count1[]);
g.DrawString(Count1[].ToString(), font2, Brushes.Red, x, - Count1[] - ); x = x + ;
g.FillRectangle(mybrush2, x, - Count2[], , Count2[]);
g.DrawString(Count2[].ToString(), font2, Brushes.Green, x, - Count2[] - ); //第二期
x = x + ;
g.FillRectangle(mybrush, x, - Count1[], , Count1[]);
g.DrawString(Count1[].ToString(), font2, Brushes.Red, x, - Count1[] - ); x = x + ;
g.FillRectangle(mybrush2, x, - Count2[], , Count2[]);
g.DrawString(Count2[].ToString(), font2, Brushes.Green, x, - Count2[] - ); //第三期
x = x + ;
g.FillRectangle(mybrush, x, - Count1[], , Count1[]);
g.DrawString(Count1[].ToString(), font2, Brushes.Red, x, - Count1[] - ); x = x + ;
g.FillRectangle(mybrush2, x, - Count2[], , Count2[]);
g.DrawString(Count2[].ToString(), font2, Brushes.Green, x, - Count2[] - ); //第四期
x = x + ;
g.FillRectangle(mybrush, x, - Count1[], , Count1[]);
g.DrawString(Count1[].ToString(), font2, Brushes.Red, x, - Count1[] - ); x = x + ;
g.FillRectangle(mybrush2, x, - Count2[], , Count2[]);
g.DrawString(Count2[].ToString(), font2, Brushes.Green, x, - Count2[] - ); //上半年
x = x + ;
g.FillRectangle(mybrush, x, - Count1[], , Count1[]);
g.DrawString(Count1[].ToString(), font2, Brushes.Red, x, - Count1[] - ); x = x + ;
g.FillRectangle(mybrush2, x, - Count2[], , Count2[]);
g.DrawString(Count2[].ToString(), font2, Brushes.Green, x, - Count2[] - ); //下半年
x = x + ;
g.FillRectangle(mybrush, x, - Count1[], , Count1[]);
g.DrawString(Count1[].ToString(), font2, Brushes.Red, x, - Count1[] - ); x = x + ;
g.FillRectangle(mybrush2, x, - Count2[], , Count2[]);
g.DrawString(Count2[].ToString(), font2, Brushes.Green, x, - Count2[] - ); //全年
x = x + ;
g.FillRectangle(mybrush, x, - Count1[], , Count1[]);
g.DrawString(Count1[].ToString(), font2, Brushes.Red, x, - Count1[] - ); x = x + ;
g.FillRectangle(mybrush2, x, - Count2[], , Count2[]);
g.DrawString(Count2[].ToString(), font2, Brushes.Green, x, - Count2[] - ); //绘制标识
Font font3 = new System.Drawing.Font("Arial", , FontStyle.Regular);
g.DrawRectangle(new Pen(Brushes.Blue), , , , ); //绘制范围框
g.FillRectangle(Brushes.Red, , , , ); //绘制小矩形
g.DrawString("报名人数", font3, Brushes.Red, , ); g.FillRectangle(Brushes.Green, , , , );
g.DrawString("通过人数", font3, Brushes.Green, , ); System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
Response.ClearContent();
Response.ContentType = "image/Jpeg";
Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
}
二. 折线统计图的绘制
效果:
折线图的完整代码:
private void CreateImage()
{
int height = , width = ;
Bitmap image = new Bitmap(width, height);
Graphics g = Graphics.FromImage(image); try
{
//清空图片背景色
g.Clear(Color.White); Font font = new System.Drawing.Font("Arial", , FontStyle.Regular);
Font font1 = new System.Drawing.Font("宋体", , FontStyle.Regular);
Font font2 = new System.Drawing.Font("Arial", , FontStyle.Regular);
LinearGradientBrush brush = new LinearGradientBrush(
new Rectangle(, , image.Width, image.Height), Color.Blue, Color.Blue, 1.2f, true);
g.FillRectangle(Brushes.AliceBlue, , , width, height);
Brush brush1 = new SolidBrush(Color.Blue);
Brush brush2 = new SolidBrush(Color.SaddleBrown); g.DrawString(this.ddlTaget.SelectedItem.Text + " " + this.ddlYear.SelectedItem.Text +
" 成绩统计折线图", font1, brush1, new PointF(, ));
//画图片的边框线
g.DrawRectangle(new Pen(Color.Blue), , , image.Width - , image.Height - ); Pen mypen = new Pen(brush, );
Pen mypen2 = new Pen(Color.Red, );
//绘制线条
//绘制纵向线条
int x = ;
for (int i = ; i < ; i++)
{
g.DrawLine(mypen, x, , x, );
x = x + ;
}
Pen mypen1 = new Pen(Color.Blue, );
x = ;
g.DrawLine(mypen1, x, , x, ); //绘制横向线条
int y = ;
for (int i = ; i < ; i++)
{
g.DrawLine(mypen, , y, , y);
y = y + ;
}
// y = 106;
g.DrawLine(mypen1, , y - , , y - ); //x轴
String[] n = { "第一期", "第二期", "第三期", "第四期", "上半年", "下半年", "全年统计" };
x = ;
for (int i = ; i < ; i++)
{
g.DrawString(n[i].ToString(), font, Brushes.Red, x, ); //设置文字内容及输出位置
x = x + ;
} //y轴
String[] m = { "220人", " 200人", " 175人", "150人", " 125人", " 100人", " 75人", " 50人",
" 25人"};
y = ;
for (int i = ; i < ; i++)
{
g.DrawString(m[i].ToString(), font, Brushes.Red, , y); //设置文字内容及输出位置
y = y + ;
} int[] Count1 = new int[];
int[] Count2 = new int[]; SqlConnection Con = new SqlConnection("Server=(Local);Database=committeeTraining;Uid=sa;Pwd=eesoft");
Con.Open();
string cmdtxt2 = "SELECT * FROM ##Count where Company='" + this.ddlTaget.SelectedItem.Text.Trim() + "'";
SqlDataAdapter da = new SqlDataAdapter(cmdtxt2, Con);
DataSet ds = new DataSet();
da.Fill(ds); //报名人数
Count1[] = Convert.ToInt32(ds.Tables[].Rows[]["count1"].ToString());
Count1[] = Convert.ToInt32(ds.Tables[].Rows[]["count3"].ToString());
Count1[] = Convert.ToInt32(ds.Tables[].Rows[]["count5"].ToString());
Count1[] = Convert.ToInt32(ds.Tables[].Rows[]["count7"].ToString()); Count1[] = Convert.ToInt32(ds.Tables[].Rows[]["count9"].ToString()); //全年 Count1[] = Count1[] + Count1[];
Count1[] = Count1[] + Count1[]; Count2[] = Convert.ToInt32(ds.Tables[].Rows[]["count2"].ToString());
Count2[] = Convert.ToInt32(ds.Tables[].Rows[]["count4"].ToString());
Count2[] = Convert.ToInt32(ds.Tables[].Rows[]["count6"].ToString());
Count2[] = Convert.ToInt32(ds.Tables[].Rows[]["count8"].ToString()); Count2[] = Convert.ToInt32(ds.Tables[].Rows[]["count10"].ToString()); //全年 Count2[] = Count2[] + Count2[];
Count2[] = Count2[] + Count2[]; //显示折线效果
Font font3 = new System.Drawing.Font("Arial", , FontStyle.Bold);
SolidBrush mybrush = new SolidBrush(Color.Red);
Point[] points1 = new Point[];
points1[].X = ; points1[].Y = - Count1[]; //从106纵坐标开始, 到(0, 0)坐标时
points1[].X = ; points1[].Y = - Count1[];
points1[].X = ; points1[].Y = - Count1[];
points1[].X = ; points1[].Y = - Count1[]; points1[].X = ; points1[].Y = - Count1[];
points1[].X = ; points1[].Y = - Count1[]; points1[].X = ; points1[].Y = - Count1[];
g.DrawLines(mypen2, points1); //绘制折线 //绘制数字
g.DrawString(Count1[].ToString(), font3, Brushes.Red, , points1[].Y - );
g.DrawString(Count1[].ToString(), font3, Brushes.Red, , points1[].Y - );
g.DrawString(Count1[].ToString(), font3, Brushes.Red, , points1[].Y - );
g.DrawString(Count1[].ToString(), font3, Brushes.Red, , points1[].Y - ); g.DrawString(Count1[].ToString(), font3, Brushes.Red, , points1[].Y - );
g.DrawString(Count1[].ToString(), font3, Brushes.Red, , points1[].Y - ); g.DrawString(Count1[].ToString(), font3, Brushes.Red, , points1[].Y - ); Pen mypen3 = new Pen(Color.Green, );
Point[] points2 = new Point[];
points2[].X = ; points2[].Y = - Count2[];
points2[].X = ; points2[].Y = - Count2[];
points2[].X = ; points2[].Y = - Count2[];
points2[].X = ; points2[].Y = - Count2[]; points2[].X = ; points2[].Y = - Count2[];
points2[].X = ; points2[].Y = - Count2[]; points2[].X = ; points2[].Y = - Count2[];
g.DrawLines(mypen3, points2); //绘制折线 //绘制通过人数
g.DrawString(Count2[].ToString(), font3, Brushes.Green, , points2[].Y - );
g.DrawString(Count2[].ToString(), font3, Brushes.Green, , points2[].Y - );
g.DrawString(Count2[].ToString(), font3, Brushes.Green, , points2[].Y - );
g.DrawString(Count2[].ToString(), font3, Brushes.Green, , points2[].Y - ); g.DrawString(Count2[].ToString(), font3, Brushes.Green, , points2[].Y - );
g.DrawString(Count2[].ToString(), font3, Brushes.Green, , points2[].Y - ); g.DrawString(Count2[].ToString(), font3, Brushes.Green, , points2[].Y - ); //绘制标识
g.DrawRectangle(new Pen(Brushes.Red), , , , ); //绘制范围框
g.FillRectangle(Brushes.Red, , , , ); //绘制小矩形
g.DrawString("报名人数", font2, Brushes.Red, , ); g.FillRectangle(Brushes.Green, , , , );
g.DrawString("通过人数", font2, Brushes.Green, , ); System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
Response.ClearContent();
Response.ContentType = "image/Jpeg";
Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
}
三. 扇形统计图的绘制
效果图:
扇形图完整代码:
private void CreateImage()
{
//把连接字串指定为一个常量
SqlConnection Con = new SqlConnection("Server=(Local);
Database=committeeTraining;Uid=sa;Pwd=**");
Con.Open();
string cmdtxt = selectString; // "select * from ##Count"; //
//SqlCommand Com = new SqlCommand(cmdtxt, Con);
DataSet ds = new DataSet();
SqlDataAdapter Da = new SqlDataAdapter(cmdtxt, Con);
Da.Fill(ds);
Con.Close();
float Total = 0.0f, Tmp; //转换成单精度。也可写成Convert.ToInt32
Total = Convert.ToSingle(ds.Tables[].Rows[][this.count[]]); // Total=Convert.ToSingle(ds.Tables[0].Rows[0][this.count[0]]);
//设置字体,fonttitle为主标题的字体
Font fontlegend = new Font("verdana", );
Font fonttitle = new Font("verdana", , FontStyle.Bold); //背景宽
int width = ;
int bufferspace = ;
int legendheight = fontlegend.Height * + bufferspace; //高度
int titleheight = fonttitle.Height + bufferspace;
int height = width + legendheight + titleheight + bufferspace;//白色背景高
int pieheight = width;
Rectangle pierect = new Rectangle(, titleheight, width, pieheight); //加上各种随机色
ArrayList colors = new ArrayList();
Random rnd = new Random();
for (int i = ; i < ; i++)
colors.Add(new SolidBrush(Color.FromArgb(rnd.Next(), rnd.Next(), rnd.Next()))); //创建一个bitmap实例
Bitmap objbitmap = new Bitmap(width, height);
Graphics objgraphics = Graphics.FromImage(objbitmap); //画一个白色背景
objgraphics.FillRectangle(new SolidBrush(Color.White), , , width, height); //画一个亮黄色背景
objgraphics.FillRectangle(new SolidBrush(Color.Beige), pierect); //以下为画饼图(有几行row画几个)
float currentdegree = 0.0f; //画通过人数
objgraphics.FillPie((SolidBrush)colors[], pierect, currentdegree,
Convert.ToSingle(ds.Tables[].Rows[][this.count[]]) / Total * );
currentdegree += Convert.ToSingle(ds.Tables[].Rows[][this.count[]]) / Total * ; //未通过人数饼状图
objgraphics.FillPie((SolidBrush)colors[], pierect, currentdegree,
((Convert.ToSingle(ds.Tables[].Rows[][this.count[]]))-(Convert.ToSingle(ds.Tables[].Rows[][this.count[]]))) / Total * );
currentdegree += ((Convert.ToSingle(ds.Tables[].Rows[][this.count[]])) -
(Convert.ToSingle(ds.Tables[].Rows[][this.count[]]))) / Total * ; //以下为生成主标题
SolidBrush blackbrush = new SolidBrush(Color.Black);
SolidBrush bluebrush = new SolidBrush(Color.Blue);
string title = " 机关单位成绩统计饼状图: "
+ "\n \n\n";
StringFormat stringFormat = new StringFormat();
stringFormat.Alignment = StringAlignment.Center;
stringFormat.LineAlignment = StringAlignment.Center; objgraphics.DrawString(title, fonttitle, blackbrush,
new Rectangle(, , width, titleheight), stringFormat); //列出各字段与得数目
objgraphics.DrawRectangle(new Pen(Color.Red, ), , height + - legendheight, width, legendheight + ); objgraphics.DrawString("----------------统计信息------------------",
fontlegend, bluebrush, , height - legendheight + fontlegend.Height * + );
objgraphics.DrawString("统计单位: " + this.ddlTaget.SelectedItem.Text,
fontlegend, blackbrush, , height - legendheight + fontlegend.Height * + );
objgraphics.DrawString("统计年份: " + this.ddlYear.SelectedItem.Text,
fontlegend, blackbrush, , height - legendheight + fontlegend.Height * + );
objgraphics.DrawString("统计期数: " + this.ddlSpan.SelectedItem.Text,
fontlegend, blackbrush, , height - legendheight + fontlegend.Height * + ); objgraphics.FillRectangle((SolidBrush)colors[], ,height - legendheight + fontlegend.Height * + , , );
objgraphics.DrawString("报名总人数: " + Convert.ToString(Convert.ToSingle(ds.Tables[].Rows[][this.count[]])),
fontlegend, blackbrush, , height - legendheight + fontlegend.Height * + );
objgraphics.FillRectangle((SolidBrush)colors[], , height - legendheight + fontlegend.Height * + , , );
objgraphics.DrawString("通过总人数: " + Convert.ToString(Convert.ToSingle(ds.Tables[].Rows[][this.count[]])),
fontlegend, blackbrush, , height - legendheight + fontlegend.Height * + );
objgraphics.DrawString("未通过人数: " + ((Convert.ToSingle(ds.Tables[].Rows[][this.count[]])) -
(Convert.ToSingle(ds.Tables[].Rows[][this.count[]]))), fontlegend, blackbrush, , height - legendheight + fontlegend.Height * + ); objgraphics.DrawString("通过率: " + Convert.ToString((Convert.ToSingle(ds.Tables[].Rows[][this.count[]]) /
Convert.ToSingle(ds.Tables[].Rows[][this.count[]])) * )+ " %", fontlegend,
blackbrush, , height - legendheight + fontlegend.Height * + ); Response.ContentType = "image/Jpeg";
objbitmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
objgraphics.Dispose();
objbitmap.Dispose(); }
这里的统计图直接输出到网页, 如果大家需要制作 winForm 上需要显示的统计图。可参考我之前写的:
C#制作艺术字
C#完成超酷的图像效果 (附demo)
出处:http://www.cnblogs.com/ziyiFly/archive/2008/09/24/1297841.html
C# 绘制统计图(柱状图, 折线图, 扇形图)的更多相关文章
- C# 绘制统计图(柱状图, 折线图, 扇形图)【转载】
统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有Flash制作的统计图形, 有水晶报表生成统计图形, 有专门制图软件制作, 也有编程语言自己制作的:这里我们用 ...
- Asp.net 用 Graphics 统计图(柱状图, 折线图, 扇形图)
统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有Flash制作的统计图形, 有水晶报表生成统计图形, 有专门制图软件制作, 也有编程语言自己制作的:这里我们用 ...
- 06. Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图
1.基本图表绘制 plt.plot() 图表类别:线形图.柱状图.密度图,以横纵坐标两个维度为主同时可延展出多种其他图表样式 plt.plot(kind='line', ax=None, figsiz ...
- Qt数据可视化(散点图、折线图、柱状图、盒须图、饼状图、雷达图)开发实例
目录 散点图 折线图 柱状图 水平柱状图 水平堆叠图 水平百分比柱状图 盒须图 饼状图 雷达图 Qt散点图.折线图.柱状图.盒须图.饼状图.雷达图开发实例. 在开发过程中我们会使用多各种各样的图 ...
- 前端数据统计用做Bootstrap的一些柱状图、饼状图和折线图案例
Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷. Bootstrap ...
- WPF、Silverlight项目中使用柱状图、饼状图、折线图
在开发的过程中,可能会遇到柱状图.饼状图.折线图来更好的显示数据,最近整理了一下,遂放出来望需要的朋友可以参考.本文仅仅是简单显示,如需复杂显示效果请参考官网代码示例.----本文代码使用WPF,Si ...
- High-speed Charting Control--MFC绘制图表(折线图、饼图、柱形图)控件
原文地址:https://www.codeproject.com/articles/14075/high-speed-charting-control 本文翻译在CodeProject上的介绍(主要还 ...
- 数据输入——生成你需要的echart图(堆积柱状图、扇形图、嵌套环形图)
最近论文需要一些比较直观的图表, 发现echart做出来的图还是比较美观的,这里介绍如何修改数据生成你需要的echart图. 1.堆积柱状图: http://echarts.baidu.com/exa ...
- Chart图表整合——面积对比图、扇形图、柱状图
一. chart图表demo网址 网址:http://antv.alipay.com/zh-cn/f2/3.x/demo/index.html 二. 本文主要对面积对比图,扇形图,柱状图三大常见图进行 ...
随机推荐
- SmartWeatherAPI_Lite_WebAPI C# 获取key加密
中国气象局面向网络媒体.手机厂商.第三方气象服务机构等用户,通过 web 方式提供数据气象服务的官方载体. 在一周前已经申请到appid,但是苦于没有C#版的key 的算法,一直验证不通过,经过几天查 ...
- WORD中如何让前两页不显示页码
WORD中如何让前两页不显示页码 上稿人:ojn 点击率: 15191 我们有时在用word编辑文档时,会遇上第一.二页无需显示页码,第三页才是正文的第一页时,该如何正确插入页码呢? 以wor ...
- tcpdump命令
tcpdump 抓包 http://blog.sina.com.cn/s/blog_6335d36b0101mrfz.html
- Java文件下载的几种方式
public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的 ...
- Delphi VclSkin使用教程
1. TSkinData TSkinData 主要用于美化你的程序, 只要把TSkinData控件放下去,它就能自动美化所有窗体. 属性 Active: 使用或取消对程序的美化. DisableT ...
- windows下ncl生成tiff图(案例)
一:安装软件和准备数据 1.需要安装Vapor(注意安装路径不要存在空格) 注:版本2.4.2及以后 2.安装NCL,方法见http://www.cnblogs.com/striver-zhu/p/4 ...
- B.xml
pre{ line-height:1; color:#1e1e1e; background-color:#f0f0f0; font-size:16px;}.sysFunc{color:#627cf6; ...
- 原创 | 《地狱边境》登顶50国iOS下载榜,恐怖游戏或是独立开发者突破口(转)
文/手游那点事 Jagger 与大厂强IP称霸的App Store畅销榜相比,付费榜一向是独立游戏的温床.高质量的独立游戏并不需要在推广营销中投入太多成本,依靠过硬的品质和口碑在付费榜中缓缓上升造就高 ...
- CSS3制作苹果风格键盘
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtMAAAEICAIAAAASh+8XAAAgAElEQVR4nOzdaXBU14E3/FPVBVUq5X
- JS代码的简单重构与优化
JS代码的简单重构与优化(适合新手) 原文 http://www.cnblogs.com/similar/p/5016424.html Demo . 1 //bad if (age > 20) ...