2017-04-01 106 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