当前位置:首页 > 代码 > 正文

柱状图代码(Python绘制柱状图代码)

admin 发布:2022-12-19 10:08 167


今天给各位分享柱状图代码的知识,其中也会对Python绘制柱状图代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何用D3.js绘制柱状图

1、模拟数据

// 模拟100条0-100的随机数,作为柱状图的高度

var data = Array.apply(0, Array(100)).map(function() {

 return Math.random() * 100;

});

2、创建SVG容器

var margin = {top: 20, right: 20, bottom: 30, left: 50},

   width = document.body.clientWidth - margin.left - margin.right,

   height = 500 - margin.top - margin.bottom;

var chart = d3.select('body')

 .append('svg')

 .attr('width', width + margin.left + margin.right)

 .attr('height', height + margin.top + margin.bottom)

 .append('g')

 .attr('transform', 'translate(' + margin.left + ', ' + margin.top + ')');

chart就是最终建立的容器,下面就往容器里面放元素。

3、画柱状图

// 计算每根柱状物体的宽度

var barWidth = width / data.length;

// 用g作每根柱状物体的容器,意义可类比div

// 前一篇文章已经介绍过selectAll的意义,即生成占位符,等待填充svg图形

var bar = chart.selectAll('g')

 .data(data)

 .enter()

 .append('g')

 // 接收一个数据填充一个g元素

 // 同时为g设置位置

 .attr('transform', function(d, i) {

   return 'translate(' + i * barWidth + ', 0)';

 });

bar.append('rect')

 // 添加一个矩形

 .attr('y', function(d) {

   return height - d;

 })

 .attr('height', function(d) {

   return d;

 })

 .attr('width', barWidth - 1);

前文提到svg的元素定位都是基于整个svg容器左上角作为原点,但并不能使用position: absolute等方法定位,此处的g元素通过位移来定位x坐标,即transform: translate(x, 0)。

这里的bar可类比jQuery对象,是一个类数组对象,bar调用的方法都会对bar里面每个对象进行调用。代码中每一次调用都插入一个矩形,同时设置y坐标、高度和宽度,x坐标跟父容器(g)保持一致即可。这里需要注意y坐标往下为正,为了让所有矩形的下边处于同一高度,这里设置每个矩形的y坐标为容器高度减去矩形高度。为了用一像素区分开每个矩形,这里设置矩形宽度为父容器的宽度减1。

通过以上js代码再稍微设置一点css

rect {

 fill: #2177BB;

}

即可看到一张最简单的柱状图了。

4、添加坐标轴

var y = d3.scale.linear()

 .domain([0, d3.max(data)])

 .range([height, 0]);

var xAxis = d3.svg.axis()

 .scale(x)

 .orient('bottom')

 .ticks(1);

var yAxis = d3.svg.axis()

 .scale(y)

 .orient('left');

// 添加x坐标轴

chart.append('g')

 .attr('class', 'x axis')

 .attr('transform', 'translate(0,' + height + ')')

 .call(xAxis);

// 添加y坐标轴

chart.append('g')

 .attr('class', 'y axis')

 .call(yAxis);

完整的柱状图就是这样了

excel 中利用宏自动生成图表的代码(柱状图,饼图和折线图)

建议,你打开“宏-录制宏”,然后手工操作一次通过数据生成图表的过程,最后再按“停止录制”,然后按ALT+F11就能看到这个生成图表的宏代码了。

怎样用VBA代码画柱状图?望各位赐教,谢谢!

把你的数句拷贝到sheet1的A1到C5,程序如下。图的位置需要手动调整

Sub test()

Charts.Add

ActiveChart.ChartType = xlColumnClustered

ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B5"), PlotBy:= _

xlColumns

ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"

Charts.Add

ActiveChart.ChartType = xlColumnClustered

ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:A5,C1:C5"), _

PlotBy:=xlColumns

ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"

With ActiveChart

.HasTitle = True

.ChartTitle.Characters.Text = "CurrentWorkload"

.Axes(xlCategory, xlPrimary).HasTitle = False

.Axes(xlValue, xlPrimary).HasTitle = False

End With

End Sub

如何用c++的mfc绘制柱状图

用c++的mfc绘制柱状图的方法如下:

1:取GroupBox的区域,并保存四个值  左,上,右,下

//获取屏幕坐标

((CWnd*)GetDlgItem(IDC_STATIC_CHART))-GetWindowRect(rect);

//计算x轴y轴基本单位

int dx = (rect.right-rect.left)/50;

int dy = (rect.bottom-rect.top)/80;

//转换成对话框坐标

ScreenToClient(rect);

//保存4个值

int L = rect.left,R = rect.right,T = rect.top,B = rect.bottom;

GroupBox的区域我忘记标出来了,就在上面图中柱状图那一块

2:获取DC,这一步没什么好说的

CPaintDC dc(this);

3:画X轴,Y轴

//X

dc.MoveTo(L+dx*2,B-dy*3);

dc.LineTo(L+dx*49,B-dy*3);

//最后的那个箭头

dc.MoveTo(L+dx*49,B-dy*3);

dc.LineTo(L+dx*48,B-dy*2);

dc.MoveTo(L+dx*49,B-dy*3);

dc.LineTo(L+dx*48,B-dy*4);

Y轴同理,但是考虑到dx,dy的值不一样,当画Y轴的箭头时,需要交换dx和dy的位置

//纵坐标线 dc.MoveTo(L+dx*2,B-dy*3);

dc.LineTo(L+dx*2,B-dy*77);

dc.MoveTo(L+dx*2,B-dy*77);

//交换了dx,dy的位置

dc.LineTo(L+dx*2-dy,B-dy*77+dx);

dc.MoveTo(L+dx*2,B-dy*77);

//交换了dx,dy的位置

dc.LineTo(L+dx*2+dy,B-dy*77+dx);

绘制完结果如图:

4:画柱状图,这里主要根据前面计算dx,dy时,划分的数量来计算每个柱的宽度,以及柱间的间隔

//第一个柱状体的左下坐标

int x = L+dx*3;

int y = B-dy*3;

for(int i=0;i

CRect rc;

rc.left=x+i*dx*9;

rc.right=rc.left+dx*7;

rc.bottom=y;

rc.top=rc.bottom-dy*answer[index][i+1];

//这里把柱状图的信息输出,这里输出的是一个数字,因为要转换成字符串,比较麻烦

//处理了一下,肯定有简洁的处理方式,但是我也懒得去想了,我很懒的

dc.SetBkMode(TRANSPARENT);//设置透明背景,要不然输出文字之后会有一块白,难看

char num[10];

sprintf(num,"%d",answer[index][i+1]);

CString strnum(num);

dc.TextOutW((rc.left+rc.right)/2-dx,rc.bottom-dy*(answer[index][i+1]+3),strnum);

//画刷是我之前就定义好的,直接拿来用

dc.FillRect(rc,brushs+i);

}

5:添加控件消息响应函数

维护一个全局变量index来保存当前题号,创建重绘函数updateInfo

void CEnglishReportDlg::updateInfo(){

int count = choose_c[index];

int i;

//选项存在,赋值,L是宏命令与TEXT()相同功能

for(i=0;i

m_strLable[i] = choose[index][i];

}

//无此选项,置空

for(;i5;i++)

m_strLable[i] = L"";

m_strTopic = topics[index];

//获取GroupBox区域,并转换成对话框坐标

CRect rect;

((CWnd*)GetDlgItem(IDC_STATIC_CHART))-GetWindowRect(rect);

ScreenToClient(rect);

//重绘此区域

InvalidateRect(rect);

//将控件变量更新到前台

UpdateData(FALSE);

}

函数1:响应ListBox的SelChange事件

void CEnglishReportDlg::OnLbnSelchangeListTopic()

{

// TODO: 在此添加控件通知处理程序代码

index = m_listtopic.GetCurSel();

updateInfo();

}

函数2:上一页按钮的Click事件

void CEnglishReportDlg::OnBnClickedButtonPre()

{

// TODO: 在此添加控件通知处理程序代码

if(index0)

index--;

updateInfo();

m_listtopic.SetCurSel(index);

}

函数3:下一页按钮的Clicl事件

void CEnglishReportDlg::OnBnClickedButtonNext()

{

// TODO: 在此添加控件通知处理程序代码

if(index19)

index++;

updateInfo();

m_listtopic.SetCurSel(index);

}

至此基本的功能都已经实现了,还差最后一步:

6:初始化对话框

for(int i=0;i20;i++){

m_listtopic.AddString(topics[i]);

}

//index初始化为0,直接刷新

updateInfo();

m_listtopic.SetCurSel(index);

运行结果如下:

求ASP.NET中用C#或者别的简单的代码,能够生成柱状图,简单一点的……

用MSChart吧,非常简单,有UI设计界面的,位置,颜色随你设置了。给你个例子,我的一个折线图(this.Model 里面是数据的list):

%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %

!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

""

html xmlns=""

head id="Head1" runat="server"

title/title

script runat="server"

protected void Page_Load(object sender, EventArgs e)

{

IEnumerable data = this.Model as IEnumerable;

this.Chart_AssetsByYear.Series["Default"].Points.DataBind( data, "Year", "Total", "" );

this.Chart_AssetsByYear.Series["Default"]["PieLabelStyle"] = "inside";

this.Chart_AssetsByYear.Series["Default"]["PieDrawingStyle"] = "Concave";

this.Chart_AssetsByYear.Legends[0].Enabled = true;

}

/script

/head

body style="margin: 0px; padding: 0px;"

asp:Chart ID="Chart_AssetsByYear" runat="server" BackColor="WhiteSmoke" Height="500"

Width="865" BorderDashStyle="Solid" BackSecondaryColor="White" BackGradientStyle="TopBottom"

BorderWidth="1" BorderColor="26, 59, 105"

Legends

asp:Legend BackColor="Transparent" Docking="Right" Font="Trebuchet MS, 8.25pt, style=Bold"

IsTextAutoFit="False" LegendStyle="Column" Enabled="False" Title="图例" /

/Legends

Titles

asp:Title ShadowColor="32, 0, 0, 0" Font="Microsoft YaHei, 14.25pt, style=Bold"

ShadowOffset="3" Text="年度增长趋势" Name="Title" ForeColor="26, 59, 105" /

/Titles

Series

asp:Series Name="Default" IsValueShownAsLabel="true" ToolTip="时间: #VALX\n增长: #VALY{C}"

LabelFormat="C" ShadowOffset="2" BorderColor="#3764A0" PostBackValue="#INDEX"

LegendPostBackValue="#INDEX" Color="220, 65, 140, 240" LegendText="年度增长金额(RMB)"

CustomProperties="DrawingStyle=Emboss, PieDrawingStyle=Concave, EmptyPointValue=Zero, DrawSideBySide=True" /

/Series

ChartAreas

asp:ChartArea Name="ChartArea_AssetsByYear" BorderColor="64, 64, 64, 64" BackSecondaryColor="Transparent"

BackColor="Transparent" ShadowColor="Transparent" BorderWidth="0"

AxisY LineColor="64, 64, 64, 64"

LabelStyle Font="Trebuchet MS, 8.25pt, style=Bold" /

MajorGrid LineColor="64, 64, 64, 64" /

/AxisY

AxisX LineColor="64, 64, 64, 64"

LabelStyle Font="Trebuchet MS, 8.25pt, style=Bold" /

MajorGrid LineColor="64, 64, 64, 64" /

/AxisX

/asp:ChartArea

/ChartAreas

/asp:Chart

/body

/html

如何在C#的WinForm中制作柱状图

(1)设计时,在Form1上布置一个Chart控件,2个RadioButton

(2)窗体代码Form1.cs如下

using System;

using System.Collections.Generic;

using System.Windows.Forms;

using System.Drawing;

using System.Windows.Forms.DataVisualization.Charting;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

chart1.Series[0].Points.AddXY(1, 10);

chart1.Series[0].Points.AddXY(2, 80);

chart1.Series[0].Points.AddXY(3, 55);

chart1.Series[0].Points.AddXY(4, 70);

chart1.Series[0].Points.AddXY(5, 92);

}

private void radioButton1_CheckedChanged(

object sender,

EventArgs e)

{

if (radioButton1.Checked)

{

chart1.Series[0].ChartType = SeriesChartType.Column;

}

else

{

chart1.Series[0].ChartType = SeriesChartType.Pie;

}

}

}

}

柱状图代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Python绘制柱状图代码、柱状图代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/6443.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载