Как нарисовать вертикальную диаграмму площади?

 '%10s'    %'*'*x

анализируется как

('%10s' % '*') * x

, поскольку операторы % и * имеют одинаковый приоритет и группу слева направо [ docs ]. Вам нужно добавить круглые скобки, например:

x = 1
while x < 10:
    print '%10s' % ('*' * x)
    x = x + 1

Если вы хотите провести цикл по диапазону чисел, считается более идиоматичным использование цикла for, чем цикл while. Например:

for x in range(1, 10):
    print '%10s' % ('*' * x)

for x in range(0, 10) эквивалентно for(int x = 0; x < 10; x++) в Java или C.

0
задан Gerardo Furtado 17 January 2019 в 12:51
поделиться

1 ответ

Фактически, как вы говорите, в большинстве примеров диаграмм областей (я бы сказал, практически все) используется горизонтальная область , то есть версия, где базовая линия горизонтальна. [1133 ]

Тем не менее, очень легко создать вертикальную диаграмму площади (то есть с вертикальной базовой линией), используя D3. Для этого нужно использовать менее известные методы x1 и x0 генератора области .

Что происходит, так как почти все примеры в сети являются диаграммами горизонтальной области, вы видите только x, y1 и y0 как методы генератора области. Тем не менее, тем же способом только x устанавливает значение x0 в значение, а x1 - null, y устанавливает значение y0 и значение y1 - null.

При этом вам просто нужно установить вертикальную базовую линию с помощью x0. Проверьте этот пример:

const svg = d3.select("svg");
const data = [0, 80, 20, 210, 130, 270, 30, 110, 130, 0];
const areaGenerator = d3.area()
  .x0(0)
  .x1(d => d)
  .y((_, i) => i * 15)
  .curve(d3.curveMonotoneY)
const area = svg.append("path")
  .attr("d", areaGenerator(data))
  .style("fill", "teal");
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<svg></svg>

Короче говоря, это методы, которые вам нужны:

Горизонтальная диаграмма местности :

  • x: положение в базовой линии
  • y1: расстояние от базовой линии
  • y0: базовая линия

Диаграмма вертикальной области :

  • y: положение в базовой линии
  • x1: расстояние от базовой линии
  • x0: базовый уровень
0
ответ дан Gerardo Furtado 17 January 2019 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: