0 votes
in SoSci Survey (dt.) by s222544 (640 points)

Hallo Support Team,

gibt es die Möglichkeit eine Initial-Allokation aus einer Excel Datei (aus hunderten Möglichkeiten) zufällig auszuwählen (und eventuell grafisch darzustellen als Balkendiagramm) und dieselbe Allokation für denselben Probanden gemäß der Treatments zu verändern?

Soll ich dazu bereits Bildschirmfotos der Balkendiagramme als Anfangsallokation und nach den Treatments hochladen? Wie sieht es dann mit der Größe des Umfrageprojektes und der Ladezeit aus?

Vielen Dank im Voraus und viele Grüße!

1 Answer

0 votes
by SoSci Survey (326k points)

Sofern Ihre Initial-Allokation eine Textrepräsentation hat, können Sie diese in einem Zufallsgenerator hinterlegen und daraus zufällig (pro Interview) ziehen.

Wenn Sie etwas anderes meinen, müsste ich Sie bitten, das nochmal ausführlicher zu beschreiben.

Bildschirmfotos der Balkendiagramme

Im Prinzip können Sie mittels ChartJS auch dynamisch Charts im Fragebogen erstellen. Sie müssen nur ein wenig PHP- und JavaScript-Code basteln, um diese an das gezogene Treatment anzupassen.

Wie sieht es dann mit der Größe des Umfrageprojektes und der Ladezeit aus?

Die Ladezeit ist nur davon abhängig, was in einem Interview tatsächlich geladen wird. Als Speicherplatz stelen auf www.soscisurvey.de pro Befragungsprojekt 64 MB zur Verfügung.

by s222544 (640 points)
Vielen Dank für Ihre Antwort!

Die Initial-Allokation sind Prozentangaben. Es geht um die Initial-Allokation von Getreide und die Veränderung der Initial-Allokation aufgrund von verschiedenen Treatments.

Meine Frage ist, wie ich das am Besten mache? Durch placeholder (aber ich brauche eine Veränderung und der placeholder würde nur das Gleiche nochmals anzeigen - ohne Veränderung) oder gibt es eine bessere Lösung?

Bezüglich des ChartJS und PHP Code für die Charts wäre ich sehr dankbar für eine Anleitung!

Vielen Dank im Voraus und viele Grüße!
by SoSci Survey (326k points)
> Die Initial-Allokation sind Prozentangaben.

Das kann also problemlos im Zufallsgenerator hinterlegt und gezogen werden.

> Bezüglich des ChartJS und PHP Code für die Charts wäre ich sehr dankbar für eine Anleitung!


Auf der ChartJS-Website finden Sie reichtlich Beispiel-Code. Sobald Sie ein paar schönbe Charts sehen, müssen Sie nur noch klären, was genau Sie anhand der Prozentangabe verändern. Ob Sie dann noch ein wenig zusätzliches PHP oder JavaScript benötigen oder einfach nur mit einem Platzhalter arbeiten können, das hängt davon ab, was Sie ändern möchten.
by s222544 (640 points)
Vielen Dank für die Website, habe mich für ein Kreisdiagramm mit Prozentangaben entschieden.

Aufgrund von Treatments sollen sich die Prozentangaben verändern (z.B aus 40%,40%,20% soll 60%,20%,20% werden) mit der Frage, ob die veränderte (zweite) Allokation vom Probanden mittels Schieberegler geändert werden möchte (und wenn ja, soll mit den drei Schiebereglern die jeweilige Prozentangabe angepasst werden).

Brauche ich in diesem Fall einen Platzhalter oder PHP oder JavasScript?

Vielen Dank im Voraus!
by SoSci Survey (326k points)
> Brauche ich in diesem Fall einen Platzhalter oder PHP oder JavasScript?

Ich würde es mit PHP und Platzhalter lösen. Aber um JavaScript kommen Sie zur Anzeige des Charts - also zur Nutzung von ChartJS natürlich nicht umhin. Haben Sie schon ein Kreisdiagramm mit den Anteilen 40/40/20 erstellt? Dann haben Sie in einer Zeile im JavaScript-Code die Daten angegeben.

Diese Angabe würden Sie durch einen Platzhalter ersetzen und diesen dann aus dem Zufallsgenerator speisen. Diese könnte dann z.B. folgende Zettel/Codes enthalten:

1=40,40,20
2=60,20,20

Wenn Sie das Chart mit Schiebereglern quasi live anpassen möchten, ist das auch möglich. Aber dann müssen Sie ein wenig tiefer in JavaScript einsteigen. In der Anleitung von CartJS wird u.a. beschrieben, wie man die Daten dynamisch anpassen passen.
by s222544 (640 points)
Vielen Dank für die Antwort! Kann ich den JavaScript code im PHP einfach einfügen oder muss ich dabei noch auf etwas achten?
by SoSci Survey (326k points)
JavaScript- und HTML-Code sollten Sie immer als Text im Fragenkatalog anlegen und dann an geeigneter Stelle im Fragebogen einfügen.

PHP und JavaScript sind zwei komplett getrennte Baustellen, daher ist die Verwendung auch sehr unterschiedlich.
by s222544 (640 points)
Vielen Dank!
by s222544 (640 points)
Ihrer Erklärung folgend habe ich einen Textbaustein im HTML Format mit folgendem Text gefüllt:

<canvas id="myChart" width="400" height="400"></canvas>
<script type="text/javascript">
<!--
 
var chartCanvas = document.getElementById('myChart').getContext('2d');
var chart01 = new Chart(chartCanvas, {
    type: 'pie',
    data: {
        labels: %labels%,
        datasets: [{
            label: 'Anfangsallokation',
            data: %Data%,
            backgroundColor: [
                'rgba(255, 99, 132, 0.2)',
                'rgba(54, 162, 235, 0.2)',
                'rgba(255, 206, 86, 0.2)',
                
            ],
            borderColor: [
                'rgba(255, 99, 132, 1)',
                'rgba(54, 162, 235, 1)',
                'rgba(255, 206, 86, 1)',
             
            ],
            borderWidth: 1
        }]
    },
    options: {
        scales: {
            y: {
                beginAtZero: true
            }
        }
    }
});
</script>

Ich habe mich für die Prozentangaben schließlich für ein Kreisdiagramm entschieden.

Direkt auf der nächsten Seite nach dem Zufallsgenerator habe ich PHP Code mit
putList('EX07', value('EX06', 'csv'));  [EX06 ist der Zufallsgenerator und EX07 sind die internen Variablen.]
$labels = array('Roggen','Weizen','Hafer');

// Bibliothek ChartJS verfügbar machen
library('ChartJS');
 
// Testdaten (hier würde man Daten aus dem Datensatz auslesen)
$labels = ['Motivation', 'Engagement', 'Qualifikation'];
$ownData = [57, 42, 80];

 
// Textbaustein mit dem HTML-Code für das Chart einbinden
show('EX08', [
  '%labels%' => json_encode($labels),
  '%Data%' => json_encode($Data),

]);

Meine Frage lautet, wie und wo kann ich die if statements als Daten fürs Diagramm einspeisen?
So in der Art: if (value('EX06') == 01) {
  show('Diagramm Zeile 1');
} else {
}

Ich habe die Anleitungen https://www.soscisurvey.de/help/doku.php/de:create:feedback-visual?s[]=%2Adiagramm%2A#mehrere_werte_ii  und https://www.chartjs.org/docs/latest/ befolgt.

Vielen Dank im Voraus!
Viele Grüße!
by SoSci Survey (326k points)
Sie haben die passenden Prozentwerte in internen Variablen abgelegt, oder?

Dann könnte das z.B. wie folgt aussehen:

$ownData = [
  value('IV01_01'),
  value('IV01_02'),
  value('IV01_03')
];

Jetzt könnten Sie fünfmal IF verwenden, aber es geht noch eleganter. Nämlich rechnen.

$treatment = value('EX06');  // 1 bis 4
$basis = 3 * $treatment;  // 3, 6, 9 oder 12
$ownData = [
  value(id('IV01', $treatment + 1)),
  value(id('IV01', $treatment + 2)),
  value(id('IV01', $treatment + 3))
];

So, es könnte ein paar Minuten dauern, bis man diese Zeilen verstanden hat. Aber wenn man es verstanden hat, merkt man, wie cool programmieren ist ;)
by s222544 (640 points)
Vielen Dank für den Code. Bisher habe ich nur putList('EX07', value('EX06', 'csv'));
Muss ich die Zahlenkombinationen nochmals als interne Variablen abspeichern, sozusagen jeder Kombination bestehend aus drei Zahlen als interne Variable?
by SoSci Survey (326k points)
Das putList() kümmert sich um das Speichern in die internen Variablen. Und welche drei immer zusammengehören, das sehen Sie anhand der Item-Nummern auch ohne, dass es nochmal extra irgendwo steht. Aber natürlich können Sie die internen Variablen gleich passend benennen.

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...