Ich habe eine einfaches Liniendiagram und wollte die Beschriftung der Koordinatenwerte der x-Achse anpassen.
D.h. ich wollte nur bestimmte Werte anzeigen. Ziel: Ich habe durchgängige Datumswerte und will nicht jedes Datum anzeigen, sondern immer nur den Montag.
Leider ist die Eigenschaft “Koordinatenbeschriftung” ausgegraut und ich kann den nicht anpassen.
Ich dachte ich hätte das in der Vergangenheit schon mal gemacht.
Wenn Sie eine echte Datumsachse haben übernimmt List & Label automatisch die Anpassung der Achsenskalierung um möglichst viele Werte in sinnvollen Intervallen darstellen zu können. Daher ist die Achse in diesem Fall nicht anpassbar, da auch interpolierte Achswerte vorkommen können, für die es dann ggf. keine Daten gibt, um Formeln zu evaluieren.
Ein Workaround könnte sein, statt eines Datumswertes einen Stringwert für die Achse zu verwenden (z.B. über ToString$(<Datumsfeld>). Beachten Sie in dem Fall dann aber, dass die Skalierung sich nicht mehr nach den Datumswerten richtet, alle übergebenen Dati werden der Reihe nach an der Achse einsortiert. Wenn es dann Tage ohne Werte gibt, werden diese Tage auf der Achse nicht angezeigt. Sie sollten in diesem Fall also darauf achten, dass wirklich jeder Tag in Ihrer Datenbasis vertreten ist und diese in aufsteigender Reihenfolge an das Chart übergeben werden.
Ah. Herzlichen Dank für die schnelle und kompetente Antwort.
Mir geht ein Licht auf.
Die normale Skalierung hier finde ich nicht so toll. Ich zeige begrenzt die letzten 120 Werte dort an. L&L macht daraus immer den Monatsersten und das sieht schon etwas komisch aus.
Da hätte man auch den Wochenanfang nehmen können (was ich jetzt vorhabe).
Stimmt - das Liniendiagram verhält sich da anders als vermutet. Hätte ich es gleich mal ausprobieren sollen .
Wir werden uns das einmal ansehen - vielleicht können wir den Wert im Falle einer String-Achse bearbeitbar machen, ich sehe erstmal nicht, warum das nicht gehen sollte. Ich melde mich hier noch einmal.
Es gibt noch eine gut versteckte Eigenschaft auf dem Reiter “Diagramm”:
Mit dieser Einstellung kann dann der Wert an der Achse als Formel vergeben werden, das klappt sogar mit interpolierten Werten, solange Sie sicherstellen, dass Sie nur LL.ChartObject.AxisCoordinate in der Formel verwenden. Bei mir habe ich es mit dieser Formel getestet:
if (Odd(Day(LL.ChartObject.AxisCoordinate)), LL.ChartObject.AxisCoordinate, Null())
Damit bekomme ich dann nur ungerade Dati dargestellt:
So jetzt habe ich es hinbekommen. Ist aber ganz schön tricky:
Diagramm → Lineare Datenachse → Nein
Rubrikenachse(x) → Koordinatenwert → Date$(…)
Andernfalls wird nicht jeder Rubrikenwert angezeigt. Bei einem Datum wird optimiert und ca. jeder dreißigste Eintrag angezeigt.
Rubrikenachse(x) → Koordinaten sortieren → Unsortiert
Wichtig, dass die Datenquelle die Datenpaare in der korrekten Folge liefert. (Evtl. bei den Objekteigenschaften die Sortierung setzen.
Rubrikenachse(x) → Koordinatenbeschriftung → If(Dow(Date(LL.ChartObject.AxisCoordinate))=2,Date(LL.ChartObject.AxisCoordinate),Null())
Das sorgt dafür, das der jeweilige Achsenwert nur für jeden Montag ausgegeben wird.
Super, vielen Dank auch für die ausführliche Beschreibung, das wird sicher auch nochmal anderen helfen. Ich werde parallel mal sehen, ob wir die Einteilung “jeden Montag” noch in die automatische Skalierung mit aufnehmen können, das würde ja durchaus Sinn ergeben. Wobei - andere Länder, andere Sitten, der Wochenanfang ist je nach Kultur unterschiedlich . Wenn es leicht wäre könnte es jeder .
Also - in jedem Fall vielen Dank für die interessante Frage und die tolle Beschreibung der Lösung bei Ihnen.
Der Wochenanfang ist aber in den Systemeinstellungen festgelegt. Genauso wie die Art und Weise erste KW gezählt wird…
Also kann man das schon allgemein hinbekommen…
Ja, so was schwebte mir vor. Dann müsste man sich nur noch zwischen Thread- oder Systemlocale entscheiden. Oder es eben einstellbar machen. Das Optimum wäre wohl wie bei der Formatierung eine Auswahl zwischen diesen Möglichkeiten.
Es könnte aber dann auch ein Schuss mit Kanonen auf Spatzen sein. Wir sehen uns das auf jeden Fall noch an.
Ich kenne kaum eine Anwendung, die mit der Thread-Locale arbeitet, funktioniert ja sowieso in vielen Fällen nicht richtig… ich denke, dass kann man ignorieren für den Anwendungsfall hier.
Da wären Sie überrascht - gerade Serverbetriebssysteme werden gerne mal auf Englisch aufgesetzt. Das Problem “meine Formatierung ist lokal prima, sobald ich die Anwendung deploye aber plötzlich falsch” ist eine absolute FAQ bei uns. Das lässt sich dann leicht durch Übergabe der gewünschten CultureInfo bzw. LCID lösen.
Das führt aber allmählich weit von Ihrer ursprünglichen Frage weg und soll keine Besserwisserei sein. Wie war das: der Pessimist ist ein Optimist mit Erfahrung .