2016-03-21 23 views
1

Kutupsal arsa olarak göstermek istediğim bir açı aralığı veri kümesine sahibim. Biçimi aşağıdaki gibidir:Gnuplot: Değişken aralıklarını gösteren polar çizim

1.181 0 0 31.8196 38.3883 141.612 148.18 180 180 211.82 218.388 321.612 328.18 

satıra aralıkların sayısı farklı olabilir herhangi bir aralığı olmayan çizgileri de vardır:

[Radius]\t[Range 1 lower] [Range 1 upper]\t[Range 2 lower] [Range 2 upper]... 

tipik bir veri hattı bu gibi görünüyor. İdeal olarak, belirli bir yarıçapta, her aralığın alt ve üst sınırı arasındaki açının doldurulduğu, arsa geri kalanı boş olduğu bir kutup çizimiyle sonuçlanmak istiyorum.

Aralıklar çakışmaz, ancak bazılarının alt ve üst sınırlarıyla aynı açıya sahip olması (örneğin yukarıdaki örnekte "0 0" aralığı), yine de görünmesi gerekenler (her zaman olduğu gibi) Tek nokta ve hesaplamada neredeyse hiç görülmeyen detaylar, deneyde gözlenen değerlerdir ...

Şimdilik, polar aralıklarla bir nokta bulutu oluşturması için söz konusu aralıkların çıkışını veren C-programını değiştirdim. Ben nokta ile komplo, ama ben gerçekten (çok) alt dosya boyutu anlamına gelir ve yakınlaştırma izin verecek gibi dolgulu alanları ile bir tür vectorial arsa tercih ediyorum ...

Herhangi bir yardım, takdir edilecektir, şimdiden teşekkürler,
Andreas

+0

Bir güncelleştirme verebilir misiniz? Bir gnuplot çözümü buldunuz mu yoksa başka bir çizim yazılımı mı buldunuz ya da farklı bir veri çıkışı mı kullandınız? – Joce

+0

Öneriniz için teşekkürler. Bu arada başka bir projeyle meşguldüm, bu yüzden şimdilik "nokta bulutu" çözümünü kullanmaya karar verdim. Yine de, cevabınız, arsa yapmak istediğim verinin özel niteliği nedeniyle, bu duruma geri döndüğümde oldukça yararlı olacaktır - aralıklar, soruyu sorduğumda aklıma gelmeyen, yarıçaplı tekdüze bir şekilde artmaktadır. Bu, (en azından) nokta bulutlarını belirli sayıda yarıçap için bir aralık listesine indirebileceğim anlamına gelir. Her neyse, doğrudan bir SVG yazma fikriniz de oldukça eğlendirici geliyor, çünkü şimdiye kadar vertex koordinatları var. – soulsource

cevap

0

Sadece gnuplot 4.4+ çözümleri var, ancak bunlar karmaşık olacak. Bunun bir nedeni, veri dosyalarının polar çiziminin polar enterpolasyonla değil, doğrusal enterpolasyon (uç noktalar arasındaki düz çizgiler) ile yapılmamasıdır. Verilerinizi doğrudan çizmek için C program çıktısını gnuplot komutlarını kullanmayı tercih ederim.

set polar 
set angles degrees 
plot (t<38.3883&t>31.8196)?1.181:1/0 with filledcurves above r=0, \ 
    (t<... 
Ben set arrow from 0,0 to r*cos(angle),r*sin(angle) ile ayrı ayrı 0 menzilli vakalarını tedavi etmek için tavsiye ederiz

.

Dosyanın çok daha küçük olacağından emin değilim, yine gnuplot r=1.181'daki dairenin arkına yaklaşmak için bir polyline oluşturacaktır. Gerçek daire yaylarıyla küçük bir dosya istiyorsanız, doğrudan C kodunuzdan svg kodu oluşturmak isteyebilirsiniz.