2017-04-01 171 views
2

我有一個Excel與大多0和1的文件,我想用這個信息來顏色的圖的頂點和邊。因此,如果單元格爲0,則將邊緣變爲灰色,但如果單元格爲1,則將其着色爲藍色。對於頂點也是類似的。如何使用excel數據爲圖表(頂點和邊)着色?

誰能給我如何去了解這個建議?我應該用什麼來製作圖表?我該如何告訴它如何爲它着色?

謝謝!

回答

0

改變頂點和圖形邊緣的顏色如果您有x和y的值可以直接打印這些工作表。以下是一個隨機生成5個點的x和y座標的示例。每個點繪製一個小的實心圓。在前一個點和下一個點之間畫一條線,形成一個閉環。

爲了演示如何選擇線條顏色,我將它們交替着色爲灰色和藍色,以便您瞭解如何根據其他一些標準選擇顏色。

vbBlue是預設的調色板之一(見本link),這就是爲什麼它沒有被宣佈 - 不像vbGray。

Option Explicit 


Sub drawALine(xFrm As Double, yFrm As Double, xTo As Double, yTo As Double, c As Long) 
    With ActiveSheet.Shapes.AddLine(xFrm, yFrm, xTo, yTo).Line 
    .DashStyle = msoLineDashDotDot 
    .ForeColor.RGB = c 
    End With 
End Sub 


Sub drawNode(r As Double, x As Double, y As Double, c As Long) 
    With ActiveSheet.Shapes.AddShape(msoShapeOval, x - r/2, y - r/2, r, r) 
    .Fill.ForeColor.RGB = c 
    End With 
End Sub 


Sub ConnectedOverLappingLoop() 
    Dim xMax As Double, yMax As Double, x1 As Double, y1 As Double 
    Dim xFrm As Double, yFrm As Double, xTo As Double, yTo As Double 
    Dim radius As Double 
    Dim vbGray As Long, clr As Long 

    xMax = 200 
    yMax = 200 
    radius = 5 
    vbGray = RGB(150, 150, 150) 

    xFrm = Rnd() * xMax 
    yFrm = Rnd() * yMax 
    x1 = xFrm 
    y1 = yFrm 
    clr = vbBlue 

    drawNode radius, x1, y1, vbBlue 

    Dim i As Integer 
    For i = 1 To 5: 
    xTo = Rnd() * xMax 
    yTo = Rnd() * yMax 

    drawNode radius, xTo, yTo, vbBlue 
    drawALine xFrm, yFrm, xTo, yTo, clr 
    xFrm = xTo 
    yFrm = yTo 

    If clr = vbBlue Then 
     clr = vbGray 
    Else 
     clr = vbBlue 
    End If 

    Next 
    drawALine xFrm, yFrm, x1, y1, clr 

End Sub