, Как опция BarSpacing действительно реализована в Mathematica?

я пытаюсь реализовать функция DateListBarChart, которая берет датированные данные и производит столбиковую диаграмму с теми же размещениями как DateListPlot. Важно, чтобы они отобразили данные на графике в той же горизонтальной позиции, если дали те же данные, таким образом, они могут быть объединены с помощью Шоу . Я нахожу трудным получить параметры настройки для право BarSpacing так, чтобы горизонтальная дальность графика не изменялась, и панели остаются дома по существу то же место.

я не мог вывести корректное масштабирование так, чтобы BarSpacing-> {0.2 0.3} результаты в 20% длины оси X, доступной для той группы панелей, были подняты с интервалом между панелями в той группе, и 30% как располагающий с интервалами между группами панелей. Для технических причин я делаю это передающими вещами к RectangleChart. Согласно документации, BarSpacing рассматривают как абсолютные единицы в RectangleChart. Очевидно, абсолютные размеры разрывов должны быть меньшими, если существует больше рядов, и панели должны быть более узкими.

Некоторые примеры:

arList = FoldList[0.9 #1 + #2 &, 0.01, RandomReal[NormalDistribution[0, 1], 24]]

{0.01, 0.334557, 2.02709, 1.1878, 1.9009, 3.08604, 2.36652, 3.04111, 
3.32364, 3.22662, 3.12626, 2.59118, 1.69334, 1.21069, 0.23171, 
0.689415, -0.852649, -0.124624, 0.58604, -0.481886, 0.221074, 
-0.300329, 2.36137, 0.427789, -1.47747}

dists = RandomChoice[{3, 4}, Length[arList]]
{4, 4, 4, 3, 4, 3, 4, 3, 4, 4, 3, 4, 4, 3, 4, 4, 4, 4, 3, 4, 3, 3, 3, 3, 3}

Результаты в:

RectangleChart[Transpose[{dists - 0 - 0/2, arList}], 
 PlotRange -> {{0, 100}, {-2, 4}}, ChartStyle -> EdgeForm[None], 
 Frame -> True, GridLines -> Automatic, BarSpacing -> {0, 0}]

enter image description here

RectangleChart[Transpose[{dists - 0.7 - 0.5/2, arList}], 
 PlotRange -> {{0, 100}, {-2, 4}}, ChartStyle -> EdgeForm[None], 
 Frame -> True, GridLines -> Automatic, BarSpacing -> {0.7, 0.5}]

enter image description here

Уведомление, как данные не охватывают то же расстояние вдоль оси X как предыдущий пример.

Это становится еще более грязным при попытке строить диаграмму нескольких рядов (то же в этом примере для иллюстрации).

RectangleChart[
 Transpose[{{dists - i/2 - j/2, arList}, {dists - i/2 - j/2, 
  arList}}, {2, 3, 1}], PlotRange -> {{0, 180}, {-2, 4}}, 
 ChartStyle -> EdgeForm[None], Frame -> True, Ticks -> None, 
  GridLines -> Automatic, BarSpacing -> {i, j}]

enter image description here

я был futzing целую вечность, пытаясь найти правильную формулу так, чтобы параметры настройки BarSpacing для пользовательской функции (не замеченный здесь) вызвали корректные интервалы и ширины панели так, чтобы горизонтальный диапазон графика не изменялся как , BarSpacing делает.

, Что я пропускаю?

РЕДАКТИРОВАНИЕ: В ответ на belisarius это - пример того, куда я направляюсь. Это работает, отчасти (панели не находятся вполне в выравнивании со строкой, но это - вероятно, даты, которые я использую), но чехлам со сложенными панелями не удается вывестись на печать с панелями, где они должны быть, также, как и любой вид гистограммы самостоятельно, где существует несколько рядов. (Я довольно горжусь алгоритмом размещения маркировки даты: власть имущие на работе не хотят бросать тот взгляд.)

enter image description here

И вот тот, который просто не работает. Данные должны заполнить горизонтальную дальность. (Различные панели ширины являются преднамеренными - это - комбинация ежегодных и ежеквартальных данных.)

enter image description here

РЕДАКТИРОВАНИЕ 2

я помню, почему я не использовал Заполнение в DateListPlot для рисования панелей как в пакете Mike Honeychurch - если у вас есть что-нибудь кроме очень тощих панелей, они заканчивают тем, что имели верхний край в неправильном месте.

DateListPlot[{dateARList}, 
 PlotStyle -> {AbsolutePointSize[6], Yellow}, Filling -> {1 -> 0}, 
 FillingStyle -> {1 -> {{AbsoluteThickness[12], Darker[Red, 0.25]}}}, 
 PlotRange -> All]

enter image description here

7
задан Bo Persson 4 September 2011 в 12:42
поделиться