xy 산점도에서 열 값에 따라 점을 색칠하려면 어떻게 해야 합니까?
다음 워크시트를 고려합니다.
A B C D
1 COMPANY XVALUE YVALUE GROUP
2 Apple 45 35 red
3 Xerox 45 38 red
4 KMart 63 50 orange
5 Exxon 53 59 green
Excel의 산점도 함수를 사용하여 다음 차트를 만들었습니다.
그러나 차트의 각 점에는 다음과 같은 추가 속성이 있습니다.GROUP
: . 4개의 그룹이 있습니다.red
,orange
,black
★★★★★★★★★★★★★★★★★」green
그(그룹명 턴(그룹명 그)), 각(그룹명 턴(그룹명 그)), 각(그룹명 패(그룹명 그)))을 볼 수 green
예를 들어, 거의 항상 차트 왼쪽에 있습니다.)내 리스트는 500줄이기 때문에 수동으로 할 수 없습니다.떻게 하면 동동 동동동 ???
비 VBA 솔루션:
각 색상 그룹에 대해 해당 그룹의 Y 값을 나타내는 추가 데이터 그룹을 만들어야 합니다.이러한 그룹을 사용하여 그래프 내에 여러 데이터 세트를 만들 수 있습니다.
다음은 데이터를 사용한 예입니다.
A B C D E F G
----------------------------------------------------------------------------------------------------------------------
1| COMPANY XVALUE YVALUE GROUP Red Orange Green
2| Apple 45 35 red =IF($D2="red",$C2,NA()) =IF($D2="orange",$C2,NA()) =IF($D2="green",$C2,NA())
3| Xerox 45 38 red =IF($D3="red",$C3,NA()) =IF($D3="orange",$C3,NA()) =IF($D3="green",$C3,NA())
4| KMart 63 50 orange =IF($D4="red",$C4,NA()) =IF($D4="orange",$C4,NA()) =IF($D4="green",$C4,NA())
5| Exxon 53 59 green =IF($D5="red",$C5,NA()) =IF($D5="orange",$C5,NA()) =IF($D5="green",$C5,NA())
그 후에는 다음과 같이 됩니다.
A B C D E F G
---------------------------------------------------------------------
1| COMPANY XVALUE YVALUE GROUP Red Orange Green
2| Apple 45 35 red 35 #N/A #N/A
3| Xerox 45 38 red 38 #N/A #N/A
4| KMart 63 50 orange #N/A 50 #N/A
5| Exxon 53 59 green #N/a #N/A 59
이제 다른 데이터 세트를 사용하여 그래프를 생성할 수 있습니다.다음은 데이터 예를 보여 주는 그림입니다.
수 있어요.(X;Y)
에서 " "로B:B ; E:E
,B:B ; F:F
,B:B ; G:G
데이터를 추가할 때 그래프가 자동으로 업데이트되도록 합니다.
저도 비슷한 질문에 대답했습니다.
https://stackoverflow.com/a/15982217/1467082
만 하면 ..Points
매기다'를 ..Format.Fill.ForeColor.RGB
필요한 기준에 따라 값을 매길 수 있습니다.
갱신했다
다음 코드는 스크린샷에 따라 차트를 색칠합니다.이것은 3가지 색상만 사용하는 것을 전제로 하고 있습니다.값에 하고 대소문자의 할당을 할 수 .myColor
RGB를 사용하다
Option Explicit
Sub ColorScatterPoints()
Dim cht As Chart
Dim srs As Series
Dim pt As Point
Dim p As Long
Dim Vals$, lTrim#, rTrim#
Dim valRange As Range, cl As Range
Dim myColor As Long
Set cht = ActiveSheet.ChartObjects(1).Chart
Set srs = cht.SeriesCollection(1)
'## Get the series Y-Values range address:
lTrim = InStrRev(srs.Formula, ",", InStrRev(srs.Formula, ",") - 1, vbBinaryCompare) + 1
rTrim = InStrRev(srs.Formula, ",")
Vals = Mid(srs.Formula, lTrim, rTrim - lTrim)
Set valRange = Range(Vals)
For p = 1 To srs.Points.Count
Set pt = srs.Points(p)
Set cl = valRange(p).Offset(0, 1) '## assume color is in the next column.
With pt.Format.Fill
.Visible = msoTrue
'.Solid 'I commented this out, but you can un-comment and it should still work
'## Assign Long color value based on the cell value
'## Add additional cases as needed.
Select Case LCase(cl)
Case "red"
myColor = RGB(255, 0, 0)
Case "orange"
myColor = RGB(255, 192, 0)
Case "green"
myColor = RGB(0, 255, 0)
End Select
.ForeColor.RGB = myColor
End With
Next
End Sub
x축 텍스트 범주를 코드화하여 단일 열에 나열한 다음 인접 열에 관련 텍스트 범주 코드에 대해 각 변수의 플롯 점을 나열하고 관련 없는 텍스트 범주 코드에 대해 빈 셀만 남겨두면 그래프를 분산하여 표시되는 결과를 얻을 수 있습니다.질문이 있으면 알려주세요.
VBA 솔루션과 비 VBA 솔루션이 있는데 둘 다 정말 좋습니다.저는 Javascript 솔루션을 제안하고 싶었습니다.
엑셀에서 Javascript, HTML, css를 사용할 수 있는 Funfun이라는 엑셀 애드인이 있습니다.차트를 작성할 수 있는 스프레드시트가 내장된 온라인 편집기가 있습니다.
https://www.funfun.io/1/ #/edit/5a61ed15404f66229bda3f44
이 차트를 작성하기 위해 스프레드시트에 데이터를 입력하고 json 파일로 읽었습니다.이것은short
파일.
올바른 포맷으로 정리해서script.js
차트에 추가할 수 있습니다.
var data = [];
var color = [];
var label = [];
for (var i = 1; i < $internal.data.length; i++)
{
label.push($internal.data[i][0]);
data.push([$internal.data[i][1], $internal.data[i][2]]);
color.push($internal.data[i][3]);
}
그런 다음 지정된 색상과 위치를 가진 각 점을 사용하여 분산 차트를 만듭니다.
var dataset = [];
for (var i = 0; i < data.length; i++) {
dataset.push({
data: [{
x: data[i][0],
y: data[i][1]
}],
pointBackgroundColor: color[i],
pointStyle: "cercle",
radius: 6
});
}
산란도를 작성한 후, 재미있는 엑셀 애드인에 URL을 붙여 엑셀에 업로드 할 수 있습니다.예를 들면 다음과 같습니다.
이 작업이 완료되면 Excel에서 스프레드시트의 값을 변경하여 점의 색상 또는 위치를 즉시 변경할 수 있습니다.
차트에 점을 더 추가하려면 반경을 수정하기만 하면 됩니다.data
에서short
json 파일.
이 Javascript 솔루션이 도움이 되길 바랍니다!
공개 : fun fun 개발자입니다.
이것을 시험해 보세요.
Dim xrndom As Random
Dim x As Integer
xrndom = New Random
Dim yrndom As Random
Dim y As Integer
yrndom = New Random
'chart creation
Chart1.Series.Add("a")
Chart1.Series("a").ChartType = DataVisualization.Charting.SeriesChartType.Point
Chart1.Series("a").MarkerSize = 10
Chart1.Series.Add("b")
Chart1.Series("b").ChartType = DataVisualization.Charting.SeriesChartType.Point
Chart1.Series("b").MarkerSize = 10
Chart1.Series.Add("c")
Chart1.Series("c").ChartType = DataVisualization.Charting.SeriesChartType.Point
Chart1.Series("c").MarkerSize = 10
Chart1.Series.Add("d")
Chart1.Series("d").ChartType = DataVisualization.Charting.SeriesChartType.Point
Chart1.Series("d").MarkerSize = 10
'color
Chart1.Series("a").Color = Color.Red
Chart1.Series("b").Color = Color.Orange
Chart1.Series("c").Color = Color.Black
Chart1.Series("d").Color = Color.Green
Chart1.Series("Chart 1").Color = Color.Blue
For j = 0 To 70
x = xrndom.Next(0, 70)
y = xrndom.Next(0, 70)
'Conditions
If j < 10 Then
Chart1.Series("a").Points.AddXY(x, y)
ElseIf j < 30 Then
Chart1.Series("b").Points.AddXY(x, y)
ElseIf j < 50 Then
Chart1.Series("c").Points.AddXY(x, y)
ElseIf 50 < j Then
Chart1.Series("d").Points.AddXY(x, y)
Else
Chart1.Series("Chart 1").Points.AddXY(x, y)
End If
Next
최근에 비슷한 일을 해야 해서 아래의 코드로 해결했습니다.도움이 됐으면 좋겠다!
Sub ColorCode()
Dim i As Integer
Dim j As Integer
i = 2
j = 1
Do While ActiveSheet.Cells(i, 1) <> ""
If Cells(i, 5).Value = "RED" Then
ActiveSheet.ChartObjects("YourChartName").Chart.FullSeriesCollection(1).Points(j).MarkerForegroundColor = RGB(255, 0, 0)
Else
If Cells(i, 5).Value = "GREEN" Then
ActiveSheet.ChartObjects("YourChartName").Chart.FullSeriesCollection(1).Points(j).MarkerForegroundColor = RGB(0, 255, 0)
Else
If Cells(i, 5).Value = "GREY" Then
ActiveSheet.ChartObjects("YourChartName").Chart.FullSeriesCollection(1).Points(j).MarkerForegroundColor = RGB(192, 192, 192)
Else
If Cells(i, 5).Value = "YELLOW" Then
ActiveSheet.ChartObjects("YourChartName").Chart.FullSeriesCollection(1).Points(j).MarkerForegroundColor = RGB(255, 255, 0)
End If
End If
End If
End If
i = i + 1
j = j + 1
Loop
End Sub
제가 찾은 더 간단한 해결책은 데이터를 색상으로 정렬한 후 다른 데이터 범위를 자체 시리즈로 선택하고 Excel을 통해 자동으로 색칠하는 것이었습니다.
언급URL : https://stackoverflow.com/questions/17194105/how-can-i-color-dots-in-a-xy-scatterplot-according-to-column-value
'programing' 카테고리의 다른 글
Excel 데이터를 Firebase에 저장하려면 어떻게 해야 하나요? (0) | 2023.04.11 |
---|---|
Unix 에서는, 현재의 디렉토리와 그 아래에 있는 모든 것을 어떻게 삭제합니까? (0) | 2023.04.11 |
Bash의 단일 대괄호와 이중 대괄호의 차이 (0) | 2023.04.11 |
트리거와 DataTrigger의 차이점은 무엇입니까? (0) | 2023.04.11 |
ContentControl과 ContentPresenter의 차이점은 무엇입니까? (0) | 2023.04.11 |