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

Опубликовано: 30 Декабря, 2022

Диаграмма — это графическое или графическое представление визуализации данных, основанное на определенных условиях. Доступны различные типы диаграмм, такие как гистограммы, линейные диаграммы, круговые диаграммы и т. д., которые используются для представления важных данных. В этой статье мы увидим, как создать линейную диаграмму с помощью HTML и CSS.

Линейная диаграмма — это диаграмма, которая используется для отображения данных в виде точек, соединенных прямыми линиями. Обычно он используется для отображения тех данных, которые время от времени непрерывно изменяются.

Шаги по созданию линейной диаграммы: здесь мы увидим шаги по созданию линейной диаграммы, применив немного математических знаний. Есть несколько точек, которые будут нанесены на оси координат, оси X и оси Y. Итак, предположим, что у нас есть 5 точек, т.е. (40,80), (80,120), (120,80), (160,120), (200,80) и возьмем по оси x и по оси y 250 единиц. Теперь мы нанесем эти точки на плоскость XY, используя следующие шаги:

Шаг 1: Создайте плоскость XY: мы будем использовать тег div и поместим селектор идентификатора с именем «диаграмма». После этого мы применим CSS, используя этот сектор идентификатора в этом div, чтобы сделать его похожим на плоскость XY.

<div id="chart"></div>

CSS :

#chart {
    border-bottom: 2px solid black;
    border-left: 2px solid black;
    margin-left:500px;
    margin-top: 100px;
    padding: 0;
    height: 250px;
    width:250px;
    position: relative;
  }

При реализации вышеуказанного стиля мы увидим следующий вывод:

Шаг 2: Отметьте, какая ось является осью X, а какая осью Y:

Мы будем использовать два тега <p> внутри этого div, содержащего оси x и y, и после этого расположим его соответствующим образом с помощью CSS.

<div id="chart">
    <p id="x1">x-axis</p>
    <p id="y1">y-axis</p>
</div>

CSS :

#x1, #y1 {
    position: absolute;
    font-size: larger;
    }
#x1 {
    bottom: -50px;
    left: 100px;
}
#y1{
    left: -60px;
    bottom: 110px;
    }

Здесь, в CSS, мы сделали позицию абсолютной, чтобы ее можно было позиционировать относительно своего родителя, а затем использовать для этого значения слева и снизу.

Шаг 3: Создайте точки и отрезки, соединяющие эти точки:

Мы сделаем 4 набора точек и отрезков. В этих наборах отрезок линии будет начинаться с точки, присутствующей в этом наборе, и идти к ближайшей точке. Мы также сделаем точку, которая будет нашей 5-й точкой. Эта точка не будет находиться ни в одном наборе с отрезками, потому что нам нужно всего 4 линии. Таким образом, из этой 5-й точки не будет исходить линий. Только одна линия придет и соединится с этой точкой. После этого наша задача — расположить эти точки и выровнять их в соответствии с заданными координатами.

Теперь мы создадим 5 <div> внутри основного <div>, который представлял оси координат. Затем из этих 5 div мы возьмем 4 div и сделаем два div внутри каждого из них. Где 1-й div будет представлять точку, а другой — линию. В 5-м div мы создадим только один div, который будет представлять 5-ю точку. Здесь мы не создавали div для строки, потому что нам нужно всего 4 строки. Нет необходимости в 5-й линии.

Теперь воспользуемся математикой, взяв две ближайшие точки: (40,80) и (80,120). Таким образом, длина линии между этими двумя точками будет гипотенузой прямоугольного треугольника, образованной разницей между их координатами x и y. См. ниже рис. 1. Теперь для наклона воспользуемся следующей тригонометрической формулой:

 tan(angle) = Perpendicular / Base

Итак, мы рассчитаем длину линии и ее наклон для каждого другого отрезка линии. Мы будем использовать эту информацию при стилизации каждого сегмента линии. Вот как будет выглядеть наш обобщенный HTML-код:

<div id="chart">
    <p id="x1">x-axis</p>
    <p id="y1">y-axis</p>
    <div>
        <div id="point..."></div>
        <div id="line..."></div>
    </div>
    ...
</div>

Шаг 4: Применение свойств CSS к этим точкам и линиям:

Теперь нам нужно использовать CSS, чтобы сделать эти точки и линии видимыми. В приведенном выше HTML-коде мы видим, что мы дали «id» каждому элементу div, представляющему линию и точку. Мы будем использовать эти селекторы идентификаторов для стилизации линий и точек. Давайте посмотрим CSS для одной точки и аналогично будет сделано для других точек:

 #point1 {
    background-color: violet;
    border-radius: 50%;
    bottom: 76px;
    left: 36px;
    position: absolute;
    height: 12px;
    width: 12px;
    z-index: 1;
  }

Теперь давайте посмотрим CSS для одной строки, и аналогично будет сделано для других строк:

#line1 {
    background-color: black;
    bottom: 80px ;
    height: 3px;
    left: 40px;
    position: absolute;
    transform: rotate(-45deg);
    transform-origin: left bottom;
    width: 56.57px;
  }

Примечание: Вы должны отметить, что rotate() по умолчанию будет вращать линию по часовой стрелке, если угол передан без какого-либо знака. Если вы пройдете угол со знаком -ve , то он будет вращаться против часовой стрелки. Например, если мы пройдем 45 градусов, то он повернется на 45 градусов по часовой стрелке, а если мы пройдем -45 градусов, то он пройдет 45 градусов против часовой стрелки.

Пример : В этом примере описывается создание линейного графика с помощью HTML и CSS.

HTML




<!DOCTYPE html>
<html>
  
<head>
    <title>Line Chart</title>
    <style>
    #x1,
    #y1 {
        position: absolute;
        font-size: larger;
    }
      
    #x1 {
        bottom: -50px;
        left: 100px;
    }
      
    #y1 {
        left: -60px;
        bottom: 110px;
    }
      
    #h1,
    #h3 {
        text-align: center;
        color: green;
    }
      
    #chart {
        border-bottom: 2px solid black;
        border-left: 2px solid black;
        margin-left: 600px;
        margin-top: 45x;
        height: 250px;
        width: 250px;
        position: relative;
    }
      
    #point1,
    #point2,
    #point3,
    #point4,
    #point5 {
        border-radius: 50%;
        position: absolute;
        height: 12px;
        width: 12px;
        z-index: 1;
    }
      
    #point1 {
        background-color: violet;
        bottom: 76px;
        left: 36px;
    }
      
    #point2 {
        background-color: pink;
        bottom: 116px;
        left: 76px;
    }
      
    #point3 {
        background-color: orange;
        bottom: 76px;
        left: 116px;
    }
      
    #point4 {
        background-color: greenyellow;
        bottom: 116px;
        left: 156px;
    }
      
    #point5 {
        background-color: green;
        bottom: 76px;
        left: 196px;
    }
      
    #line1,
    #line2,
    #line3,
    #line4 {
        height: 3px;
        position: absolute;
        transform-origin: left bottom;
        width: 56.57px;
    }
      
    #line1 {
        background-color: black;
        bottom: 80px;
        left: 40px;
        transform: rotate(-45deg);
    }
      
    #line2 {
        background-color: black;
        bottom: 120px;
        left: 80px;
        transform: rotate(45deg);
    }
      
    #line3 {
        background-color: black;
        bottom: 80px;
        left: 120px;
        transform: rotate(-45deg);
    }
      
    #line4 {
        background-color: black;
        bottom: 120px;
        left: 160px;
        transform: rotate(45deg);
    }
    </style>
</head>
  
<body>
    <h1 id="h1">GeeksforGeeks</h1>
    <h3 id="h3">Line Chart using HTML & CSS</h3>
    <div id="chart">
        <p id="x1">x-axis</p>
  
        <p id="y1">y-axis</p>
  
        <div>
            <div id="point1"></div>
            <div id="line1"></div>
        </div>
        <div>
            <div id="point2"></div>
            <div id="line2"></div>
        </div>
        <div>
            <div id="point3"></div>
            <div id="line3"></div>
        </div>
        <div>
            <div id="point4"></div>
            <div id="line4"></div>
        </div>
        <div>
            <div id="point5"></div>
        </div>
    </div>
</body>
</html>

Выход: