想要解决的问题是:
如何全部显示出来?
问题:
在Y轴,每一条柱子下边的字符串都应该显示出来。
共13条柱子,也就是说共有13个字符串,然而现在只显示6个字符串。
原先13个字符串,每个字符串都是很长的,我以为是因为字符串太长导致其它字符串被挤下去,然后我就改成0,1,2,3,4,5,6,7...这些短的字符串代替测试,结果还是一样。
而我发现它是有规律的隔列显示,我以为是某个属性造成的,可是我找不到是哪个。
如图1:
Result.aspx前置代码:
1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Result.aspx.cs" Inherits="Result" %> 2 3 <%@ Register Assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 4 Namespace="System.Web.UI.DataVisualization.Charting" TagPrefix="asp" %> 5 6 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 7 8 <html xmlns="http://www.w3.org/1999/xhtml"> 9 <head runat="server"> 10 <title></title> 11 </head> 12 <body> 13 <form id="form1" runat="server"> 14 <div> 15 <center> 16 <asp:Chart ID="Chart1" runat="server" Height="800px" Width="1920px" ImageLocation="~/TempImages/ChartPic_#SEQ(300,3)" 17 BorderDashStyle="Solid" BackSecondaryColor="White" BackGradientStyle="VerticalCenter" 18 BorderWidth="2px" BackColor="211, 223, 240" BorderColor="#1A3B69"> 19 <Legends> 20 <asp:Legend IsTextAutoFit="False" Name="Default" BackColor="Transparent" TitleAlignment="Center" 21 Font="Trebuchet MS, 12.5pt, style=Bold"> 22 </asp:Legend> 23 </Legends> 24 <Titles> 25 <asp:Title Text="统计结果" TextStyle="Shadow" Font="Trebuchet MS, 16pt, style=Bold" /> 26 </Titles> 27 <BorderSkin SkinStyle="Emboss"></BorderSkin> 28 <ChartAreas> 29 <asp:ChartArea Name="ChartArea1" BorderColor="64, 64, 64, 64" BorderDashStyle="Solid" 30 BackSecondaryColor="White" BackColor="64, 165, 191, 228" ShadowColor="Transparent" 31 BackGradientStyle="TopBottom"> 32 <Area3DStyle Rotation="10" Perspective="10" Inclination="15" IsRightAngleAxes="False" 33 WallWidth="0" IsClustered="False"></Area3DStyle> 34 <AxisY LineColor="64, 64, 64, 64"> 35 <LabelStyle Font="Trebuchet MS, 12.5pt, style=Bold" /> 36 <MajorGrid LineColor="64, 64, 64, 64" /> 37 </AxisY> 38 </asp:ChartArea> 39 </ChartAreas> 40 </asp:Chart> 41 </center> 42 </div> 43 </form> 44 </body> 45 </html>
Result.aspx.cs后置代码:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using System.Xml; 8 using System.Web.UI.DataVisualization.Charting; 9 10 public partial class Result : System.Web.UI.Page 11 { 12 protected void Page_Load(object sender, EventArgs e) 13 { 14 if (!IsPostBack) 15 { 16 Loading(); 17 } 18 } 19 20 /// <summary> 21 /// 加载图表 22 /// </summary> 23 private void Loading() 24 { 25 //取消报表网格线 26 //for (int x = 0; x < Chart1.ChartAreas.Count; x++) 27 //{ 28 // for (int y = 0; y < Chart1.ChartAreas[x].Axes.Length; y++) 29 // { 30 // Chart1.ChartAreas[x].Axes[y].MajorGrid.Enabled = false; 31 // } 32 //} 33 34 //初始化颜色键值表 35 Dictionary<string, System.Drawing.Color> colorHash = new Dictionary<string, System.Drawing.Color>(); 36 colorHash.Add("宝安区", System.Drawing.Color.FromArgb(245,168,154)); 37 colorHash.Add("福田区", System.Drawing.Color.FromArgb(241,175,0)); 38 colorHash.Add("罗湖区", System.Drawing.Color.FromArgb(91,189,43)); 39 colorHash.Add("龙岗区", System.Drawing.Color.FromArgb(0,178,191)); 40 colorHash.Add("龙华新区", System.Drawing.Color.FromArgb(99,91,162)); 41 colorHash.Add("南山区", System.Drawing.Color.FromArgb(162,0,124)); 42 colorHash.Add("盐田区", System.Drawing.Color.FromArgb(85, 85, 85)); 43 44 //添加地区颜色对照表 45 foreach (string item in colorHash.Keys) 46 { 47 Series ssss = new Series(item); 48 ssss.Color = colorHash[item]; 49 ssss.BorderWidth = 7; 50 ssss.ShadowOffset = 2; 51 Chart1.Series.Add(ssss); 52 break; 53 } 54 55 //设置图表类型 56 Chart1.Series["宝安区"].Font = new System.Drawing.Font("Trebuchet MS", 24); 57 //Chart1.Series["宝安区"].ChartType = SeriesChartType.Column; 58 //Chart1.Series["宝安区"].PostBackValue = "#AXISLABEL" + ";#INDEX"; 59 60 //查询投票结果 61 XmlNodeList xnList = this.GetXmlNodeList(@"/datas/Results/result"); 62 List<Results> rList = this.FindData(xnList); 63 var query = from r in rList 64 group r by r.OprateId into g 65 select new 66 { 67 g.Key, 68 Count = g.Count() 69 }; 70 71 //查询所有地区 72 XmlNodeList dataList = this.GetXmlNodeList(@"/datas/data"); 73 //初始化地区键值表 74 Dictionary<int, XmlNode> dataHash = new Dictionary<int, XmlNode>(); 75 //封装地区键值表 76 foreach (XmlNode item in dataList) 77 { 78 dataHash.Add(Convert.ToInt32(item.Attributes["id"].Value),item); 79 } 80 //移除未被选中的地区 81 foreach (var q in query) 82 { 83 dataHash.Remove(q.Key); 84 } 85 86 //初始化所有投票结果集合 87 List<PollResults> prList = new List<PollResults>(); 88 //封装未投票结果集合 89 foreach (XmlNode item in dataHash.Values) 90 { 91 PollResults pr= new PollResults(); 92 pr.Count = 0; 93 pr.Name = item.Attributes["name"].Value; 94 pr.Type = item.Attributes["type"].Value; 95 pr.OprateId = Convert.ToInt32(item.Attributes["id"].Value); 96 prList.Add(pr); 97 } 98 //封装已投票结果集合 99 foreach (var q in query) 100 { 101 PollResults pr = new PollResults(); 102 pr.Count = q.Count; 103 XmlNode data = this.GetXmlNode(string.Format(@"/datas/data[@id={0}]", q.Key)); 104 pr.Name = data.Attributes["name"].Value; 105 pr.Type = data.Attributes["type"].Value; 106 pr.OprateId = q.Key; 107 prList.Add(pr); 108 } 109 110 int i = 0; 111 foreach (PollResults item in prList) 112 { 113 //Y轴数据 114 Chart1.Series["宝安区"].Points.AddY(item.Count); 115 //X轴显示的名称 116 Chart1.Series["宝安区"].Points[i].AxisLabel = item.Name; 117 //Chart1.Series["宝安区"].Points[i].Font = new System.Drawing.Font("Trebuchet MS", 20); 118 //顶部显示的数字 119 Chart1.Series["宝安区"].Points[i].Label = item.Count.ToString(); 120 //鼠标放上去的提示内容 121 Chart1.Series["宝安区"].Points[i].ToolTip = item.Type; 122 //设置柱子头标签文本颜色 123 Chart1.Series["宝安区"].Points[i].LabelForeColor = colorHash[item.Type]; 124 //柱子颜色 125 Chart1.Series["宝安区"].Points[i].Color = colorHash[item.Type]; 126 if (item.Count > 0) 127 { 128 Chart1.Series["宝安区"].Points[i].MarkerStyle = MarkerStyle.Triangle;//显示三角形 129 Chart1.Series["宝安区"].Points[i].MarkerColor = colorHash[item.Type]; //三角形颜色 130 Chart1.Series["宝安区"].Points[i].MarkerSize = 80;//三角形大小 131 } 132 i++; 133 } 134 135 //按照升序的方式排列 136 //Chart1.Series["宝安区"].Sort(PointSortOrder.Ascending); 137 } 138 139 /// <summary> 140 /// 封装Results数据集 141 /// </summary> 142 /// <param name="xnList"></param> 143 /// <returns></returns> 144 private List<Results> FindData(XmlNodeList xnList) 145 { 146 List<Results> rList = new List<Results>(); 147 foreach (XmlNode item in xnList) 148 { 149 Results r = new Results(); 150 r.Id = Convert.ToInt32(item.Attributes["id"].Value); 151 r.IpAddress = item.Attributes["ip"].Value; 152 r.OprateId = Convert.ToInt32(item.Attributes["oprateId"].Value); 153 rList.Add(r); 154 } 155 return rList; 156 } 157 158 /// <summary> 159 /// 获取节点集 160 /// </summary> 161 /// <param name="XPath"></param> 162 /// <returns></returns> 163 private XmlNodeList GetXmlNodeList(string XPath) 164 { 165 XmlDocument xd = new XmlDocument(); 166 string path = Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["xmlPath"]); 167 xd.Load(path); 168 return xd.SelectNodes(XPath); 169 } 170 171 /// <summary> 172 /// 获取节点 173 /// </summary> 174 /// <param name="XPath"></param> 175 /// <returns></returns> 176 private XmlNode GetXmlNode(string XPath) 177 { 178 XmlDocument xd = new XmlDocument(); 179 string path = Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["xmlPath"]); 180 xd.Load(path); 181 return xd.SelectSingleNode(XPath); 182 } 183 }
App_Code文件夹内的实体类:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 6 [Serializable] 7 public class Class1 8 { 9 public int Id { get; set; } 10 public string Name { get; set; } 11 public string Type { get; set; } 12 public string Height { get; set; } 13 public string Url { get; set; } 14 public string Desc { get; set; } 15 } 16 17 [Serializable] 18 public class Results 19 { 20 public int Id { get; set; } 21 public int OprateId { get; set; } 22 public string IpAddress { get; set; } 23 } 24 25 [Serializable] 26 public struct PollResults 27 { 28 public int OprateId { get; set; } 29 public string Type { get; set; } 30 public string Name { get; set; } 31 public int Count { get; set; } 32 }
Web.config:
1 <?xml version="1.0"?> 2 <!-- 3 有关如何配置 ASP.NET 应用程序的详细信息,请访问 4 http://go.microsoft.com/fwlink/?LinkId=169433 5 --> 6 <configuration> 7 <system.webServer> 8 <validation validateIntegratedModeConfiguration="false" /> 9 <handlers> 10 <remove name="ChartImageHandler" /> 11 <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" 12 path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 13 </handlers> 14 </system.webServer> 15 <system.web> 16 <httpHandlers> 17 <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 18 validate="false" /> 19 </httpHandlers> 20 <pages> 21 <controls> 22 <add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting" 23 assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 24 </controls> 25 </pages> 26 <compilation debug="true" targetFramework="4.0" defaultLanguage="c#"> 27 <assemblies> 28 <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 29 </assemblies> 30 </compilation> 31 </system.web> 32 <appSettings> 33 <add key="xmlPath" value="~/App_Data/Data.xml" /> 34 <add key="ChartImageHandler" value="storage=file;timeout=20;dir=~/TempImages;" /> 35 </appSettings> 36 </configuration>
App_Data文件夹Data.xml:
1 <?xml version="1.0" encoding="utf-8"?> 2 <datas> 3 <data id="1" type="龙岗区" name="横岗的园山风景游览区" height="未知" url="http://baike.baidu.com/view/760511.htm" desc="园山风景区由深圳市天然投资发展有限公司投资开发,位于深圳市龙岗区横岗东南部的惠盐公路东侧。景区占地达10平方公里,以山峦起伏,沟谷弯延幽深,植被基本保留原自然生态,被誉为“都市的后花园”! 在这里,您可以尽情享受后花园的幽雅和恬静,全身心感受绿色原生态,与自然零距离接触。同时这里还配备了豪华幽静的别墅,功能齐全的会议场所,怡然自得的钓鱼湖,硕果诱人的果园,惊险刺激的卡丁车……这一切都会让您流连忘返,回味无穷。" /> 4 <data id="2" type="龙岗区" name="坪山的马峦山" height="590米" url="http://baike.baidu.com/view/760378.htm" desc="马峦山位于深圳市东部山区,有深圳最大的瀑布,谷内岩石因水流冲刷而形成各种形态,大小不等,且呈犬牙交错之壮,溪水清澈见底,山谷两旁植被浓郁,藤蔓横生,野花遍地,偶尔伴有的几声鸟叫虫鸣,会使此地更显静谧。此地穿越难度不高,但景色秀丽,是一个休闲游玩的好地方。马峦山将建成一个以远足登山、观海观瀑为特色,集休闲旅游、野外健身、自然生态教育为一体的市级郊野公园。" /> 5 <data id="3" type="龙岗区" name="大鹏的排牙山" height="707米" url="http://baike.baidu.com/view/760335.htm" desc="排牙山位于深圳市龙岗区大鹏镇,为大鹏半岛北岛的主要组成山脉,海拔707米(深圳第六高峰)。该山三面环海,山石嶙峋,景色极佳。由南面望去,酷似一排排错落不齐的牙齿,是否由此得名,不得而知。" /> 6 <data id="4" type="龙岗区" name="葵冲的大笔架山" height="717米" url="http://baike.baidu.com/view/28707.htm#9" desc="大笔架山起点位于深圳东部葵冲镇的坝光村,山势雄伟壮观,最高处海拔717米,属深圳第五高峰。大笔架山山路原始,风吹芦苇荡,人没青纱帐。沿途风清鸟鸣,风景秀美。从大笔架山山脚登顶,翻过连绵的山头(三杆笔、笔架山等),从火烧天下至山脚。这条线路是深圳最经典的陆地穿越线路——三水线的主要路段(占三水线1/2左右),全程约7小时,有一定难度,需要较好的耐力。" /> 7 <data id="5" type="龙岗区" name="南澳的七娘山" height="869米" url="http://baike.baidu.com/view/188575.htm" desc="http://baike.baidu.com/view/188575.htm" /> 8 <data id="6" type="宝安区" name="石岩的羊台山" height="587米" url="http://baike.baidu.com/view/760380.htm" desc="羊台山位于深圳市西北部 宝安区石岩境内,地处宝安区石岩街道、龙华街道与南山区的交会处。气势宏伟,风光秀丽,海拔高度587米,是深圳西部最高峰。抗日战争时期,当地人民和东江纵队上演了震惊中外的“大营救”,从沦陷的港九孤岛抢救出了茅盾、何香凝、邹韬奋等著名爱国人士。羊台山也因此被称作英雄山。2008年,“羊台叠翠”被评为深圳八景之一,成为中外游客和广大市民观光、旅游、休闲、健身的好去处。" /> 9 <data id="7" type="宝安区" name="福永的凤凰山" height="376米" url="http://baike.baidu.com/view/5708445.htm" desc="凤凰山被誉为宝安第一山,坐落在广东省深圳市宝安区福永镇凤凰村东面的山系,海拔376米,方圆1.2公里,素有“凤山福水福盈地”的美誉。凤凰奇拔峻秀,呈半月形展开,恰似镶嵌在西海之滨的一湾新月,高悬在南国昊天沃土上,西眺伶仃洋,南瞰深圳湾。峰峦连绵叠翠,树木四季葱茂;百鸟啼鸣,花果飘香;山泉浅唱,壑洞幽藏,奇石多姿,古庙生辉。水光山色,峭岩古洞,构成了一幅风光旖旎、雄伟壮观的山水画卷。凤凰山自然风景绮丽,人文景观丰富,在清朝被列为新安八景之一。" /> 10 <data id="8" type="宝安区" name="沙井的洪田火山郊野公园" height="未知" url="http://baike.baidu.com/view/7530402.htm" desc="洪田火山郊野公园位于凤凰山脉中段北侧,该公园处原为火山,属火山岩地貌。公园内森林茂密,奇石岩洞众多,溪流潺潺,步行路径四通八达,古迹众多。公园内慈云阁(又名慈云寺)始建于清康熙年间,距今已有300多年历史。公园系抗日战争时期东江纵队游击队七烈士喋血捐躯之地。人们为了纪念烈士们为民族解放的献身精神,将其遗骨就地安葬,建有“洪田七烈士墓”。2003年,为弘扬先烈革命传统,深化人文环境建设,有关部门规划建设了洪田火山郊野公园。其后,为纪念在中国人民抗日战争和解放战争时期英勇牺牲的30多名英烈,在园内建造“沙井革命烈士纪念碑”,作为对青少年进行革命历史和革命传统教育的基地。洪田火山郊野公园占地面积56万平方米,一期工程于2005年完成,并免费对外开放。" /> 11 <data id="9" type="罗湖区" name="翠竹的翠竹山" height="153.24米" url="http://baike.baidu.com/view/8623022.htm" desc="翠竹山位于深圳市翠竹公园内,地处深圳市罗湖区翠竹路1078号,北临太宁路,西、南分别与翠竹路、东门路接壤,东临水库新村等生活区。总面积45.13公顷。整个公园以山地丘陵为主,多山头,坡势较陡。最高峰位于公园南部,海拔153.24米。" /> 12 <data id="10" type="福田区" name="笋岗的笔架山公园" height="178米" url="http://baike.baidu.com/view/5428517.htm" desc="笔架山公园位于市中心北侧,毗邻福田中心区,面积146公顷,是一片有十余座小山峰的丘陵起伏地,其中三座主峰东西鼎立,形同笔架,因而得名,属山地公园。主峰海拔178米,与地王大厦遥遥相望,从峰顶既可俯瞰繁华的市容,又可远眺深圳湾,蛇口和香港的上水,元朗的美景。公园内植物资源丰富,植被覆盖率90%以上,植物种类超过400多种,野生动物资源也十分丰富。公园位于八百米绿化带北部,是绿化带景观的重要组成部分。园内地形富于变化,山高林多,鸟语花香,风景资源独佳,植物覆盖充分,动物种类繁多,其中蝴蝶,鸟类,昆虫,蛇等品种数量较丰富。" /> 13 <data id="11" type="南山区" name="南头的大南山" height="336米" url="http://baike.baidu.com/view/89542.htm#2" desc="位于深圳市西南的大南山,为南山一带山脉的主峰,上有古庙和清代的烽火台遗址。登山远眺,青松翠
柏,海天无垠。环视周围,赤湾炮台、天后古庙、少帝陵等文物古迹,青青世界等新建旅游景点尽收眼底,一览无遗。自古以来,南山一带就是风景名胜区,赤湾胜概为新安八景之首。今日大南山上下的旧貌新颜,更互相衬托出一幅融历史文化与现代文明于一体的壮丽图景。
 大南山伫立在深圳南头半岛上,周围是蛇口工业区,主峰高336米。山上树林茂密,景色宜人,登高望远,整个深圳湾畔景物尽收眼底:远可观深圳市中心区楼群、香港流浮山脉,元朗景色,近可俯视南山半岛、宝安新城。1994年,蛇口工业区在南山上修建了行人便道和凉亭。南山已经成为深圳西部的重要景点。" /> 14 <data id="12" type="南山区" name="西丽的塘朗山郊野公园" height="未知" url="http://baike.baidu.com/view/760468.htm" desc="塘朗山郊野公园位于深圳南山区的东北部。山的南面是平南铁路,北面为北环大道和龙珠大道,西端止于红花岭,东边绵延到福田区境内。北望西丽水库、长岭皮水库、羊台山、深圳野生动物园,南瞰深圳湾、华侨城。总面积约15000亩。塘朗山,以它幽静、深邃、雄伟的生态园林本色吸引着更多爱好登高眺远、投身大自然和热爱生活的人们。" /> 15 <data id="13" type="盐田区" name="梧桐山" height="973.7米" url="http://baike.baidu.com/view/28646.htm" desc="深圳梧桐山风景名胜区位于东经113 °17'~114 °18',北纬22 °23'~22 °43'的沿海地区,在深圳经济特区东部,西临深圳水库,东至盐田港,南北均临近特区边界。风景名胜区邻近繁华市区,面临南海大鹏湾,与香港新界山脉相连、溪水相通,具备了国内风景区名胜区中独特的地理位置。" /> 16 <Results> 17 <result id="1" ip="192.168.20.162" oprateId="2" /> 18 <result id="2" ip="192.168.20.162" oprateId="5" /> 19 <result id="3" ip="192.168.20.162" oprateId="7" /> 20 <result id="4" ip="192.168.20.162" oprateId="11" /> 21 <result id="5" ip="192.168.20.162" oprateId="13" /> 22 <result id="6" ip="192.168.20.162" oprateId="3" /> 23 <result id="7" ip="192.168.20.57" oprateId="2" /> 24 <result id="8" ip="192.168.20.57" oprateId="3" /> 25 <result id="9" ip="192.168.20.57" oprateId="5" /> 26 <result id="10" ip="192.168.20.57" oprateId="6" /> 27 <result id="11" ip="192.168.20.107" oprateId="1" /> 28 <result id="12" ip="192.168.20.107" oprateId="3" /> 29 <result id="13" ip="192.168.20.16" oprateId="1" /> 30 <result id="14" ip="192.168.20.16" oprateId="2" /> 31 <result id="15" ip="192.168.20.50" oprateId="1" /> 32 <result id="16" ip="192.168.20.50" oprateId="2" /> 33 <result id="17" ip="192.168.20.50" oprateId="5" /> 34 <result id="18" ip="192.168.20.173" oprateId="1" /> 35 <result id="19" ip="192.168.20.173" oprateId="2" /> 36 <result id="20" ip="192.168.20.173" oprateId="6" /> 37 </Results> 38 </datas>
如果你嫌麻烦,也可以直接下载我在百度网盘提供的整个解决方案压缩包:http://pan.baidu.com/share/link?shareid=164464&uk=3104341340
以便帮助我快速解决问题,谢谢。
解决了,谢谢大家!
刚刚翻我自己的Word找到的。
加多一句代码就搞定了
Chart1.ChartAreas[0].AxisX.Interval = 1;//设置轴的间隔
原因就是我没有设置轴的间隔
@chenping 自己不能给自己分数,20园豆只能送给你了,要不然无法正常结贴