#vb 圖表的自定義標簽#
我有一個這樣的資料表
| 值 | Y值 | 標題 |
|---|---|---|
| 1 | 1 | 一個 |
| 2 | 2 | 乙 |
| 3 | 3 | C |
我想顯示這樣的 vb 圖表
6|
5|
4|
3| *C
2| *B
1| *A
0|______________________
0 1 2 3 4 5 6 7 5 8 9
到目前為止我只能顯示這個
6|
5|
4|
3| *3
2| *2
1| *1
0|______________________
0 1 2 3 4 5 6 7 5 8 9
這是我下面的代碼
Chart20.ChartAreas(0).AxisX.Minimum = 60
Chart20.ChartAreas(0).AxisX.Maximum = 220
Chart20.Series("TEMP").Points.Clear()
Try
CONN.Open()
COMMAND = CONN.CreateCommand
QUERY = "SELECT XValue,YValue,Title FROM vitals"
COMMAND = New MySqlCommand(QUERY, CONN)
READER = COMMAND.ExecuteReader
While READER.Read
Chart20.Series("TEMP").Points.AddXY(READER.GetString("YValue"), READER.GetString("XValue"))
End While
CONN.Close()
Catch ex As Exception
CONN.Close()
MsgBox(ex.ToString, MsgBoxStyle.Critical)
End Try
你能幫我一下嗎
uj5u.com熱心網友回復:
如果您設定 .Label、.Font、.LabelBackColor 和 .LabelForeColor 屬性,您可以看到點的標簽,例如,我使用以下代碼在表單上放置了一個 Chart 控制元件:
Imports System.Windows.Forms.DataVisualization.Charting
Public Class Form1
Class Datum
Property X As Integer
Property Y As Integer
Property Title As String
Sub New(x As Integer, y As Integer, t As String)
Me.X = x
Me.Y = y
Me.Title = t
End Sub
End Class
Sub ShowPointLabels()
Dim data = New List(Of Datum) From {New Datum(1, 1, "A"),
New Datum(2, 2, "B"),
New Datum(3, 3, "C")}
Chart1.Series.Clear()
Dim ds As New Series("Sample")
ds.ChartType = SeriesChartType.Point
Dim fnt = New Font("Arial", 12)
For Each d In data
Dim n = ds.Points.AddXY(d.X, d.Y)
Dim p = ds.Points(n)
p.Font = fnt
p.Label = d.Title
p.LabelBackColor = Color.PaleGoldenrod
p.LabelForeColor = Color.DarkBlue
p.LabelToolTip = "This is the label for " & d.Title
Next
Chart1.Series.Add(ds)
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ShowPointLabels()
End Sub
End Class
要得到這個:

另外,最好在一個步驟中從資料庫中讀取所有資料,在下一步中將資料添加到圖表系列中,最后將系列添加到圖表中。這樣可以將與資料庫的連接打開的時間保持在最低限度,并避免每次添加一個點時更新圖表所花費的時間。
uj5u.com熱心網友回復:
Sub ShowPointLabels()
Chart20.Series("TEMP").Points.Clear()
Try
CONN.Open()
COMMAND = CONN.CreateCommand
QUERY = "SELECT * FROM vitals"
COMMAND = New MySqlCommand(QUERY, CONN)
READER = COMMAND.ExecuteReader
For Each d In READER
Chart20.Series("TEMP").Points(Chart20.Series("TEMP").Points.AddXY(READER.GetString("XValue"), READER.GetString("YValue"))).Label = READER.GetString("Title")
Next
CONN.Close()
Catch ex As Exception
CONN.Close()
MsgBox(ex.ToString, MsgBoxStyle.Critical)
End Try
End Sub
我將@Andrew Morton Answer 修改為簡化的結果,它非常適合我。我希望這也能幫助別人
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/388601.html
上一篇:如何將回傳的資料從api映射到Nuxt中的資料屬性?
下一篇:C#到VB.net委托轉換
