1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu, đánh giá lắng đọng axit ở vùng đồng bằng sông hồng việt nam

240 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRUNG TÂM NGHIÊN CỨU TÀI NGUYÊN VÀ MÔI TRƯỜNG ************************* PHẠM THỊ THU HÀ NGHIÊN CỨU, ĐÁNH GIÁ LẮNG ĐỌNG AXÍT Ở VÙNG ĐỒNG BẰNG SÔNG HỒNG VIỆT NAM LUẬN ÁN TIẾN SĨ KHOA HỌC MÔI TRƯỜNG HÀ NỘI, NĂM 2014 ĐẠI HỌC QUỐC GIA HÀ NỘI TRUNG TÂM NGHIÊN CỨU TÀI NGUYÊN VÀ MÔI TRƯỜNG ************************* PHẠM THỊ THU HÀ NGHIÊN CỨU, ĐÁNH GIÁ LẮNG ĐỌNG AXÍT Ở VÙNG ĐỒNG BẰNG SƠNG HỒNG VIỆT NAM LUẬN ÁN TIẾN SĨ KHOA HỌC MÔI TRƯỜNG Chuyên ngành: Môi trường phát triển bền vững Mã số: Chuyên ngành đào tạo thí điểm Người hướng dẫn khoa học: PGS.TS Hoàng Xuân Cơ GS.TS Lê Trọng Cúc HÀ NỘI - Năm 2014 LỜI CAM ĐOAN Tơi xin cam đoan cơng trình nghiên cứu riêng Các số liệu, kết nêu luận án trung thực chưa cơng bố cơng trình khác Hà Nội, ngày 15 tháng 10 năm 2014 Nghiên cứu sinh Phạm Thị Thu Hà LỜI CẢM ƠN Để hoàn thành Luận án này, xin gửi lời cảm ơn sâu sắc tới PGS.TS Hoàng Xuân Cơ, GS.TS Lê Trọng Cúc người thầy tận tình hướng dẫn, động viên nhắc nhở đóng góp ý kiến q báu để tơi hồn thành Luận án Tơi xin chân thành cảm ơn thầy cô giáo Trung tâm Nghiên cứu Tài Nguyên Môi trường, thầy cô giáo Khoa Môi trường, thầy cô Bộ môn Sinh Thái Mơi trường đóng góp ý kiến, tạo điều kiện thuận lợi cho tơi q trình nghiên cứu, hoàn thành thủ tục q trình học tập bảo vệ Luận án Tơi xin chân thành cảm ơn Trung tâm Khí tượng Thủy văn Môi trường, Trung tâm Quan Trắc Mô hình hóa Mơi trường, Trung tâm Mơi trường - Viện Khí tượng Thủy Văn, phịng Phân tích Trung Tâm, khoa Nông học - Đại học Nông nghiệp I Hà Nội phịng thí nghiệm Viện KH & CNMT- Đại học Bách Khoa Hà Nội, khoa Sinh học trường Đại học Khoa học Tự nhiên khoa Sinh học trường ĐHSP Hà Nội, gia đình bà Phạm Thị Ngừng Hải Dương tạo điều kiện thuận lợi cho tơi q trình thu thập số liệu, làm thực nghiệm để hồn thành Luận án Cuối cùng, tơi xin gửi lời cảm ơn đặc biệt tới gia đình tôi, đồng nghiệp, bạn bè giúp đỡ cổ vũ suốt thời gian học tập thực Luận án Hà Nội, ngày 15 tháng 10 năm 2014 Nghiên cứu sinh Phạm Thị Thu Hà MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN MỤC LỤC i DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT .iv DANH MỤC CÁC BẢNG .v DANH MỤC CÁC HÌNH vii MỞ ĐẦU CHƯƠNG TỔNG QUAN TÀI LIỆU 1.1 Một số vấn đề chung liên quan đến lắng đọng axít 1.1.1 Khái niệm lắng đọng axít 1.1.2 Nguyên nhân chế gây lắng đọng axít 1.1.3 Các q trình vận chuyển, chuyển hóa lắng đọng axít 10 1.1.4 Cách nhận biết lắng đọng axít 13 1.2 Tổng quan tình hình nghiên cứu nước ngồi liên quan đến lắng đọng axít 13 1.2.1 Tình hình lắng đọng axít giới 13 1.2.2 Ảnh hưởng lắng đọng axít đến hệ sinh thái, cơng trình kiến trúc sức khỏe người 16 1.2.3 Những nỗ lực hoạt động kiểm soát lắng đọng axít 33 1.3 Tổng quan tình hình nghiên cứu nước liên quan đến lắng đọng axít 36 Kết luận chương .40 CHƯƠNG ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU 43 2.1 Đối tượng nghiên cứu .43 2.2 Phạm vi nghiên cứu 43 2.3 Phương pháp nghiên cứu 44 2.3.1 Phương pháp điều tra khảo sát thực địa thu thập số liệu .45 2.3.2 Phương pháp tính tốn đặc trưng lắng đọng axít .45 2.3.3 Phương pháp bố trí thí nghiệm 47 2.3.4 Phương pháp phân tích phịng thí nghiệm 2.3.5 Phương pháp phân tích xử lý số liệu .2 2.3.6 Phương pháp mơ hình hóa mơi trường .3 2.3.7 Phương pháp xây dựng phần mềm quản lý sở liệu đánh giá trạng lắng đọng axít Kết luận chương CHƯƠNG KẾT QUẢ VÀ THẢO LUẬN 3.1 Đánh giá trạng tải lượng lắng đọng axít số khu vực đồng sơng Hồng (Hà Nội, Hải Phịng, Hải Dương, Ninh Bình) 3.1.1 Hiện trạng mưa axít 3.1.2 Tải lượng lắng đọng axít 24 3.2 Đánh giá ảnh hưởng mưa axít đến số tính chất đất trồng đậu Cô ve (Phaseolus vulgaris L.) 39 3.2.1 Chất lượng đất làm thí nghiệm 39 3.2.2 Ảnh hưởng mưa axít đến độ chua đất 39 3.2.3 Ảnh hưởng mưa axít đến hàm lượng chất hữu đất (OM) 41 3.2.4 Ảnh hưởng mưa axít đến hàm lượng N, P, K dễ tiêu đất 42 3.2.5 Ảnh hưởng mưa axít đến CEC hàm lượng cation Ca2+, Mg2+ trao đổi đất .44 3.2.6 Ảnh hưởng mưa axít đến hàm lượng SO42- đất 47 3.2.7 Ảnh hưởng mưa axít đến hàm lượng Al3+, Fe3+, Mn2+ đất .48 3.3 Đánh giá ảnh hưởng mưa axít đến sinh trưởng phát triển đậu Cô ve (Phaseolus vulgaris L.) 3.3.1 Tỉ lệ nảy mầm .1 3.3.2 Thời gian nảy mầm .3 3.3.3 Thời gian diệp lục hóa mầm (TGDLHLM) 3.3.4 Chiều cao thân 3.3.5 Số nhánh/cây .7 3.3.6 Cường độ quang hợp 3.3.7 Cường độ thoát nước 3.3.8 Hàm lượng diệp lục 3.4 Đề xuất số giải pháp đóng góp cho việc kiểm sốt lắng đọng axít 3.4.1 Khả ứng dụng mơ hình Rains -Asia 7.52.2 để nghiên cứu đánh giá, dự báo mức độ phát thải khí SO2 lượng lắng đọng S vùng đồng sông Hồng Việt Nam 10 3.4.2 Xây dựng phần mềm quản lý sở liệu đánh giá trạng lắng đọng axít vùng đồng sơng Hồng Việt Nam 23 3.4.3 Đề xuất giải pháp giảm thiểu phát thải chất khí gây lắng đọng axít 34 Kết luận chương 40 KẾT LUẬN VÀ KIẾN NGHỊ 41 DANH MỤC CƠNG TRÌNH KHOA HỌC CỦA TÁC GIẢ LIÊN QUAN ĐẾN LUẬN ÁN 44 TÀI LIỆU THAM KHẢO 46 CÁC PHỤ LỤC CỦA LUẬN ÁN 62 DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT Ca2+TĐ Canxi trao đổi CEC Dung tích trao đổi cation CEETIA Trung tâm Kỹ thuật Môi trường đô thị Khu công nghiệp CT Công thức CSDL Cơ sở liệu ĐC Đối chứng ĐBSH Đồng sông Hồng ĐDSH Đa dạng sinh học EANET Mạng lưới quan trắc lắng đọng axít vùng Đông Nam Á EEC Ủy ban kinh tế Châu Âu HST Hệ sinh thái Kdt Kali dễ tiêu KTTV Khí Tượng Thủy Văn LM Lượng mưa MĐN Mẫu đất Mg2+TĐ Magie trao đổi Ndt Nitơ dễ tiêu nss non-sea-salt OM Chất hữu Pdt Phốt dễ tiêu TB Trung bình TGDLHLM Thời gian diệp lục hóa mầm Tp Thành phố TS Tần suất SPAD Single-photon avalanche diode, a solid-state electronic photodetector DANH MỤC CÁC BẢNG Bảng 1.1 Ngưỡng pH tồn số loài sinh vật 18 Bảng 2.1 Các cơng thức thí nghiệm 50 Bảng 2.2 Sơ đồ bố trí thí nghiệm .51 Bảng 3.1 Giá trị pH nước mưa trung bình năm trạm thuộc đồng sơng Hồng giai đoạn 2006 - 2012 10 Bảng 3.2 Kết tính tốn tỷ lệ nồng độ thành phần hóa học nước mưa trạm Láng - Hà Nội giai đoạn 2006 – 2012 19 Bảng 3.3 Kết tính tốn tỷ lệ nồng độ thành phần hóa học nước mưa trạm Phủ Liễn - Hải Phòng giai đoạn 2006 – 2012 20 Bảng 3.4 Kết tính tốn tỷ lệ nồng độ thành phần hóa học nước mưa trạm Tp Hải Dương giai đoạn 2006 – 2012 20 Bảng 3.5 Kết tính tốn tỷ lệ nồng độ thành phần hóa học nước mưa trạm Tp Ninh Bình giai đoạn 2006 – 2012 20 Bảng 3.6 Kết tính tốn tỷ lệ nồng độ thành phần hóa học nước mưa trạm Cúc Phương - Ninh Bình giai đoạn 2006 – 2012 21 Bảng 3.7 Tải lượng lắng ướt S N Hà Nội, Hải Dương, Hải Phịng Ninh Bình 30 Bảng 3.8 Nồng độ trung bình khí SO2, NOx Hà Nội, Hải Dương, Hải Phịng, Ninh Bình giai đoạn 2006 – 2012 33 Bảng 3.9 Tải lượng lắng khô S N Hà Nội, Hải Dương, Hải Phịng, Ninh Bình Cúc Phương giai đoạn 2006 – 2012 34 Bảng 3.10 Tải lượng lắng đọng S N Cúc Phương - Ninh Bình giai đoạn 2006-2012 37 Bảng 3.11 Các kịch cho trước 11 Bảng 3.12 Mức tiêu thụ lượng theo loại nhiên liệu 12 Bảng 3.13 Danh mục kí hiệu loại nhiên liệu .13 Bảng 3.14 Mức tiêu thụ lượng theo ngành .14 Bảng 3.15 Danh mục kí hiệu lĩnh vực/loại hình sử dụng lượng .14 Bảng 3.16 Năng lượng tiêu thụ nhiên liệu ngành vào năm 2015 15 Bảng 3.17 Mức phát thải SO2 theo loại nhiên liệu 16 Bảng 3.18 Mức phát thải SO2 từ loại hình hoạt động sản xuất 17 Bảng 3.19 Mức phát thải SO2 từ sử dụng nhiên liệu theo ngành năm 2015 18 Bảng 3.20 Chi phí giảm thiểu phát thải SO2 từ việc sử dụng nhiên liệu 18 Bảng 3.21 Các kịch cho trước 19 Bảng 3.22 Lượng lắng đọng S theo kịch bl_cle vào năm 2015 20 Bảng 3.23 Lượng lắng đọng S theo kịch bl_no_control vào năm 2015 21 Bảng 3.24 Tỷ lệ phần trăm hệ sinh thái bị ảnh hưởng .22 Bảng 3.25 Các file cở sở liệu lắng đọng axít khu vực nghiên cứu 26 Bảng 3.26 Danh mục số bảng sở liệu sử dụng phần mềm .28 Bảng 3.27 Bảng liệu lắng ướt NO3- nước mưa CSDL 33 private void năm2011ToolStripMenuItem1_Click(object sender, EventArgs e) { _DATA_FAG = 1; TableName = "PL_6"; title = "Biểu đồ " + _CHART_NAME[5] + " 2011"; _SELECT_YEAR = 7; _FAG = 5; loadGraph(); } private void năm2012ToolStripMenuItem1_Click(object sender, EventArgs e) { _DATA_FAG = 1; TableName = "PL_6"; title = "Biểu đồ " + _CHART_NAME[5] + " 2012"; _SELECT_YEAR = 8; _FAG = 5; loadGraph(); } #endregion private void mốiQuanHệGiữaGiáTrịPHVàPAiToolStripMenuItem_Click(object sender, EventArgs e) { _DATA_FAG = 2; TableName = "PL_7"; title = "Biểu đồ " + _CHART_NAME[6]; _FAG = 6; loadGraph(); } private void tổngLượngLắngĐọngSToolStripMenuItem_Click(object sender, EventArgs e) { _DATA_FAG = 2; TableName = "PL_8"; title = "Biểu đồ " + _CHART_NAME[6]; _FAG = 7; loadGraph(); } private void tổngLượngLắngĐọngNToolStripMenuItem_Click(object sender, EventArgs e) { _DATA_FAG = 2; TableName = "PL_9"; title = "Biểu đồ " + _CHART_NAME[7]; _FAG = 8; loadGraph(); } private void thoátToolStripMenuItem_Click(object sender, EventArgs e) { this.Close(); } private void btZO_Click(object sender, EventArgs e) { ZoomOut(); 101 } private void btZI_Click(object sender, EventArgs e) { ZoomIn(); } private void lưuĐồThịToolStripMenuItem_Click(object sender, EventArgs e) { saveFileDialog1.OverwritePrompt = true; saveFileDialog1.DefaultExt = "*.jpg"; saveFileDialog1.Filter = "Image (*.JPG - *.JPEG)|*.jpg|Windows Bitmap (*.BMP)|*.bmp"; saveFileDialog1.FileName = "Chart" + k.ToString(); if (saveFileDialog1.ShowDialog() == DialogResult.OK) { zedGraphControl1.MasterPane.GetImage().Save(saveFileDialog1.FileName); k++; } } #endregion } } // Database using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.OleDb; namespace Rain { public partial class DataBase : Form { private OleDbConnection connection; private DataSet datashet; private OleDbDataAdapter adapter; private OleDbCommand cmd; public DataBase() { InitializeComponent(); } private void DataBase_Load(object sender, EventArgs e) { dataView(); label1.Text = "Bảng Dữ liệu " + FormMain.title; } private void dataView() { getConnect(); dataGridView1.DataSource = getData(); 102 } dinhdangluoi(dataGridView1); public OleDbConnection getConnect() { String StrSQL = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source=./database/"+FormMain.DataBaseName+".accdb"; connection = new OleDbConnection(StrSQL); try { connection.Open(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } return connection; } public void destroyConnect() { connection.Close(); connection.Dispose(); connection = null; } public DataTable getData() { getConnect(); adapter = new OleDbDataAdapter(@"Select * From "+FormMain.TableName, connection); datashet = new DataSet(); adapter.Fill(datashet); return datashet.Tables[0]; destroyConnect(); } public void dinhdangluoi(DataGridView dataGridView1) { //dataGridView1.ReadOnly = true; //dataGridView1.Columns[0].HeaderText = "ID"; // dataGridView1.Columns[0].Width = 50; // dataGridView1.Columns[0].HeaderText = ""; // dataGridView1.Columns[0].Width = 150; // dataGridView1.Columns[1].HeaderText = ""; /// dataGridView1.Columns[1].Width = 150; } private bool delData(String id) { try { String cmdStr = "DELETE FROM "+FormMain.TableName+" WHERE STT=" + id + ""; // MessageBox.Show(cmdStr); getConnect(); cmd = new OleDbCommand(cmdStr, connection); cmd.ExecuteNonQuery(); destroyConnect(); return true; 103 } catch (Exception ex) { // MessageBox.Show(ex.ToString()); return false; } } private void UpdateData() { DataTable dta = (DataTable)dataGridView1.DataSource; OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter); adapter.Update(dta); } private void btSave_Click(object sender, EventArgs e) { UpdateData(); this.Close(); } public static String str; private void dataGridView1_SelectionChanged(object sender, EventArgs e) { DataGridViewSelectedRowCollection rows = dataGridView1.SelectedRows; if (rows.Count > 0) { DataGridViewRow row = rows[0]; str = row.Cells[0].Value.ToString(); } } private void btDel_Click(object sender, EventArgs e) { if (delData(str)) { if (MessageBox.Show("Bạn chắn xóa năm " MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { delData(str); dataView(); } } else { MessageBox.Show("Vui lòng chọn hàng để xóa"); } } } } // Program using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; 104 + str, "Xác Nhận", namespace Rain { static class Program { /// /// The main entry point for the application /// [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new FormMain()); } } } // Public Data using System; using System.Collections.Generic; using System.Collections; using System.Linq; using System.Text; using System.Data.OleDb; using System.Windows.Forms; namespace Rain { class PublicData { public static ArrayList _Data_Arr; // public static DataThreeValue _Data_Three_Value; //public static DataTwoValue _Data_Two_Value; // private DataThreeValue Three_Value; private DataTwoValue Two_Vlaue; private OleDbConnection connection = new OleDbConnection(); private OleDbCommand command = new OleDbCommand(); private OleDbDataReader data; public PublicData() { makePubData(FormMain._DATA_FAG); } #region Kết nối tới access private void connectToDatabase() { try { connection.ConnectionString = @"Provider Source=./database/" + FormMain.DataBaseName + ".accdb"; 105 = Microsoft.ACE.OLEDB.12.0; Data connection.Open(); } catch (Exception e) { System.Windows.Forms.MessageBox.Show("Không kết nối tới sở liệu\n Vui lòng kiểm tra lại \n" + e.ToString()); } } #endregion #region Đọc liệu từ access private OleDbDataReader readData() { try { command.Connection = connection; command.CommandText = "SELECT * FROM " + FormMain.TableName; return command.ExecuteReader(); } catch (Exception e) { System.Windows.Forms.MessageBox.Show("Không kết nối tới bảng liệu \n Vui lòng kiểm tra lại \n" + e.ToString()); } return null; } #endregion #region Đóng kết nối giả phóng liệu private void Destroy() { connection.Close(); data.Close(); data.Dispose(); connection.Dispose(); } #endregion #region Tạo liệu dùng chung private void makePubData(int fag) { connectToDatabase(); data = readData(); if (data != null) { switch (fag) { case 1: setDataTwoValues(); break; case 2: setDataThreeValues(); break; } } } 106 #endregion } #region Gán liệu public void setDataTwoValues() { _Data_Arr = new ArrayList(); while (data.Read()) { String LableX = data.GetValue(1).ToString(); Double DataY = data.GetDouble(FormMain._SELECT_YEAR); Two_Vlaue = new DataTwoValue(LableX,DataY); _Data_Arr.Add(Two_Vlaue); } } private void setSelectDataTwoValues(int i) { _Data_Arr = new ArrayList(); while (data.Read()) { String LableX = data.GetValue(1).ToString(); Double DataY = data.GetDouble(i); Two_Vlaue = new DataTwoValue(LableX, DataY); _Data_Arr.Add(Two_Vlaue); } } private void setDataThreeValues() { _Data_Arr = new ArrayList(); while (data.Read()) { try { String LableX = data.GetValue(1).ToString(); Double DataY1 = data.GetDouble(2); Double DataY2 = data.GetDouble(3); Three_Value = new DataThreeValue(LableX, DataY1, DataY2); _Data_Arr.Add(Three_Value); } catch (Exception e) { MessageBox.Show("Lỗi liệu vui lòng kiểm tra lại"); } } } #endregion } // Chart using System; using System.Collections.Generic; using System.Linq; using System.Text; using ZedGraph; 107 using System.Drawing; namespace Rain { class ChartPL_1 { public ChartPL_1(ZedGraphControl zg1) { #region ex /* GraphPane myPane = zg1.GraphPane; myPane.GraphObjList.Clear(); // Set the Titles myPane.Title.Text = FormMain.title; myPane.XAxis.Title.Text = "Năm"; myPane.YAxis.Title.Text = "pH (%)"; // Make data string[] labels = new String[PublicData._Data_Arr.Count]; double[] y1 = new Double[PublicData._Data_Arr.Count]; double[] y2 = new Double[PublicData._Data_Arr.Count]; double[] y3 = new Double[PublicData._Data_Arr.Count]; PointPairList list = new PointPairList(); int j = 0; foreach (DataThreeValue data in PublicData._Data_Arr) { } labels[j] = data.getLableX(); y1[j] = data.getDataY1(); y2[j] = data.getDataY2(); y3[j] = y1[j] + y2[j]; j++; // Generate a black line with "Curve 4" in the legend LineItem myCurve1 = myPane.AddCurve("5 < pH 5.6", null, y2, Color.Black, SymbolType.Diamond); myCurve2.Line.Fill = new Fill( Color.White, Color.Red, 45F); BarItem myBar = myPane.AddBar("Tổng pH (%) năm", null, y3, Color.Blue); myBar.Bar.Fill = new Fill(Color.Blue, Color.White, Color.Blue); // Fix up the curve attributes a little myCurve1.Symbol.Size = 8.0F; myCurve1.Symbol.Fill = new Fill(Color.White); myCurve1.Line.Width = 1.0F; const float shift = 3; for (int i = 0; i < y1.Length; i++) 108 { // format the label string to have decimal place string lab = y3[i].ToString("F1"); // create the text item (assumes the x axis is ordinal or text) // for negative bars, the label appears just above the zero value TextObj text = new TextObj(lab, (float)(i + 1), (float)(y3[i] < ? 0.0 : y3[i]) + shift); // tell Zedgraph to use user scale units for locating the TextObj text.Location.CoordinateFrame = CoordType.AxisXYScale; // AlignH the left-center of the text to the specified point text.Location.AlignH = AlignH.Left; text.Location.AlignV = AlignV.Center; text.FontSpec.Border.IsVisible = false; text.FontSpec.Fill.IsVisible = false; // rotate the text 90 degrees text.FontSpec.Angle = 90; // add the TextObj to the list myPane.GraphObjList.Add(text); } // Set the XAxis labels myPane.XAxis.Scale.TextLabels = labels; // Set the XAxis to Text type myPane.XAxis.Type = AxisType.Text; // Fill the Axis and Pane backgrounds myPane.Chart.Fill = new Fill(Color.White, Color.FromArgb(255, 255, 166), 90F); myPane.Fill = new Fill(Color.White, Color.FromArgb(0, 0, 204),90F); myPane.YAxis.Scale.Min = -10; zg1.AxisChange(); */ #endregion #region MasterPane myMaster = zg1.MasterPane; myMaster.GraphObjList.Clear(); // Remove the default pane that comes with the ZedGraphControl.MasterPane myMaster.PaneList.Clear(); myMaster.PaneList.Clear(); // Set the master pane title myMaster.Title.Text = FormMain.title; myMaster.Title.IsVisible = true; // Fill the pane background with a color gradient myMaster.Fill = new Fill(Color.White, Color.MediumSlateBlue, 45.0F); // Set the margins and the space between panes to 10 points myMaster.Margin.All = 10; myMaster.InnerPaneGap = 10; // Enable the master pane legend myMaster.Legend.IsVisible = false; #region Creat Pane GraphPane myPane = new GraphPane(); myPane.CurveList.Clear(); myPane.XAxis.Title.Text = "Năm"; myPane.YAxis.Title.Text = "pH (%)"; 109 // Make data string[] labels = new String[PublicData._Data_Arr.Count]; double[] y1 = new Double[PublicData._Data_Arr.Count]; double[] y2 = new Double[PublicData._Data_Arr.Count]; double[] y3 = new Double[PublicData._Data_Arr.Count]; PointPairList list = new PointPairList(); int j = 0; foreach (DataThreeValue data in PublicData._Data_Arr) { } labels[j] = data.getLableX(); y1[j] = data.getDataY1(); y2[j] = data.getDataY2(); y3[j] = y1[j] + y2[j]; j++; LineItem myCurve1 = myPane.AddCurve("5 < pH 5.6", null, y2, Color.Black, SymbolType.Diamond); myCurve2.Line.Fill = new Fill( Color.White, Color.Red, 45F); BarItem myBar = myPane.AddBar("Tổng pH (%) năm", null, y3, Color.Blue); myBar.Bar.Fill = new Fill(Color.Blue, Color.White, Color.Blue); // Fix up the curve attributes a little myCurve1.Symbol.Size = 8.0F; myCurve1.Symbol.Fill = new Fill(Color.White); myCurve1.Line.Width = 1.0F; const float shift = 3; for (int i = 0; i < y1.Length; i++) { // format the label string to have decimal place string lab = y3[i].ToString("F1"); // create the text item (assumes the x axis is ordinal or text) // for negative bars, the label appears just above the zero value TextObj text = new TextObj(lab, (float)(i + 1), (float)(y3[i] < ? 0.0 : y3[i]) + shift); // tell Zedgraph to use user scale units for locating the TextObj text.Location.CoordinateFrame = CoordType.AxisXYScale; // AlignH the left-center of the text to the specified point text.Location.AlignH = AlignH.Left; text.Location.AlignV = AlignV.Center; text.FontSpec.Border.IsVisible = false; text.FontSpec.Fill.IsVisible = false; // rotate the text 90 degrees text.FontSpec.Angle = 90; // add the TextObj to the list myPane.GraphObjList.Add(text); } 110 // đặt lables cho trục x myPane.XAxis.Scale.TextLabels = labels; // kiểu text cho trục x myPane.XAxis.Type = AxisType.Text; // màu pane myPane.Chart.Fill = new Fill(Color.White, Color.FromArgb(255, 255, 166), 90F); myPane.Fill = new Fill(Color.White, Color.FromArgb(0, 0, 204), 90F); myPane.YAxis.Scale.Min = -10; #endregion myMaster.Add(myPane); } } } // Tell ZedGraph to auto layout all the panes using (Graphics g = zg1.CreateGraphics()) { myMaster.SetLayout(g, PaneLayout.SquareColPreferred); myMaster.AxisChange(g); //g.Dispose(); } #endregion 111 // Chart using System; using System.Collections.Generic; using System.Linq; using System.Text; using ZedGraph; using System.Drawing; namespace Rain { class ChartPL_2 { public ChartPL_2(ZedGraphControl zg1) { MasterPane myMaster = zg1.MasterPane; myMaster.GraphObjList.Clear(); // Remove the default pane that comes with the ZedGraphControl.MasterPane myMaster.PaneList.Clear(); myMaster.PaneList.Clear(); // Set the master pane title myMaster.Title.Text = FormMain.title; myMaster.Title.IsVisible = true; // Fill the pane background with a color gradient myMaster.Fill = new Fill(Color.White, Color.MediumSlateBlue, 45.0F); // Set the margins and the space between panes to 10 points myMaster.Margin.All = 10; myMaster.InnerPaneGap = 10; // Enable the master pane legend myMaster.Legend.IsVisible = false; #region create my pane GraphPane myPane = new GraphPane(); myPane.GraphObjList.Clear(); // Set the Titles myPane.XAxis.Title.Text = "Năm"; myPane.YAxis.Title.Text = "TB pH"; // Make data string[] labels = new String[PublicData._Data_Arr.Count]; double[] y1 = new Double[PublicData._Data_Arr.Count]; int j = 0; foreach (DataTwoValue data in PublicData._Data_Arr) { } labels[j] = data.getLableX(); y1[j] = data.getDataY(); j++; // Generate a black line with "Curve 4" in the legend LineItem myCurve1 = myPane.AddCurve("Trung bình pH", null, y1, Color.DarkGreen, SymbolType.Circle); 112 myCurve1.Line.Fill = new Fill(Color.White, Color.FromArgb(0, 51, 204), 45F); // Fix up the curve attributes a little myCurve1.Symbol.Size = 8.0F; myCurve1.Symbol.Fill = new Fill(Color.White); myCurve1.Line.Width = 2.0F; // Set the XAxis labels myPane.XAxis.Scale.TextLabels = labels; // Set the XAxis to Text type myPane.XAxis.Type = AxisType.Text; myPane.YAxis.Scale.Min = 0; // màu myPane.Chart.Fill = new Fill(Color.White, Color.FromArgb(255, 255, 51), 90F); myPane.Fill = new Fill(Color.White, Color.FromArgb(153, 255, 102), 90F); #endregion myMaster.Add(myPane); } // Tell ZedGraph to auto layout all the panes using (Graphics g = zg1.CreateGraphics()) { myMaster.SetLayout(g, PaneLayout.SquareColPreferred); myMaster.AxisChange(g); //g.Dispose(); } 113 Phụ lục E Một số hình ảnh thực nghiệm 114 115

Ngày đăng: 31/07/2023, 18:27

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w