я пытаюсь реализовать функция 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}]
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}]
Уведомление, как данные не охватывают то же расстояние вдоль оси 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}]
я был futzing целую вечность, пытаясь найти правильную формулу так, чтобы параметры настройки BarSpacing
для пользовательской функции (не замеченный здесь) вызвали корректные интервалы и ширины панели так, чтобы горизонтальный диапазон графика не изменялся как , BarSpacing
делает.
, Что я пропускаю?
РЕДАКТИРОВАНИЕ: В ответ на belisarius это - пример того, куда я направляюсь. Это работает, отчасти (панели не находятся вполне в выравнивании со строкой, но это - вероятно, даты, которые я использую), но чехлам со сложенными панелями не удается вывестись на печать с панелями, где они должны быть, также, как и любой вид гистограммы самостоятельно, где существует несколько рядов. (Я довольно горжусь алгоритмом размещения маркировки даты: власть имущие на работе не хотят бросать тот взгляд.)
И вот тот, который просто не работает. Данные должны заполнить горизонтальную дальность. (Различные панели ширины являются преднамеренными - это - комбинация ежегодных и ежеквартальных данных.)
РЕДАКТИРОВАНИЕ 2
я помню, почему я не использовал Заполнение
в DateListPlot
для рисования панелей как в пакете Mike Honeychurch - если у вас есть что-нибудь кроме очень тощих панелей, они заканчивают тем, что имели верхний край в неправильном месте.
DateListPlot[{dateARList},
PlotStyle -> {AbsolutePointSize[6], Yellow}, Filling -> {1 -> 0},
FillingStyle -> {1 -> {{AbsoluteThickness[12], Darker[Red, 0.25]}}},
PlotRange -> All]