SVG ile Nesnelerin İnterneti'ne (IoT) bağlı sensörlerden veri grafikleri çizin

SVG ile Nesnelerin İnterneti'ne (IoT) bağlı sensörlerden veri grafikleri çizin

SVG ile Nesnelerin İnterneti'ne (IoT) bağlı sensörlerden veri grafikleri çizin

Bu serideki bu makalede IoT'deki veri grafiklerini temsil etme kullanarak grafiklerin nasıl çizileceğini açıklarım. SVG dili. Diğer durumlarda olduğu gibi, makale aynı zamanda dile kısa bir giriş niteliğindedir.

İçindekiler

    HTML'de Nesnelerin İnterneti (IoT) kapsayıcısına bağlı sensörlerden gelen veri grafikleriCSS'deki görünümün Nesnelerin İnterneti (IoT) tanımına bağlı sensörlerden gelen verilerin grafikleriNesnelerin İnterneti'ne (IoT) bağlı sensörlerden gelen veri grafiklerinin SVG ile çizimiNesnelerin İnterneti (IoT)'ye bağlı sensörlerden gelen veri grafikleri JavaScript ile oluşturulması ve değiştirilmesi

    SVG biçimi

    SVG Scalable Vector Graphics'in (ölçeklenebilir vektör grafikleri, İngilizce) kısaltmasına karşılık gelir. Bu bir biçimlendirme dili dayanmaktadır XML ve bu, esas olarak, bir çizimin onu tanımlayan geometriye göre tanımlanmasına olanak tanır; Örneğin bir fotoğraf için kullanılan ve onu kodlamak için renkli piksellerden oluşan bir ızgara kullanan matris yönteminin aksine.

    bir çizimin içinde SVG Harici bir belgeye atıfta bulunan veya çizimin içine gömülmüş bir görüntü (bir piksel matrisi) de dahil edilebilir. SVG.

    Bu makalenin yazıldığı sırada geçerli olan dil sürümü SVG1.1 Her ne kadar versiyonun tanımı halihazırda geliştiriliyor olsa da SVG2. Mümkün olduğunca girişte anlatılanları, atıfta bulunsa bile yapmaya çalışacağım. SVG1.1 aynı zamanda hizmet etmek SVG2.

    Eğer çizim SVG Kodun içinde değil, ayrı bir belgede yer almaktadır. HTML (Bu çözümdeki IoT verilerini temsil etme teklifim onu ​​koda yerleştiriyor HTML) bir referansla başlamalıdır XML ve bir belge türü tanımı (DTD).

    Önceki kodun ilk satırında sürüm bildirilir XML kullanılan (1.0) karakter kodlaması (UTF-8) ve harici tanımlara ihtiyacınız olup olmadığını belirtir (standalone="no") veya tek başına bir belge mi (standalone="yes"). İkinci satır şunu ifade eder: belge türü tanımı (DTD)Bir sonraki sürümünde buna ihtiyaç duyulmayacak SVG.

    Çizimin tanımlandığı kod etiketlerin arasına eklenmiştir <sgv> y </sgv> bu da şunu gösteriyor ki, daha önce bahsettiğimiz gibi Nesnelerin İnterneti'ndeki veri grafikleri için kapsayıcı görevi gören HTML kodu, ölçümler, toplamın temsil edilen kısmı, oran ve ayrıca tür ve versiyon.

    Yukarıdaki örnek, kapsayıcıdaki (bir web sayfasındaki bir öğe, bizim durumumuzda) kullanılacak orijinal orana saygı gösterilmeden preserveAspectRatio="none". Ayrıca artık belgenin ilk içeriğini, aralarında yer alan yorumları da görebilirsiniz. <!-- y --> dayalı diğer formatlarda olduğu gibi XML.

    Tarafından seçilen koordinat sistemi SVG Yatay (X ekseni) ve dikey (Y ekseni) olarak yönlendirilir ve pozitif yönü Batı yazısının yönüdür, yani X ekseninin değerleri sağa doğru büyür ve Y ekseninin pozitif değerleri büyür. aşağı doğru.

    Grafiği SVG ile tanımlayın

    IoT'ye bağlı sensörlerimiz tarafından depolanan bilgilerin grafiğini tanımlamak için çizilen nesnenin türünü, geometrisini (koordinatlar, boyutlar...) ve görünümünü (kalınlık, renk...) belirtmemiz gerekecek. Bu makalenin örneği, çizgi parçalarını nesneyle birleştirerek yapılabilecek bir çizgi grafiğidir. line, en çok bağımsız elemanların grafiğini çizmek için veya çok bölümlü bir çizgiyle bir nesneyi çizmek için kullanışlıdır. path, birbirine bağlı hat serileri için daha pratiktir.

    eleman ile path Amaç aşağıdaki resimdeki gibi içi daha açık renkle doldurulmuş kapalı bir yolun üst kısmı açık bir yol ile doldurulmadan ve kalın bir çizgi ile çizilmesinden oluşan bir çizim yapmaktır.

    Bir çizgiyi tanımlamak için şu türden bir ifade kullanılır:

    Burada X1,Y1 doğru üzerindeki ilk noktanın koordinatları ve X2,Y2 ikinci noktanın koordinatlarıdır. Bir özellik kullanıldı stroke-width kalınlığını tanımlamak için kullanılır. Nesnelerin görünümünü tanımlamanın birkaç yolu vardır SVG, önceki gibi bireysel özellikleriyle veya özelliğiyle style hepsini bir araya getiren ve makale önerisinde kullanılacak yöntem budur.

    Yukarıdaki kod mülkte birleşiyor style değerleri stroke (çizginin rengi), stroke-width (çizginin kalınlığı) ve stroke-opacity (nesnenin opaklığı)

    Bir nesnenin açıklaması path forma sahip

    Yukarıdaki kod işlemleri kullanır SVG M, L y Z mülkün içinde d, sırasıyla "moveto" (şuraya git), "lineto" (hatta) ve "yolu kapat" (yolu kapat) anlamına gelir. Uygun olduğunda mutlak veya göreceli bir değeri belirtmek için büyük veya küçük harfle ifade edilebilirler (şu durumda: Zörneğin alakasız). Bu örnekte ihtiyacımız olmayacak, örneğin dairesel eğriler, eliptik eğriler, Bézier eğrileri... çizebileceğimiz birçok başka işlem vardır.

    Bu öneri bir alanı çevreleyebilecek çizgi grafikleri çizse de, noktaları işaretlemek veya alanları vurgulamak için diğer basit öğeleri çizmek yararlı olabilir. Mevcut olanlardan SVG Çokgenler (dolguyu da çizebileceğiniz), dikdörtgenler (belirli bir durum için daha uygun), elipsler ve daireler (elipsin belirli bir durumu olarak) ilginç olabilir. Bu elemanların söz dizimi aşağıdaki örnek kodda görülebilir.

    Önceki kodun görünümü aşağıdaki resimdeki gibi olacaktır (yukarıdaki örnekteki noktaları yeniden kullanabilmek için bazı hileler içerir)

    Çokgenin noktaları (polygon) özellikte belirtilmiştir points aralarındaki boşluklarla ayrılmış x,y koordinat çiftleri olarak. Elipsleri tanımlamak için (ellipse) özellikleri kullanılır cx (merkezin x koordinatı), cy (merkezin y koordinatı), rx (genişlik) ve ry (yüksek). İki yarıçap değeri yerine (yatay ve dikey yarıçap, rx y ry) Daire (circle) özelliğine sahip bir yarıçap ile tanımlanır r ve merkezin koordinatları cx y cy. Dikdörtgeni tanımlamak için (rectangle) sol üst köşenin koordinatları gösterilir (x e y) Genişlik (width) ve uzun boylu (height)

    Son olarak metni eklemek için nesne kullanılır text aşağıdaki gibi:

    Metnin konumu x ve y koordinatlarıyla gösterilir, yazı tipi özelliğe karşılık gelir font-family, boyutu font-size ve özelliğin rengi fill.

    HTML çizimleri entegre etmenizi sağlar SVG sayfanın başka bir öğesi olarak. Diğer nesneler gibi bu özelliği de kullanabilirsiniz. ID onlara daha sonra yönlendirilebilecekleri benzersiz bir tanımlayıcı atamak JavaScript onları manipüle etmek. Bakış açısından HTML, bir obje SVG aşağıdaki forma sahip olacaktır:

    Şu ana kadar gördüklerimizle bu teklifte aranan temel grafik tipini çizmek mümkün olacaktır ancak kabın (web sayfasının) görünümüne esneklik kazandırmak için grafiğin oranı etkilenecektir. (Örneğin preserveAspectRatio="none") öğelerin tarayıcı penceresindeki düzene uyarlamak için boyutunu değiştirerek HTML.

    Genel olarak konuşursak, grafiğin bulunduğu web sayfasını görüntüleyen tarayıcı penceresinin boyutunu değiştirirken davranışın iki alternatifi vardır: (1) grafiğin boyutunu koruyun SVG fazlalık varsa boş alan bırakmak veya eksikse kaydırma çubukları eklemek veya (2) grafiğin boyutunu değiştirmek SVG Web'i görüntüleyen tarayıcı penceresinin boyutunu değiştirmek için ritmik bir şekilde. İlk formülü seçerseniz, seçilen boyuta ve grafiğin değerlerine göre düzeltilmiş olsa da büyüklükleri tahmin edebilir ve mutlak ölçümlerle çizim yapabilirsiniz. Benim önerdiğim ikinci yolu seçerseniz, büyüklükler her zaman temsil edilen değerlerin yüzdeleridir. İkinci yöntemin avantajı ağa uyarlanabilirliği, dezavantajı ise grafiğe eşlik eden noktalar veya metinler gibi öğelerin çizilmesidir.

    Çizgi kalınlıklarında oluşabilecek deformasyonu düzeltmek için efektten yararlanılır. vector-effect="non-scaling-stroke" gerekli olan rotalarda (değeri olanlar) stroke ondan başka none). Nesneler için text Karşılaştırılabilir bir etki yoktur, bu nedenle bunların (kendileriyle ilişkili olanlarla birlikte) kap boyutundaki değişikliğin yarattığı yönün tersi yönde deforme edilmesi gerekir.

    dönüşümler SVG Bir grafikteki çeşitli metinlerin ve diğer nesnelerin tek bir gruba entegre edilebilmesi ve daha uygun bir şekilde hepsi için bir dönüşüm gerçekleştirilebilmesi için nesne gruplarına uygulanabilirler.

    Bir grubun parçası olan öğeler etiketlerin arasına dahil edilir <g> y </g>, bir dönüşüm atamak için bu özellik kullanılır transform ve bizim durumumuzla alakalı bir dizi işlem scaleyatay ve dikey büyütme faktörünün belirtildiği. Eğer değeri scale Birden büyük olması karşılık gelen ekseni genişletir ve birden küçük olması durumunda o eksen boyunca nesnelerin boyutunda bir azalma meydana gelir.

    Önceki örnekte, birinci ve ikinci metin, yatay ölçümlerinin yarıya indirilmesi ve dikey ölçümün, kullanılan 0.5 ve 2.0 değerlerine göre ikiye katlanmasıyla değiştirilir. scale(0.5,2.0)

    Serinin bir sonraki makalesi IoT'ye bağlı sensörlerden gelen veri grafiklerinin temsili kullanarak grafiklerin gerçek zamanlı olarak nasıl oluşturulacağını veya değiştirileceğini açıklar. JavaScript bu, sunucudan yüklenen son değerleri temsil ederken grafiğin bir animasyonunu görmenizi sağlayacaktır.

    Aşağıda bu teklif kullanılarak oluşturulan grafiklerin nasıl görüneceğine dair bir örnek verilmiştir.

    Yorum Ekle

    Kaçırmış Olabilirsiniz