Па
Ціту Уинтерс
Заўвага: Гэта кіраўніцтва мяркуе, што вы знаёмы з абедзвюх Gnuplot і Python мова праграмавання. Без якога-то разумення гэтых, вы будзеце зусім знікне. У нейкі момант, гэта павінна адбыцца. Gnuplot гэта выдатна, але настае час, калі ён проста не дастаткова мець уладу, што вам трэба гэта мець. Можа быць, вы хочаце радыкальна змяніць спосаб восі звяртаецца. Можа быць, вы проста хочаце зрабіць што-то простае, як змяніць колер сюжэтнай лініі, але не карціны. Можа быць, вам сапраўды трэба некалькі здаравенных матэматычных сімвалаў адлюстроўваецца на графіку. У нейкі момант вы патрапілі ў сцяну, за якой Gnuplot хутка перастае быць правільны адказ. Тое, што працуе лепш у такіх сітуацыях?
Ёсць шмат адказаў.
HippoDraw магутны і бясплатны, хоць і адносна невядомай. Некаторыя людзі, як
XGraph. Калі вы, як і я, праграміст Python, то вы можаце быць гатовыя ісці на менш зручны, але больш кіраванай рашэнне. Калі так, то
PYX (вымаўляецца як "Пікс") з'яўляецца адной з магчымасцяў.
На момант напісання артыкула (студзень 2006), PYX па-ранейшаму пре-рэліз праграмнага забеспячэння. Рэклама версіі 0.8.1, Ёсць вызначана некаторыя грубыя края па гэтым пытанні. Выкарыстаньне PYX можа вельмі добра патрабуюць значных тыкаючы ў аб'екты Python, якія складаюць аснову PYX. Аднак, я магу засведчыць, што гэты час выдаткавана нездарма: яна займае каля 3 ці 4 гадзіны, каб перайсці ад першай ўстаноўцы PYX для генерацыі графаў, якія былі (на мой погляд) значна пераўзыходзіць тое, што я мог бы атрымаць з Gnuplot, мой нармальны ісці -для графічнага адлюстравання.
Змест
Асновы выкарыстання Некалькі участкаў Участак Стылі Памылка Бары Пазнак восі і шалі Графік загалоўках Пабудова функцый Закрыццё Notes Асновы выкарыстання
Магчыма, найбольш распаўсюджанай, што трэба зрабіць у Gnuplot з'яўляецца ўчастак просты файл дадзеных. (Файлы дадзеных Прыклады даступныя
тут і
тут ).
Gnuplot> ўчастка "data.dat"

Як мы гэта робім эквівалент у PYX? Гэта залежыць ад таго, як эквівалентныя вы хочаце быць: па змаўчанні ў гэтых двух асяроддзях розныя. Так мы першы канцэрт найпросты граф жа даступныя ў PYX, а затым прытрымлівацца з прыняццем графа выглядаць эквівалентна Gnuplot.
from pyx import *
g = graph.graphxy(width=8)
g.plot(graph.data.file("data.dat", x=1, y=2))
g.writePDFfile("test")
Заўвага: PYX не мае магчымасці адлюстравання, так што вы павінны будзеце напісаць PDF або EPS, а затым выкарыстоўваць ваш любімы глядач для тых фарматаў файлаў. Ёсць тры асноўныя адрозненні паміж гэтымі двума ўчасткамі:
- Колер - Gnuplot па змаўчанні друку першы ўчастак у чырвоны, другі ў зялёны і г.д. (Дарэчы: Гэта не на ~ 3% ад насельніцтва, што чырвона-зялёны дальтоник.) PYX па змаўчанні чорны і белы.
- Ключ - Gnuplot па змаўчанні аказання ключ для кожнай радкі ў сюжэт, PYX няма.
- Памер малюнка - Gnuplot па змаўчанні старых рэзалюцый кампутар-манітор, як 640x480 з суадносінамі 1.33:1. PYX па змаўчанні палотны з Залатое сячэнне ў ~ 1.618:1. (Гэта, верагодна, будзе менш важная для большасці, але я ўключыць яго для паўнаты.)
Цяпер мы будзем займацца іх устараненнем, па аднаму за раз.
Ключавыя
Даданне ключавых вельмі проста. Проста спытаеце graphxy аб'ект, каб уключыць адзін:
from pyx import *
g = graph.graphxy(width=8, key=graph.key.key())
g.plot(graph.data.file("data.dat", x=1,y=2))
g.writePDFfile("test")

Па праўдзе кажучы, малаверагодна, што вы хочаце па змаўчанні назва для лініі перадачы даных, якая прадастаўляецца ў такіх ўчастка. Настройка тытул у Gnuplot будзе:
gnuplot> plot "data.dat" title "My Data"
Аналагічным чынам, у PYX:
from pyx import *
g = graph.graphxy(width=8, key=graph.key.key())
g.plot(graph.data.file("data.dat", x=1, y=2, title="My Data"))
g.writePDFfile("test")
Заўвага: Тэкст у PYX цяперашні час набрана па LaTeX. Гэта мае свае перавагі і недахопы. Калі вы хочаце для свайго назвы з улікам матэматычныя сімвалы, грэцкія сімвалы, і г.д., то проста ўвядзіце правільную формулу LaTeX. З іншага боку, калі вы жадаеце выкарыстоўваць "%" знак, будзьце асцярожныя: гэта каментар у LaTeX і, такім чынам вы будзеце выклікаць сур'ёзнае замяшанне ў PYX. Іншая рэч, каб быць пільнымі ў тым, што Python могуць інтэрпрэтаваць LaTeX сімвалаў няправільна: "\ Тау" у Python будзе інтэрпрэтаваць як "\ T" (знак табуляцыі), а затым "Au". Добрым рашэннем для гэтага з'яўляецца "сыры радок" асаблівасць у Python: прадмова вашыя радкі з 'R': R "\ Тау", то не пазбегнуць пашырэння характару будзе выкананая.
Стаўленне
Калі вы сапраўды хочаце стаўленне графіцы прадыктавана манітор дазволам ад 90-х гадоў, а не грэцкай архітэктуры, вам неабходна змяніць стаўленне графа аб'екта. (Я прапаную пакінуць па змоўчванні.)
from pyx import *
g = graph.graphxy(width=8, ratio=4./3, key=graph.key.key())
g.plot(graph.data.file("data.dat", x=1, y=2, title="My Data"))
g.writePDFfile("test")
Колер
Змяненне колеру на самай справе змены стыляў. Ўстаноўкі, якія найбольш блізка імітуе змаўчанні Gnuplot з'яўляецца нешта накшталт гэтага:
from pyx import *
g = graph.graphxy(width=8, ratio=4./3, key=graph.key.key())
g.plot(graph.data.file("data.dat", x=1, y=2, title="My Data"),
styles=[graph.style.symbol(symbolattrs=[color.gradient.Rainbow])])
g.writePDFfile("test")
Тут мы даем
спіс стыляў. Стылі спецыяльныя аб'екты для PYX, знойдзеныя ў графе модуль. (Выкарыстаньне
реж і
дапамогі каманднага радка Python можа быць вельмі павучальным тут.) У гэтым выпадку адзінае, што мы даем з'яўляецца інструкцыяй да выкарыстання знакаў. Канструктар для знака можа прымаць найменны аргумент,
symbolattrs, што зноў-такі прымае спіс атрыбутаў, якія могуць быць выкарыстаны для змены адлюстравання знака. У гэтым выпадку мы даем
градыенту аб'екта. працу градыенту аб'екта з'яўляецца вяртанне колерам намаляваць наступны радок цалі Большасць градыенты просты двухколерны градыент (зрабіць каталог () на color.gradient бачыць наканаваных варыянтаў), але Rainbow крыху больш складана, чым, і дае вынікі ў больш разнастайных кветак. Ён не будзе імітаваць выбары Gnuplot каляровы цалкам, але гэта сапраўды не дрэнна. (Я маю на ўвазе сапраўды: 6-й колер у Gnuplot жоўты?)
Некалькі участкаў
Такім чынам, мы можам імітаваць простыя, аднаго ўчастка Gnuplot графа. Пераходзячы на некалькі участкаў.
gnuplot> plot "data.dat" title "Data 1", "data2.dat" title "Data 2"

Некалькі участкаў у PYX гэта эквівалентна проста:
from pyx import *
# Initialize graph object
g = graph.graphxy(width=8, ratio=4./3, key=graph.key.key())
# These are the data lines we want to plot.
data = [graph.data.file("data.dat", x=1, y=2, title="Data 1"),
graph.data.file("data2.dat", x=1, y=2, title ="Data 2")]
# Plot it
g.plot(data,
styles=[graph.style.symbol(symbolattrs=[color.gradient.Rainbow])])
# Write the output
g.writePDFfile("test")
Як аб змяненні стыляў друку ад кропкі да лініі або linespoints?
gnuplot> plot "data.dat" title "Data 1" with lines, "data2.dat" title "Data 2" with linespoints
Гэта становіцца трохі больш складаным, але не так ужо дрэнна. Вернемся да змове адной лініі на час. Гэта
не самы просты выклік для гэтага (я дадаю ў некалькі дадатковых опцый), але я карыстаюся гэтай магчымасцю, каб паказаць некалькі дадатковых функцый, якія вы павінны мець магчымасць абагульняць.
from pyx import *
# Initialize graph object
g = graph.graphxy(width=8, ratio=4./3, key=graph.key.key())
# Plot the first line
g.plot(graph.data.file("data.dat", x=1, y=2, title="Data 1"),
styles=[graph.style.line([color.rgb.red,
style.linestyle.solid,
style.linewidth.thick])])
# Plot the second line
g.plot(graph.data.file("data2.dat", x=1, y=2, title ="Data 2"),
styles=[graph.style.line([color.rgb.green,
style.linestyle.solid,
style.linewidth.thick]),
graph.style.symbol(symbolattrs=[color.rgb.green])])
# Write the output
g.writePDFfile("test")
Даданне хібнасці ў PYX даволі лёгка, і дае значна большы кантроль над тым, як пункту ўзятыя (з або без сімвалаў, розны колер планкі хібнасцяў супраць сімвалаў, памер сімвалаў і г.д.).
У гэтым раздзеле выкарыстоўваецца гэтым, як файл дадзеных.
plot "error.dat" using 1:2:3 with yerrorbars title "Samples"
from pyx import *
g = graph.graphxy(width=8)
g.plot(graph.data.file("error.dat", x=1, y=2, dy=3),
styles=[graph.style.errorbar(errorbarattrs=[color.rgb.red]),
graph.style.symbol(graph.style.symbol.circle, size=0.05,
symbolattrs=[color.rgb.red])])
g.writePDFfile("test.pdf")
Зноў жа, агульных і лёгка асабліва ў Gnuplot, што апынуліся амаль так жа лёгка ў PYX. Дазваляе дадаць цэтлікі для нашых графаў таму мы ведаем, што восі прадстаўляюць.
gnuplot> set ylabel "# Roaches"
gnuplot> set xlabel "Time (days)"
gnuplot> plot "data.dat" title "Data 1" with lines, "data2.dat" title "Data 2" with linespoints
І эквівалент у PYX. Адзінае, каб не ўпусціць тут званкоў да LaTeX.
from pyx import *
# Initialize graph object
g = graph.graphxy(width=8, ratio=4./3, key=graph.key.key(),
x=graph.axis.linear(title="Time (days)"),
y=graph.axis.linear(title="$\#$ Roaches"))
# Plot the first line
g.plot(graph.data.file("data.dat", x=1, y=2, title="Data 1"),
styles=[graph.style.line([color.rgb.red,
style.linestyle.solid,
style.linewidth.thick])])
# Plot the second line
g.plot(graph.data.file("data2.dat", x=1, y=2, title ="Data 2"),
styles=[graph.style.line([color.rgb.green,
style.linestyle.solid,
style.linewidth.thick]),
graph.style.symbol(symbolattrs=[color.rgb.green])])
# Write the output
g.writePDFfile("test")
А што, калі мы хочам падняць дыяпазоны для участкаў мала?
gnuplot> set ylabel "# Roaches"
gnuplot> set xlabel "Time (days)"
gnuplot> set xrange [0 to 35]
gnuplot> set yrange [0 to 105]
gnuplot> plot "data.dat" title "Data 1" with lines, "data2.dat" title "Data 2" with linespoints
Зноў жа, у PYX, вельмі лёгка.
from pyx import *
# Initialize graph object
g = graph.graphxy(width=8, ratio=4./3, key=graph.key.key(),
x=graph.axis.linear(min=0, max=35, title="Time (days)"),
y=graph.axis.linear(min=0, max=105, title="$\#$ Roaches"))
# Plot the first line
g.plot(graph.data.file("data.dat", x=1, y=2, title="Data 1"),
styles=[graph.style.line([color.rgb.red,
style.linestyle.solid,
style.linewidth.thick])])
# Plot the second line
g.plot(graph.data.file("data2.dat", x=1, y=2, title ="Data 2"),
styles=[graph.style.line([color.rgb.green,
style.linestyle.solid,
style.linewidth.thick]),
graph.style.symbol(symbolattrs=[color.rgb.green])])
# Write the output
g.writePDFfile("test")
Вызначана адна з найменш элегантны Gnuplot-эквівалентаў для PYX, дадаўшы загаловак граф на самай справе выкарыстоўваючы ў магчымасці PYX дадаць тэкст у любым месцы на графіцы. Не падабаецца клавішы па змоўчванні? Зрабіць новы. Хочаце, каб дадаць цэтлікі прама на графіку? Зрабіце гэта. Не хачу вертыкальнага тэксту для Y-лэйбл? Зрабіць гэта ўручную. Здольнасць набіраць тэкст прама на графіку можа быць вельмі зручна, але што адбываецца з цаной: гэта трохі нязграбна час ад часу.
gnuplot> set ylabel "# Roaches"
gnuplot> set xlabel "Time (days)"
gnuplot> set xrange [0 to 35]
gnuplot> set yrange [0 to 105]
gnuplot> set title "Effectiveness of Brand X Roach Bait"
gnuplot> plot "data.dat" title "Data 1" with lines, "data2.dat" title "Data 2" with linespoints
from pyx import *
# Initialize graph object
g = graph.graphxy(width=8, ratio=4./3, key=graph.key.key(),
x=graph.axis.linear(min=0, max=35, title="Time (days)"),
y=graph.axis.linear(min=0, max=105, title="$\#$ Roaches"))
# Plot the first line
g.plot(graph.data.file("data.dat", x=1, y=2, title="Data 1"),
styles=[graph.style.line([color.rgb.red,
style.linestyle.solid,
style.linewidth.thick])])
# Plot the second line
g.plot(graph.data.file("data2.dat", x=1, y=2, title ="Data 2"),
styles=[graph.style.line([color.rgb.green,
style.linestyle.solid,
style.linewidth.thick]),
graph.style.symbol(symbolattrs=[color.rgb.green])])
# Now plot the text, horizontally centered
g.text(g.width/2, g.height + 0.2, "Effectiveness of Brand X Roach Bait",
[text.halign.center, text.valign.bottom, text.size.Large])
# Write the output
g.writePDFfile("test")
Адным з прыкладаў, якія чытач ўклад быў графічны пункту вызначаецца файл, але змяненне функцыянальна. Напрыклад, у Gnuplot:
plot "data.dat" title "Data 1" with lines title "Data 1"
And it is roughly the same in PyX (thanks to Kipton Barros for the
tip):
from pyx import *
# Initialize graph object
g = graph.graphxy(width=8, ratio=4./3, key=graph.key.key())
g.plot(graph.data.file("data.dat", x=1, y="$2/2", title="Data 1"),
styles=[graph.style.line([color.rgb.red,
style.linestyle.solid,
style.linewidth.thick])])
g.writePDFfile("test")
Іншым часта выкарыстоўваным для Gnuplot з'яўляецца ўчастак функцыі, будзь то чыста матэматычных і найбольш прыдатную для вашых дадзеных. (Варта адзначыць, што PYX не заменіць "ўпісваецца" ў Gnuplot магчымасці пры рабоце з найбольш прыдатную функцый.)
set xrange [0:10]
set yrange [0:10]
f(x) =.2 * x**2 - x + 1
plot f(x)
Эквівалент у PYX лёгка, калі вы ішлі ўздоўж, хоць, вядома, больш друкаваць.
from pyx import *
# Initialize graph object
g = graph.graphxy(width=8,
key=graph.key.key(),
x=graph.axis.linear(min=0, max=10),
y=graph.axis.linear(min=0, max=10))
# Plot the function
g.plot(graph.data.function("y(x) =.2 * x**2 - x + 1"),
styles=[graph.style.line([color.rgb.red,
style.linestyle.solid,
style.linewidth.thick])])
# Write pdf
g.writePDFfile("test.pdf")
Як пра параметрычных участкаў?
set parametric
set xrange[-5:5]
set yrange[-5:5]
set trange[0:10]
unset key
x(t) = cos(t) * t**.5
y(t) = sin(t) * t**.5
plot x(t),y(t)
У PYX, мы пачынаем бачыць некаторыя сілы Python паказаны да канца.
import math
def x(k):
return math.cos(k) * k**.5
def y(k):
return math.sin(k) * k**.5
# Initialize graph object
g = graph.graphxy(width=8,
x=graph.axis.linear(min=-5, max=5),
y=graph.axis.linear(min=-5, max=5))
# Plot the function
kMin = 0
kMax = 10
# The "context" parameter is a Python context, allowing us
# to use functions locally defined in this function. OR
# we can make the string "x, y = x(k), y(k)" into a more complex
# Python expression (it is being passed to eval() under the hood.)
g.plot(graph.data.paramfunction("k", kMin, kMax,
"x, y = x(k), y(k)",
context=locals()),
styles=[graph.style.line([color.rgb.red,
style.linestyle.solid,
style.linewidth.thick])])
# Write pdf
g.writePDFfile("test.pdf")
Або як пра што-то, што Gnuplot не можаце зрабіць: некалькі параметрычных крывых з рознымі дыяпазонамі? (Gnuplot толькі дазваляе дыяпазон для параметрычнага
T значэнне ў той час, таму ўсе функцыі ладзіцца павінны быць напісаны з той жа вобласці на ўвазе. PYX не мае такіх абмежаванняў.)
import math
def x(k):
return math.cos(k) * k**.5
def y(k):
return math.sin(k) * k**.5
# Initialize graph object
g = graph.graphxy(width=8,
x=graph.axis.linear(min=-5, max=5),
y=graph.axis.linear(min=-5, max=5))
# Plot the function
kMin = 0
kMax = 10
g.plot([graph.data.paramfunction("k", kMin, kMax,
"x, y = x(k), y(k)",
context=locals()),
graph.data.paramfunction("k", 0, 20,
"x, y = 3+x(k), 1-y(k)",
context=locals())],
styles=[graph.style.line([color.gradient.RedBlue,
style.linestyle.solid,
style.linewidth.thick])])
# Write pdf
g.writePDFfile("test.pdf")
Пры дастатковай лінейнага маштабавання параметрычных велічынь, Gnuplot можа быць ўгаварыў ў змове графа, як вышэй.
Ну, што вось-вось зробіць гэта за асновы выкарыстання Gnuplot. З іншага боку, што ледзь драпіны паверхні PYX. Пры дэманстрацыі ўмове, што вы павінны быць у стане пераўтвараць любы з вашых старых участкаў Gnuplot у бліскучых новых участкаў PYX з адноснай лёгкасцю, і, магчыма, зрабіць іх значна лепш у гэтым працэсе. Адным з галоўных пераваг з'яўляецца тое, што PYX сапраўды Python, і, такім чынам вы можаце (і павінны!) Напісаць функцыі, цыклы, умовы і г.д. пры працы з вялікімі пабудовы задач. Такім чынам, можна значна паменшыць колькасць кода, неабходнага для стварэння сваіх графаў. Акрамя таго, PYX дае значна больш свабоды для змены стыляў ліній, сякеры, і многае іншае. Маркіроўка з'яўляецца магутным сродкам. Вазьміце час, каб вывучыць PYX (на жаль, перакладчык Python з'яўляецца лепшым спосабам зрабіць гэта), і паглядзець, якія новыя выкарыстоўвае вы можаце прыдумаць, што вы ніколі б не паспрабаваць у Gnuplot.Popular Linkswordpress web hosting, perl fortran info, palaeobotanists translated, best web hosting, vub laboratory, statistical thought info, source code central, editorial policy , self organizing systems, arial font information, keysigning party, berstain books, using сedilla printer, vps webhosting, minidisc coding