1PharmaSUG2015-PaperDV02CreatingSophisticatedGraphicsusingGraphTemplateLanguageKaitlynMcConville,Rho,Inc.
,ChapelHill,NCKristenMuch,Rho,Inc.
,ChapelHill,NCABSTRACTGraphTemplateLanguage(GTL)isanexcellenttoolforcustomizingtheunderlyingattributesofgraphicsproducedbytheSGPLOT/SGPANELprocedures.
However,manyfindlearningthisrelativelynew(inproductionsinceSAS9.
2)languageachallenge.
Thispaperwilltakeanexamplebasedapproachtocreatingcomplexsingle-andmulti-cellstatisticalgraphics.
FocuswillbeplacedonsyntaxandoptionsavailableinGTL,overlayinggraphsofdifferenttypes,andcreatinggraphswithmorecomplexlayouts.
TheexamplesprovidedusingdatafromtheImmuneToleranceNetwork(ITN)andAutoimmuneDiseaseClinicalTrials(ADCT)willenableyoutotakeyourgraphstothenextlevelusingGTL.
INTRODUCTIONPresentingdatagraphicallyisoftenoneofthebestwaystobetterunderstandclinicaltrialresults.
Theneedforsuccinctandinformativegraphsbecomesparticularlyimportantinthemanuscriptdevelopmentprocess.
Whenworkingonamanuscript,statisticalprogrammersandresearchinvestigatorsworktogethertoidentifywhichdataaremostimportantforinclusioninamanuscriptgraphic.
Furthermore,theseindividualsworkcollaborativelytodefinethespecificdetailsthatwillbeincludedineachgraph.
Thisistypicallyabackandforthprocesswheretheresearchinvestigatorsoftenaskthestatisticalprogrammerstoproduceand/orcustomizethegraphsbeyondthecapabilitiesoftheSGPLOT/SGPANELprocedures.
Toovercomethisissue,statisticalprogrammersoftenrelyonGTLtomeettheneedsoftheresearchinvestigators.
GTLisapowerfultoolthatallowsforagreatdealofcustomizationthroughplotlayeringandtheabilitytoarrangemultipleplottypesinasinglegraph.
ThispaperwillnotonlydescribethebasictoolsyouneedtocreateagraphwithGTLbutwillalsoexplore3specificexamplesofgraphsdevelopedformanuscriptpublication.
GTLOVERVIEWInGTL,graphsarebuiltbyusingplotandlayoutstatements.
Theplotstatementsdeterminehowdataarerepresentedinthegraphandthelayoutstatementsdeterminewheretheplotsaredrawnonthegraph.
Moreadvancedlayoutscanbeusedtodividetheplotareaintomultipleindependentcells.
Inaddition,statementscanbenestedsomultipleplotscanbelayeredtocreatehighlycustomizablegraphs.
CreatingagraphinGTLisatwo-stepprocessthatinvolvestheTEMPLATEandSGRENDERprocedures.
ThecodebelowoutlinesthebasiccomponentsneededforgraphcreationwithGTL.
Step1:DefinetheGraphwiththeTEMPLATEprocedureproctemplate;definestatgraph;begingraph/;;endgraph;end;run;TheTEMPLATEproceduredefinesthestructureofthegraphandwillalsocompileandsavethetemplate.
Thiscodealonewillnotcreatethegraph.
TheBEGINGRAPHandENDGRAPHstatementsdefinetheoutermostcontainerforthegraphandmustcontainalloftheGTLstatements.
Step2:ProducetheGraphwiththeSGRENDERprocedureprocsgrenderdata=template=;run;TheSGRENDERprocedurewillassociatedatawiththepredefinedtemplateandcreatethegraph.
Ifnecessary,thesametemplatecanbeusedwithmultiple,compatibledatasetstocreateadditionalgraphs.
CreatingSophisticatedGraphicsusingGraphTemplateLanguage,continued2TheSAScodebelowcombinesthestepsabovetocreateascatterplotofheightversusweightbysex.
proctemplate;definestatgraphexample;begingraph;layoutoverlay;scatterplotx=heighty=weight/group=sexmarkerattrs=(symbol=circlefilled)name="legend";discretelegend"legend"/title="Sex";endlayout;endgraph;end;run;procsgrenderdata=datasetnametemplate=example;run;Figure2.
ScatterplotUsingGTLShortcut!
StillintimidatedOnehelpfultoolforgettingstartedwithGTListousetheTMPLOUToptionintheSGPLOTprocedure.
ThiscreatesaSASprogramwiththeGTLcodeforthespecifiedgraph.
Anexampleisprovidedbelow:procsgplotdata=prep0tmplout='GTL_Code.
sas';histogramt2vol;run;RunningtheabovecodewiththeTMPLOUToptionwilloutputanewprogramcalledGTL_Code.
sastoyourcurrentfolderdirectory.
ThisprogramcontainsthefollowingGTLcode,whichwillproducethesamehistogramfromtheaboveSGPLOTprocedure:proctemplate;definestatgraphsgplot;begingraph/;layoutoverlay;HistogramT2VOL/primary=truebinaxis=falseLegendLabel="T2LesionVolume";endlayout;endgraph;end;run;ThisoptionallowsuserstostartwithfamiliarSGPLOTorSGPANELcodeinordertooutputtheGTLframeworkfromCreatingSophisticatedGraphicsusingGraphTemplateLanguage,continued3whichtheplotcanbefurthercustomized.
NowthatthebasicsofGTLhavebeenreviewed,let'slookintosomeexamplesthathighlightthemoreadvancedcapabilitiesofGTL.
EXAMPLE1:SCATTERPLOTOVERLAIDONBOXPLOTWhileyoucanoverlaymanydifferenttypesofplotsusingSGPLOT/SGPANELprocedures,youcannotoverlayscatterplotsonboxplots.
TheVBOXandSCATTERstatementsareincompatiblesorunningbothstatementswithinthesameSGPLOTprocedureshownbelowwillresultinthefollowingmessage:procsgplotdata=datasetname;vboxauc/group=trt;scatterx=trty=auc;run;ERROR:Attemptingtooverlayincompatibleplotorcharttypes.
GTLgivesusersthecapabilitytooverlaytheseplotswithfairlysimplesyntax.
Figure2belowshowsscatterplotsoverlaidonboxplotsovertimebytreatmentanddemonstratesthefollowingfeatures:OVERLAYstatementforoverlayingthescatterplotontopoftheboxplotEVALfunctionforjitteringthepointsalongthex-axisDRAWTEXTstatementforeasyannotationMERGEDLEGENDstatementforcombiningmultiplegraphidentifiersintooneBracesareusedthroughoutthepapertohighlightthenestinginthecode.
Forcodethatwastoolongtodisplaywithinthemaintextofthepaper,wasused.
Theexactcodeforeachisincludedintheappendix.
Figure2.
ScatterplotOverlaidonBoxplotCreatingSophisticatedGraphicsusingGraphTemplateLanguage,continued4TheSAScodetoproduceFigure2canbefoundbelow.
proctemplate;definestatgraphscatterbox;begingraph;entrytitle"AreaUndertheCurve(pmol/mL)overTimebyTreatmentGroup";layoutoverlay/xaxisopts=()yaxisopts=();drawtexttextattrs=(size=8pt)"TreatmentDifference:&treat_auc.
"/;drawtexttextattrs=(size=8pt)"TimeTrend:&time_auc.
"/;drawtexttextattrs=(size=8pt)"TreatmentbyTime:&trtbtime_auc.
"/;drawtexttextattrs=(size=8pt)"N=&n0_auc.
"/;drawtexttextattrs=(size=8pt)"p-value=&p0_auc.
"/;drawtexttextattrs=(size=8pt)"N=&n6_auc.
"/;drawtexttextattrs=(size=8pt)"p-value=&p6_auc.
"/;;drawtexttextattrs=(size=8pt)"N=&n12_auc.
"/;drawtexttextattrs=(size=8pt)"p-value=&p12_auc.
"/;drawtexttextattrs=(size=8pt)"N=&n18_auc.
"/;drawtexttextattrs=(size=8pt)"p-value=&p18_auc.
"/;drawtexttextattrs=(size=8pt)"N=&n24_auc.
"/;drawtexttextattrs=(size=8pt)"p-value=&p24_auc.
"/;scatterplotx=eval(0.
4*rannor(57)+visitn2)y=auc/group=trtname="trt1";boxplotx=visitn2y=auc/group=trtdisplay=(capsmeanmedianconnect)connect=meanname="trt2";mergedlegend"trt1""trt2"/title="Treatment";endlayout;endgraph;end;run;procsgrenderdata=datasetnametemplate=scatterbox;run;OVERLAYInordertooverlaythescatterplotsontheboxplots,theLAYOUTOVERLAYstatementisused.
WithinLAYOUTOVERLAY,thereisastatementforeachtypeofgraphtobeoverlaid.
Inthiscase,therearestatementsforascatterplotandaboxplot,butthisprocedureisnotlimitedtooverlayingjustthesetwotypesofgraphs.
JITTERINGTHEPOINTSTorandomlyjitterthepointsalongthex-axis,theEVALfunctionspecifictoGTLisused.
IntheSCATTERPLOTstatement,xisdefinedasEVAL(0.
4*RANNOR(57)+VISITN2).
Ratherthancreatinganewxvariableinaseparatedatastep,EVALevaluatesthefunctionforuseinthegraph.
ThisfunctionrandomlyjitterseachpointalongthexaxisbyusingRANNORtoaddarandomvaluefromthenormaldistribution.
Themultiplierof0.
4isusedtocontrolthewidthofthejitteringsothatthepointsstaywithinthewidthoftheboxplot.
BOXPLOTFEATURESWithintheBOXPLOTstatement,thereareseveraloptionsavailabletofurthercustomizetheoutput.
TheDISPLAYoptionspecifiesthefeaturestheboxplotwilldisplay.
Inthiscase,theMEANandCONNECToptionsareusedtoconnectthemeansovertimebytreatmentgroup.
ADDINGTEXTOneoptionforgraphannotationistousetheDRAWTEXTstatement.
Inthiscase,thegraphsareannotatedwithp-valuesandcounts.
Textcanbewrittenanywhereonthegraphwithjustafewoptions—noneedforgoingthroughthehassleofdefininganannotatedataset!
Sincethetexttobedrawncouldchangeasthedatachange,annotationisdonewithpredefinedmacrovariables.
CreatingSophisticatedGraphicsusingGraphTemplateLanguage,continued5LEGENDCUSTOMIZATIONTheMERGEDLEGENDstatementcreatesalegendforthegraphthatrepresentsidentifiersfrombothgraphsmergedintoone.
InFigure2'Treatment1'iseithertheredlineorredcircle,dependingonifyouarereferencingtheboxplotorscatterplot.
Todisplaybothidentifiers,bothgraphstatementsmusthaveaNAMEidentifiedbecausethesenamesarecalledintheMERGEDLEGENDstatement.
EXAMPLE2:MULTI-CELLGRAPHWITHNESTEDLAYOUTLATTICEResearchinvestigatorsoftenrequesttocombinedifferenttypesofplotsintoasinglegraph.
TheLAYOUTLATTICEstatementcanbeusedtodividetheplotareaintoamulti-cellgridofgraphs.
Withineachcellofthelattice,additionallatticestatementscanbeusedtocreatecomplexlayoutconfigurations.
Figure3usesanestedlatticestatementtodisplaythreetypesofsummarygraphsfordifferentbaselineMRIcharacteristicsanddemonstratesthefollowingfeatures:LATTICEstatementforcreatingacomplexnestedlayoutGRIDDEDstatementtooverlaydescriptivestatisticsROWGUTTERandCOLUMNGUTTERoptionsforinsertinggapspaceFigure3.
Multi-cellGraphwithNestedLayoutLatticeTheSAScodetoproduceFigure3canbefoundbelow.
CreatingSophisticatedGraphicsusingGraphTemplateLanguage,continued6proctemplate;definestatgraphmri;begingraph;entrytitle'BaselineMRICharacteristics';layoutlattice/rows=1columns=2columnweights=(0.
60.
4)columngutter=.
5cm;layoutoverlay/yaxisopts=(griddisplay=on);histogramt2vol/binaxis=false;densityplott2vol/lineattrs=graphfitname='density'legendlabel='Normal';discretelegend'density'/location=insidehalign=leftvalign=top;layoutgridded/rows=5columns=2opaque=trueborder=trueautoalign=(topright);entryhalign=left'Mean';entryhalign=right"&mean";entryhalign=left'Std.
Dev';entryhalign=right"&std";entryhalign=left'Median';entryhalign=right"&med";entryhalign=left'Min';entryhalign=right"&min";entryhalign=left'Max';entryhalign=right"&max";endlayout;endlayout;layoutlattice/rows=2columns=1rowgutter=.
5cm;layoutoverlay/yaxisopts=(griddisplay=onlinearopts=(tickvaluelist=(03691215)));barchartx=gadc;endlayout;layoutoverlay/xaxisopts=(linearopts=(viewmax=4));scatterplotx=t1voly=t2vol;endlayout;endlayout;endlayout;endgraph;end;run;procsgrenderdata=datasetnametemplate=mri;run;CREATINGTHECOMPLEXLAYOUTTheSAScodeaboveusesa1row,2columnLAYOUTLATTICEstatementwithanested2row,1columnLAYOUTLATTICEstatementtocreateaplotwith3distinctplotareas.
TheCOLUMNWEIGHTSoptionwiththeLAYOUTLATTICEstatementdesignatesthecolumnwidths.
Inotherwords,thisoptionspecifiesthefractionalproportionofeachcellrelativetotheoverallgridwidth.
Thenumberofentriesinthislistshoulddirectlycorrespondtothenumberofcolumnsandthesumoftheseweightsshouldbe1.
0.
AsimilaroptionforROWWEIGHTScanbeusedincaseswheretherearemultiplerowswithdifferentrowheightsdesired.
LAYOUTGRIDDEDFORDESCRIPTIVESTATISTICSLocatedontheleft,thefirstcellhasseveralplotstatementsoverlaid,whichincludesalegendforthenormaldensityplot.
Anested5row,2columnLAYOUTGRIDDEDstatementisusedtocreateaninsettableoftext.
ItisnestedwithintheLAYOUTOVERLAYalongwiththeotherplotstatements.
EachENTRYstatementintheLAYOUTGRIDDEDstatementbecomesarowinthetable.
Predefinedmacrovariablesareusedtodisplaytheappropriatedescriptivestatisticvalue.
OPTIONSFORCOSMETICUPDATESWhenusinganestedLAYOUTLATTICEstatement,thedefaultspacingbetweenplotscanmakethegraphappearcramped,particularlywhentheplotshaveaxislabels.
Inthiscase,theCOLUMNGUTTERandROWGUTTERoptionsareusedtoaddverticalandhorizontalgapspacebetweentheplots.
CreatingSophisticatedGraphicsusingGraphTemplateLanguage,continued7EXAMPLE3:MULTI-CELLPANELEDSERIESPLOTSWhenreportingclinicaltrialresultsinmanuscripts,thereisoftenalimittothenumberofdisplaysallowed.
Usingamulti-celllayoutiscrucialforgettingmultiplegraphsintoonedisplay.
Figure4showstheindividualtrajectoryforahandfulofsubjectsovertimeatdifferentvisitsfortwodistinctoutcomesanddemonstratesthefollowingfeatures:CombiningtheGRIDDED,DATAPANEL,andPROTOTYPElayoutstatementstocreateacomplexlayoutDISCRETELEGENDstatementforcustomizingthelookofthelegendFigure4.
Multi-cellPaneledSeriesPlotTheSAScodetoproduceFigure4canbefoundbelow.
CreatingSophisticatedGraphicsusingGraphTemplateLanguage,continued8proctemplate;definestatgraphtwobyone;begingraph/designwidth=11indesignheight=8.
5in;layoutgridded/rows=2columns=1rowgutter=15;drawtexttextattrs=(size=30pt)"A"/;drawtexttextattrs=(size=30pt)"B"/;layoutdatapanelclassvars=(id)/;layoutprototype;seriesplotx=visit0y=cpep/legendlabel="BaselineVisit"name="y0"lineattrs=();seriesplotx=visit6y=cpep/legendlabel="Month6Visit"name="y1"lineattrs=();seriesplotx=visit12y=cpep/legendlabel="Month12Visit"name="y2"lineattrs=();seriesplotx=visit18y=cpep/legendlabel="Month18Visit"name="y3"lineattrs=();seriesplotx=visit24y=cpep/legendlabel="Month24Visit"name="y4"lineattrs=();endlayout;endlayout;layoutdatapanelclassvars=(id)/;layoutprototype;seriesplotx=visit0y=glucose/lineattrs=();seriesplotx=visit6y=glucose/lineattrs=();seriesplotx=visit22y=glucose/lineattrs=();seriesplotx=visit18y=glucose/lineattrs=();seriesplotx=visit24y=glucose/lineattrs=();endlayout;endlayout;discretelegend"y0""y1""y2""y3""y4"/across=5border=truevalueattrs=(size=10pt);endlayout;endgraph;end;run;procsgrenderdata=datasetnametemplate=twobyone;run;CREATINGTHECOMPLEXLAYOUTThereareafewdifferentlayoutstatementsthatmakethisoutputpossible—GRIDDED,DATAPANEL,andPROTOTYPE.
TheGRIDDEDstatementtreatseachcellintheDATAPANELstatementindependentlyandenablesthestackingofthepaneledgraphsAandB.
TheDATAPANELstatementallowsuserstopanelgraphsbyaclassificationvariable.
Inthiscase,theCLASSVARissubjectid.
ThePROTOTYPEstatementmustbenestedwithintheDATAPANELstatementbecauseitinstructstheDATAPANELstatementwhattodisplayineachpaneloftheclassificationvariable.
Inthiscase,itprovidesinstructionsforfiveseparateseriesplots.
LEGENDCUSTOMIZATIONTheDISCRETELEGENDstatementcreatesalegendforthegraph,muchliketheMERGEDLEGENDstatement.
Withinaplotstatement,aNAMEmustbespecifiedbecauseitwillberequiredwhendefiningtheDISCRETELEGEND.
PairedwiththeNAMEstatement,aLEGENDLABELcanbeusedtospecifyhowthedatawillbelabeledwithinthelegend.
IfLEGENDLABELisnotspecified,thelabelforthevariablewillbeusedinstead.
CreatingSophisticatedGraphicsusingGraphTemplateLanguage,continued9CONCLUSIONGTLisanextremelypowerfultoolallowsuserstoproducehighlycustomizablegraphs.
Ithasalsobeenproventobeinvaluablewhenworkingwithresearchinvestigatorstocreategraphsforpublication.
Withtheabilitytonestlayoutstatementsandoverlaymultipleplotsofdifferenttypes,thepossibilitiesareseeminglyendless!
TheexamplesexploredinthispaperlaythefoundationyouneedtocreateyourowncomplexgraphsinGTL.
ACKNOWLEDGMENTSThisresearchwasperformedasaprojectoftheImmuneToleranceNetworkandtheStatisticalandClinicalCoordinatingCenterforAutoimmuneDiseaseClinicalTrials,whicharesupportedbytheNationalInstituteofAllergyandInfectiousDiseasesoftheNationalInstitutesofHealth(awardnumbersNO1-AI-15416,HSN272200800029CandHHSN272200900057C).
RECOMMENDEDREADINGMatange,Sanjay.
2014.
"UpYourGamewithGraphTemplateLanguageLayouts.
"ProceedingsofthePharmaSUG2014Conference.
Availableathttp://www.
pharmasug.
org/proceedings/2014/DG/PharmaSUG-2014-DG14-SAS.
pdf.
Matange,Sanjay.
October2013.
GettingStartedwiththeGraphTemplateLanguageinSAS:Examples,Tips,andTechniquesforCreatingCustomGraphs.
Cary,NC:SASInstitute.
CONTACTINFORMATIONYourcommentsandquestionsarevaluedandencouraged.
Contacttheauthorsat:Name:KaitlynMcConvilleEnterprise:Rho,Inc.
Address:6330QuadrangleDr.
City,StateZIP:ChapelHill,NC27517WorkPhone:919-408-8000Fax:919-408-0999E-mail:kaitlyn_mcconville@rhoworld.
comName:KristenMuchEnterprise:Rho,Inc.
Address:6330QuadrangleDr.
City,StateZIP:ChapelHill,NC27514WorkPhone:919-408-8000Fax:919-408-0999E-mail:kristen_much@rhoworld.
comSASandallotherSASInstituteInc.
productorservicenamesareregisteredtrademarksortrademarksofSASInstituteInc.
intheUSAandothercountries.
indicatesUSAregistration.
Otherbrandandproductnamesaretrademarksoftheirrespectivecompanies.
APPENDIXEXAMPLE1display=(tickvalues)linearopts=(tickvaluelist=(16121824)viewmin=0viewmax=26tickvalueformat=vis.
)display=(labeltickvalues)linearopts=(tickvaluelist=(0.
511.
522.
53)viewmin=-.
5viewmax=3)anchor=topleftwidth=80widthunit=percentxspace=datavalueyspace=graphpercentx=-1y=92justify=leftanchor=topleftwidth=80widthunit=percentxspace=datavalueyspace=graphpercentx=-1y=89.
5justify=leftCreatingSophisticatedGraphicsusingGraphTemplateLanguage,continued10anchor=topleftwidth=80widthunit=percentxspace=datavalueyspace=graphpercentx=-1y=87justify=leftanchor=topleftwidth=80widthunit=percentxspace=datavalueyspace=graphpercentx=-1y=13.
5justify=leftanchor=topleftwidth=80widthunit=percentxspace=datavalueyspace=graphpercentx=-1y=11justify=leftanchor=topleftwidth=80widthunit=percentxspace=datavalueyspace=graphpercentx=4y=13.
5justify=leftanchor=topleftwidth=80widthunit=percentxspace=datavalueyspace=graphpercentx=4y=11justify=leftanchor=topleftwidth=80widthunit=percentxspace=datavalueyspace=graphpercentx=10y=13.
5justify=leftanchor=topleftwidth=80widthunit=percentxspace=datavalueyspace=graphpercentx=10y=11justify=leftanchor=topleftwidth=80widthunit=percentxspace=datavalueyspace=graphpercentx=16y=13.
5justify=leftanchor=topleftwidth=80widthunit=percentxspace=datavalueyspace=graphpercentx=16y=11justify=leftanchor=topleftwidth=80widthunit=percentxspace=datavalueyspace=graphpercentx=22y=13.
5justify=leftanchor=topleftwidth=80widthunit=percentxspace=datavalueyspace=graphpercentx=22y=11justify=leftmarkerattrs=circledatatransparency=0.
7EXAMPLE3anchor=bottomleftwidth=80widthunit=percentxspace=graphpercentyspace=graphpercentx=1y=95justify=centeranchor=bottomleftwidth=80widthunit=percentxspace=graphpercentyspace=graphpercentx=1y=47justify=centerCreatingSophisticatedGraphicsusingGraphTemplateLanguage,continued11rows=1columns=7rowaxisopts=(label='C-peptide(ng/ml)'linearopts=(tickvaluelist=(012345678)viewmin=0viewmax=8))columnaxisopts=(label='MMTTtimepoint'linearopts=(tickvaluelist=(0306090120)viewmin=-10viewmax=120))headerlabeldisplay=valuelineattrs=(pattern=1color=cmykFF970030)lineattrs=(pattern=1color=cmyk90149580)lineattrs=(pattern=1color=cmyk00FFFF00)lineattrs=(pattern=1color=cmyk37FF0026)lineattrs=(pattern=1color=cmyk0068FF00)rows=1rowaxisopts=(label='Glucose(mg/dL)'linearopts=(tickvaluelist=(0100200300400500)viewmin=0viewmax=500))columnaxisopts=(label='MMTTtimepoint'linearopts=(tickvaluelist=(0306090120)viewmin=-10viewmax=120))headerlabeldisplay=valuelineattrs=(pattern=1color=cmykFF970030)lineattrs=(pattern=1color=cmyk90149580)lineattrs=(pattern=1color=cmyk00FFFF00)lineattrs=(pattern=1color=cmyk37FF0026)lineattrs=(pattern=1color=cmyk0068FF00)
对于Megalayer云服务器提供商在之前也有对于他们家的美国服务器和香港服务器进行过评测和介绍,但是对于大部分网友来说需要独立服务器和站群服务器并不是特别的普及,我们很多网友使用较多的还是云服务器或者VPS主机比较多。在前面也有在"Megalayer新增香港VPS主机 1GB内存 50GB SSD 2M带宽 月59元"文章中有介绍到Megalayer商家有新增香港CN2优化VPS主机。那时候看这...
pacificrack发布了7月最新vps优惠,新款促销便宜vps采用的是魔方管理,也就是PR-M系列。提一下有意思的是这次支持Windows server 2003、2008R2、2012R2、2016、2019、Windows 7、Windows 10,当然啦,常规Linux系统是必不可少的!1Gbps带宽、KVM虚拟、纯SSD raid10、自家QN机房洛杉矶数据中心...支持PayPal、...
JUSTG,这个主机商第二个接触到,之前是有介绍到有提供俄罗斯CN2 GIA VPS主机活动的,商家成立时间不久看信息是2020年,公司隶属于一家叫AFRICA CLOUD LIMITED的公司,提供的产品为基于KVM架构VPS主机,数据中心在非洲(南非)、俄罗斯(莫斯科),国内访问双向CN2,线路质量不错。有很多服务商实际上都是国人背景的,有的用英文、繁体搭建的冒充老外,这个服务商不清楚是不是真...
mobilephonefreeXXX为你推荐
敬汉卿姓名被抢注身份证信息被抢注12306账号怎么办敬汉卿姓名被抢注为什么最近b站up主都被问是否注册了商标?怎么查询商标如何查询商标注册安徽汽车网安徽汽车票查询比肩工场大运比肩主事,运行长生地是什么意思?百度关键词价格查询百度竞价关键词价格查询,帮忙查几个词儿点击一次多少钱,thanksxyq.163.cbg.comhttp://xyq.cbg.163.com/cgi-bin/equipquery.py?act=buy_show_equip_info&equip_id=475364&server_id=625 有金鱼贵吗?5xoy.comhttp://www.5yau.com (舞与伦比),以前是这个地址,后来更新了,很长时间没玩了,谁知道现在的地址? 谢谢,se95se.com现在400se就是进不去呢?进WWW怎么400se总cOM打开一半,?求解广告法中华人民共和国广告法中,有哪些广告不得发布?
yardvps 表单样式 godaddy 网页背景图片 合租空间 php空间推荐 中国电信测速网 我的世界服务器ip 中国电信测速网站 阿里云邮箱申请 nnt 美国十大啦 优惠服务器 建站行业 中国域名根服务器 阿里云宕机故障 装修瓦工招聘 主机配置 长沙服务器托管 上海服务器托管 更多