Alle,
Ich suche nach einer Möglichkeit, Fragen vor und nach der Umfrage nebeneinander in einem Balkendiagramm anzuzeigen. Die möglichen Antworten (stimme überhaupt nicht zu bis stimme völlig zu) sollten auf der x-Achse angezeigt werden, und die Anzahl der Empfänger, die in jeder dieser Kategorien geantwortet haben, sollte auf der y-Achse angezeigt werden. Ich möchte jedoch die Werte der einzelnen Antwortwerte nebeneinander anzeigen, um den Vorher- und Nachhereffekt der Übung darzustellen. Ich kann die Gruppen mit dem Graph Builder nebeneinander anzeigen, aber ich kann die Werte „stimme überhaupt nicht zu“ nicht gruppieren usw. Ich wäre für jede Hilfe sehr dankbar.
- Nathan
Unten finden Sie ein Skript, das eine Tabelle generiert, die Daten für 15 Fragen simuliert, drei für jedes der fünf Themen und 20 Befragte. Ich habe keine Ahnung, wie Ihre Daten organisiert sind. Diese Tabelle besteht aus 300 Zeilen (20 x 5 x 3) und Identifikatorspalten (Befragter, Frage-ID, Geschlecht, Thema, Vorher und Nachher).
Damit die Pre/Post-Balken nebeneinander angezeigt werden können, müssen die Daten gestapelt werden, d. h. Pre/Post ist eine Bezeichnung für jede Antwort.
Nachfolgend finden Sie eine Anzeige/Beispielanzeige. Das Skript zum Generieren einiger Daten, zum Stapeln der Daten und zum anschließenden Erstellen dieses Diagramms befindet sich unter dem Bild.

Names Default to Here(1);
//Simulate a table of survey responses 20 respondents 15 questions: 3 questions per topic and 5 topics
//Gender is a respondent group, Topic is a question group
//responses are the Likert Scale
dt = New Table("Survey",
New Column("Respondent", Character, Nominal),
New Column ("Gender", Character, Nominal),
New Column("Question ID", Character, Ordinal),
New Column("Topic", Character, Nominal),
New Column("Pre", Ordinal),
New Column("Post", Ordinal)
);
dt << add rows(300);
dt:Pre << Value Labels(
{1 = "Strongly Disagree", 2 = "Disagree", 3 = "Neutral", 4 = "Agree",
5 = "Strongly Agree"}
);
dt:Post << Value Labels(
{1 = "Strongly Disagree", 2 = "Disagree", 3 = "Neutral", 4 = "Agree",
5 = "Strongly Agree"}
);
dt:Respondent << Set Each Value( Right("00" || Char(Sequence(1,20,1,15)),3) );
dt:Question ID << Set Each Value("Q" || Right("0"||char(Sequence(1,15,1,1)),2));
dt:Gender[1::150]="F";
dt:Gender[151::300]="M";
tlist = {"Food", "Technology", "Environment", "Energy", "Education" };
dt:Topic << Set Each Value( tlist[Sequence(1,5,1,3)]);
dt:Pre << Set Each Value(Random Integer(1,5));
//create some interest
dt:Post << Set Each Value(If(:Gender=="F" & :Pre==5, 5,
:Gender=="F", :Pre + 1,
:Gender=="M" & :Pre==1, 1,
:Gender=="M", :Pre -1
));
dt:Topic << Set Property("Value Ordering",
{"Food", "Technology", "Environment", "Energy", "Education"}
);
//Step2: Stack the table - the label for the data will be Pre and Post and as an Overlay variable for
//GraphBuilder the bars will be side by side
dt_stck= dt << Stack(
columns( :Pre, :Post ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ), Output Table Name("Stacked Pre Post Survey")
);
//Make sure Pre is ordered before Post
dt_stck:Label << Set Property("Value Ordering", {"Pre", "Post"});
gb = dt_stck << Graph Builder( // draw graph
Size( 881, 707 ),
Show Control Panel( 0 ),
Graph Spacing( 6 ),
Variables( X( :Data ), Wrap( :Question ID ), Overlay( :Label ) ),
Elements(
Bar( X, Legend( 13 ), Summary Statistic( "N" ), Label( "Label by Value" ) )
),
SendToReport(
Dispatch(
{},
"",
ScaleBox,
{Min( 0 ), Max( 12.5 ), Inc( 1 ), Minor Ticks( 0 ),
Label Row( Show Major Grid( 1 ) )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
13,
Properties( 0, {Fill Color( -10592673 )}, Item ID( "Pre", 1 ) ),
Properties(
1,
{Fill Color( 37 ), Fill Pattern( "left slant heavy b" )},
Item ID( "Post", 1 )
)
)}
)
)
);
Dies wäre einfacher zu beantworten, wenn es mehr Details gäbe, zum Beispiel: Was meinen Sie mit Gruppen? Gruppen von Fragen oder Gruppen von Befragten.Oft ist es einfacher, Balken anzuordnen, wenn die Daten gestapelt sind.
Wenn Sie das Layout Ihrer Daten anzeigen können, ohne die spezifischen Werte anzuzeigen, wäre das hilfreich.