Python:使用tricontourf可视化smith ch上的数据

2024-05-23 22:07:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用matplotlib和paulstaerke的pySmithPlot来可视化放大器的负载拉动EVM数据。你知道吗

我有一个EVM值(z值)对应于一个复值(r+jx)绘制在史密斯图上。你知道吗

我的第一种方法是用一个与我的EVM值对应的标准化颜色图中的特定颜色值分别绘制每个点:

from matplotlib import rcParams, pyplot as pp, cm
from matplotlib.colors import Normalize
from smithplot import SmithAxes

# incomplete data to fit character limit
s_list = ((0.06750524040275149+0.0475462981064337j), (-0+0j), (0.07131825775145742+0.020016856926802707j), (-0.035046199782568566+0.06525896360448652j), (0.016344222792771514+0.044726279494782216j), (-0.055097379476289024-0.04951007195285836j), (-0.039269248137371864-0.06280839594080494j), (0.009069599818238098+0.04209626480333753j), (0.026219470880681703+0.039750635754440614j), (0.0463048519677774-0.011110102627219532j), (0.002956600045202907-0.04752717340972251j), (-0.04505365229297129-0.015418888131417613j), (-0.025990756811617107+0.039900554588934066j), (0.028278538363094994+0.03831315654174285j), (0.04425343053771805-0.017584299297626057j), (-0.007144947206859041-0.047079968410740525j), (-0.04729349983576223-0.005558648165686143j), (-0.024670667375611462+0.040729987323679204j), (0.03477016957118192+0.0325362721302915j), (0.03954302149187658-0.02653155003836216j), (-0.012855348432859438-0.04585099467639614j), (-0.047400959571129386+0.004552222301391495j), (-0.009547613739337747+0.046652082140345434j), (0.029619898529386717+0.03728585934713002j), (0.030204300285283613-0.03681404542320152j), (-0.014802739292848891-0.04525983435202868j), (-0.047472462061783925+0.0037335026366153708j), (-0.01673604675586876+0.04458114439009505j), (0.04092291714359706+0.024349302836085843j), (0.029359365873670145-0.037491350090935655j), (0.012926127288015225-0.02610079599465136j), (-0.04547493625431794+0.014128123329403948j), (-0.004582691211946055+0.04739802356007137j), (0.044499115047253304+0.016952948302771494j), (0.014145511579109272-0.04546953043864005j), (-0.03793125524890321-0.02878877509356175j), (0.03145678651001072+0.0357497451544586j), (0.04609123261375257-0.011965449105239619j), (-0.01115192197932469-0.046294798112878545j), (-0.045878254193924585-0.01275772269109065j), (-0.0327655964478404+0.03455415149533262j), (0.039396969849217735+0.02674794315166975j), (0.04525030963980502-0.014831829747097878j), (-0.01673604675586876-0.04458114439009505j), (-0.04475673479183557-0.016260639191570055j), (-0.01615366993021582+0.0447954533845877j), (0.043408164482012165+0.01957817541160835j), (0.04268017144371179-0.021118159523985432j), (-0.015063777099855827-0.045173624114420885j), (-0.04754897348967296+0.002582405123815065j), (-0.011474240439819126+0.04621596588273741j), (0.03759048848829734+0.02923232579450896j), (0.0302589634431342-0.03676912872903296j), (-0.017866527396459216-0.04414024121973849j), (-0.04639744360488921+0.010716852293292707j), (-0.004308986628861423+0.04742368954834094j), (0.04112874736725339+0.023999996586370087j), (0.030158057289823827-0.036851937217042365j), (-0.025990756811617107-0.039900554588934066j), (-0.044736284658344436+0.016316817432106823j), (0.00010136002720359482+0.04761893974344676j), (0.04595076326152924+0.012494040652568046j), (0.024199999616510648-0.041011385183946335j), (-0.031758955316774404-0.03548157907044521j), (-0.042826917406011945+0.020818953903684965j), (0.008284757893268631+0.04689281909626517j), (0.047200133898260686+0.00630246429037015j), (0.018559179063951315-0.04385351261435416j), (-0.035864150417090866-0.031326289454791954j), (0.01792586274218778-0.07187233052350293j), (0.056827796974931497-0.04751389208334097j), (-0.06828320440284084+0.05351965037123217j), (-0.06199521112507372+0.06069219700205794j), (-0.07627922991604111-0.04945646462630634j), (-0.06846792352353703+0.05980473441369366j), (0.03792645074825741+0.08261989556733508j), (0.08998452333576516-0.012932454134946193j), (0.014920353540834274-0.08967633946662779j), (-0.08291586865146718-0.0372749451467067j), (0.03293936897035361+0.07571397438580305j), (0.050055353499483195+0.07588757734938655j), (0.08772418440837391-0.02385225942762988j), (0.0011025695295279068-0.0909024045355782j), (-0.08711984638040184-0.025972970114573654j), (-0.05262516685374315+0.0741286356513665j), (0.058969938660482155+0.06918821535707019j), (0.08192893787825425-0.039396852006962524j), (-0.01453845616356105-0.08973904446949257j), (-0.08836791793818785-0.02134417693861835j), (-0.04073396510265182+0.08127242396368706j), (0.06575495903182056+0.06277537871364021j), (0.07929755017667728-0.04445628578609217j), (-0.010282845618620267-0.090325665765058j), (-0.09088234639860712-0.0022049768708384547j), (-0.03805165026332813+0.08256230812032032j), (0.06897284289792208+0.059221700013558476j), (0.06872189852123395-0.0595127169061754j), (-0.0408546707073812-0.08121181374226782j), (-0.08962182701723216+0.015244373782175002j), (-0.02938335725959315+0.08602953635858132j), (0.07519755644945554+0.05108610685840425j), (0.05676262805180372-0.0710103292948986j), (-0.04188606489827021-0.0806846972929517j), (-0.09044373537734335+0.009186595719331626j), (-0.025680633742891572+0.08720646685011846j), (0.0817001350769768+0.039869170273798j), (0.06656742808560417-0.061913167646190315j), (-0.06073130708751294+0.06764740312354608j), (0.06468035855688044+0.06388203211287767j), (0.0858854260311042-0.029801953046286765j), (0.006686167696245073-0.09066288089099661j), (-0.09073875588211655-0.005562462663516076j), (-0.058484294975352916+0.0695992101331133j), (0.06735085340319343+0.06106001437748682j), (0.08609948706099803-0.0291777507315143j), (-0.03195063471574942-0.08510945747199954j), (-0.09069598910128872-0.006220962213055896j), (-0.04721402271344277+0.07768718600343213j), (0.07917538754800475+0.044673491206090044j), (0.07401645186605105-0.05278283492839219j), (-0.0208905521516331-0.08847625467161938j), (-0.09049274099942872-0.00869060621174739j), (-0.03734732351069932+0.08288329286716664j), (0.07176365984129483+0.05580716742588068j), (0.07056133053947694-0.05731981718756639j), (-0.04073396510265182-0.08127242396368706j), (-0.08792338986327296+0.023107148782752513j), (-0.021663426186708815+0.08829019637406166j), (0.08513828149397186+0.03187374835457164j), (0.06034181712391103-0.0679950580270495j), (-0.04416938983508165-0.07945771083736264j), (-0.08374203403597821+0.03537986073226429j), (0.005644418268114635+0.09073369469128834j), (0.0889966052806821+0.018549044677066785j), (0.04383072925792763-0.0796450248454704j), (-0.06394042722871962-0.06462263207055374j), (-0.08399663993359649+0.03477106972445765j), (0.014920353540834274+0.08967633946662779j), (0.08955611790652711+0.015625765754981903j), (0.03792645074825741-0.08261989556733508j), (-0.06725821544505634-0.061162041047235646j), (-0.04358052136641407+0.07013092116100186j), (0.024038931633095974+0.08767321470013911j), (0.13037609135856362-0.003912456548151608j), (0.03824831548680824-0.12470083751362412j), (-0.11014822125505729-0.06986130451490757j), (-0.09823658592507492+0.08580679285443008j), (0.05677600279708715+0.11742963007930687j), (0.1298742539610639-0.012079348998798634j), (0.02397633192019769-0.12821219919270635j), (-0.12001201142341754-0.05109158079647956j), (-0.0917406129803369+0.09271942862296846j), (0.06852025941100824+0.11098741624358069j), (0.1262010633131572-0.032962465514675764j), (0.009399917819588901-0.1300956342817186j), (-0.09808401122862999-0.08598115639766475j), (-0.0633734723720737+0.11400454163621601j), (0.09040942164168665+0.09401791846554264j), (0.12428790613511385-0.03956954514177322j), (-0.006598834006746041-0.13026775465912166j), (-0.12994148211803339-0.011333302217205491j), (-0.07089220927425248+0.10948756631870712j), (0.09787040666578906+0.08622421941224387j), (0.10758135637235888-0.07375285943786328j), (-0.03646661315100607-0.12523345655004725j), (-0.12958431557175198-0.014870698436129202j), (-0.043727962256601076+0.1228865242044992j), (0.10064053592819167+0.08297418298642092j), (0.07967159046704889-0.10327473159794968j), (-0.04301781116021707-0.12313691744217738j), (-0.13021177724012015+0.007624013519599085j), (-0.034681288886876896+0.12573957497670607j), (0.12434655943597482+0.039384840619371295j), (0.10089163341568222-0.08266868101580727j), (-0.057770232724856686-0.11694371605645854j), (-0.12696343248561054+0.029891793617137015j), (-0.0047449119724287635+0.13034844964383582j), (0.12624989802897435+0.03277492581000415j), (0.07489362892198562-0.10679034067308532j), (-0.08115935951368546+0.10210970021259515j), (0.07274298626629579+0.10826675603914251j), (0.12556919407385098-0.03529320067408521j), (0.003079841586205419-0.13039841674645278j), (-0.12291460762432056-0.043648960431343774j), (-0.07672227394549606+0.10548424145250301j), (0.08643234716968758+0.09768665147765225j), (0.10933641992545769-0.07112509959263102j), (-0.006405281310685909-0.13027741510142377j), (-0.13033820585798303-0.005018426835148213j), (-0.06549917490375008+0.11279667814747764j), (0.0744104364331287+0.10712758498168908j), (0.10466174220114473-0.0778405564831009j), (-0.042496931115647514-0.1233176522641005j), (-0.12942913190404265+0.01616577646584374j), (-0.04513649095766617+0.12237618109013788j), (0.11739482328510047+0.05684793734198043j), (0.09612646381199866-0.08816425278523159j), (-0.059607525687700655-0.11601799599875791j), (-0.1302907540018264+0.006127963431129277j), (-0.010503311215403459+0.13001120323914428j))
evm_list = [-38.4051, -38.1134, -38.355, -38.3263, -38.2224, -38.3309, -38.3149, -37.9574, -38.278, -38.2608, -38.2315, -38.2056, -38.1556, -38.0535, -37.9942, -37.9187, -37.8822, -37.8648, -37.8539, -37.8298, -37.7994, -37.7208, -37.755, -37.729, -37.7232, -37.7409, -37.7202, -37.6981, -37.6586, -37.6379, -37.7907, -37.6779, -37.6323, -37.6648, -37.6531, -37.6713, -37.6802, -37.7052, -37.7578, -37.8317, -37.8259, -37.8114, -37.8968, -37.9254, -37.974, -38.0336, -38.0665, -38.1079, -38.1336, -38.1613, -38.1823, -38.2185, -38.2856, -38.3487, -38.3557, -38.3954, -38.3843, -38.4437, -38.2693, -38.3124, -38.3271, -38.3513, -38.3359, -38.362, -38.3941, -38.3563, -38.3746, -38.3624, -38.3627, -38.3383, -38.3273, -38.4069, -38.452, -38.391, -38.3582, -38.4503, -38.4324, -38.3821, -38.3678, -38.301, -38.2737, -38.2078, -38.0747, -37.9603, -37.8644, -37.7504, -37.719, -37.6511, -37.6077, -37.5448, -37.4814, -37.448, -37.4185, -37.3624, -37.2848, -37.2474, -37.1796, -37.1483, -37.161, -37.1424, -37.1881, -37.1524, -37.1257, -37.1371, -37.1554, -37.1386, -37.1828, -37.2348, -37.232, -37.325, -37.3198, -37.3954, -37.472, -37.4969, -37.5833, -37.6132, -37.7443, -37.8164, -37.883, -37.9281, -37.9853, -38.115, -38.2355, -38.272, -38.2989, -38.3849, -38.4089, -38.5015, -38.5942, -38.6376, -38.6928, -38.6969, -38.7362, -38.7265, -38.8113, -38.6519, -38.656, -38.7967, -38.7928, -38.7978, -38.7152, -38.4262, -38.5853, -38.7598, -38.681, -38.6369, -38.5674, -38.5085, -38.437, -38.3364, -38.308, -38.2024, -38.0524, -37.8991, -37.8064, -37.7196, -37.6197, -37.5059, -37.4245, -37.3145, -37.4754, -37.3531, -37.2926, -37.1981, -37.1088, -37.0101, -36.9557, -36.892, -36.8387, -36.8611, -36.7916, -36.7695, -36.7369, -36.7368, -36.7556, -36.68, -36.7318, -36.7396, -36.7792, -36.8154, -36.8577, -36.9127, -37.0843, -37.1491, -37.2449, -37.297, -37.4034, -37.5307, -37.6244, -37.7371, -37.8205, -37.8964, -37.8005, -37.9368, -38.0677, -38.1649, -38.2884, -38.3965, -38.5003, -38.6042]
# plot data
min_value = min(evm_list)
max_value = max(evm_list)
fig = pp.figure(figsize=(10, 10))
ax = fig.add_subplot(1, 1, 1, projection='smith', grid_major_xmaxn=5, grid_major_ymaxn=14, grid_minor_enable=False)
norm = Normalize(vmin=int(float(max_value)), vmax=int(float(min_value)))
img = pp.imshow(np.array([[0, 1]]), cmap='RdYlGn_r', norm=norm)
img.set_visible(False)
cmap = cm.RdYlGn_r
pp.colorbar()

for s, evm in s_list, evm_list:
    plot = pp.plot(s, datatype=SmithAxes.S_PARAMETER, color=cmap(norm(float(evm))), marker='o', markersize=12, alpha=0.3, markeredgewidth=0.5)
pp.savefig("smith_%s_%s_%s.pdf" % (rate, power, freq), format="pdf", bbox_inches="tight")
pp.cla()

通过这个,我得到了一个不太好的等高线图: attempt 1

然后我发现了pyplot的tricontourf,它可以接受一个z值,并且可以创建一个类似于这个例子的轮廓:Contour I'm trying to achieve

我的目标是在projection='smith'图上绘制一个轮廓,看起来像上面的例子。但是,我不知道如何提供tricontourf映射到我的smith图表的复杂值。以下是我目前掌握的情况:

fig = pp.figure(figsize=(10, 10))
ax = fig.add_subplot(1, 1, 1, projection='smith', grid_major_xmaxn=5, grid_major_ymaxn=14, grid_minor_enable=False)
plot = ax.tricontourf(real, imag, evm_list)

其中realimag是复数的实部和虚部。但是输出图不是我想要的(tricontourf没有以我想要的方式绘制real/imag值)

有没有办法tricontourf将投射到我的史密斯图表上的复杂值取出来?如有任何见解,将不胜感激。你知道吗


Tags: fromnormplotmatplotlibvaluefig绘制list