電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 41|回復(fù): 0
收起左側(cè)

【高級(jí)繪圖】繪制SCI論文地圖

[復(fù)制鏈接]

238

主題

238

帖子

1400

積分

三級(jí)會(huì)員

Rank: 3Rank: 3

積分
1400
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2022-5-28 00:00:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
點(diǎn)擊上方藍(lán)字和“好玩的matlab”一起快樂的玩耍吧: l$ E; _* {2 l6 X0 K+ |6 \

$ P; B! Z' J0 v* Y; P. W8 ]1 O好玩的matlab* V, l2 c9 d1 ~& f1 D, V4 k
帶你解鎖不一樣的matlab新玩法, g; V) t. o% s/ \$ p+ X
9 \3 o0 [' K) f1 b1 G
喜歡此推文的小伙伴們記得點(diǎn)贊+關(guān)注+分享!. p) m. v# h' E2 s3 u$ X0 U2 L, Y
   此篇推文來(lái)學(xué)習(xí)下SCI論文里面地圖的繪制。以下是來(lái)自science2020[1]論文里的配圖。找了一圈好像這張圖是用python畫的,雖然咱是個(gè)分享MATLAB的公眾號(hào),但為了好看的地圖~+ e  c2 ^; ^* h  ?
) L" C5 u# {5 ?& h) Z% w: I
; K, M* q. \9 Z3 ^, L/ a

9 Z. f0 }1 l3 }8 Z* n
: S4 T5 d0 L3 M, r0 K效果
( \8 j% o/ A  i/ ~5 ~3 h6 ]5 d6 I9 _# j2 _4 H9 p
以下是復(fù)現(xiàn)出來(lái)的圖,復(fù)現(xiàn)出了一些相似的元素,色階其實(shí)是一樣的,只不過(guò)由于數(shù)據(jù)不同,所以色塊分布也就不一樣。
' [7 H1 Q$ a) B2 O' p' N0 }% G. a* I! \3 ?0 h3 |+ Y
' A0 ^: H5 g* Q- L+ f

. a$ j* F6 Y6 q3 F0 I4 w* q

* t1 k. l6 R( L* S# A  U  V* X" t3 \3 a5 \  b3 G
  s( v2 E  K3 B+ q; v. J9 p* I

$ [/ H8 J8 ]# K% [繪制要素4 ?0 X) W0 {7 G; T" e$ G' d

, `% s0 T  A" ]8 J+ y+ f" ^7 ]/ i# E1 L: @
  • 第一個(gè)繪圖要素:顏色# q  b: {$ x( k
    看到這張圖,首先映入眼簾的是啥呢?當(dāng)然是顏色了!顏色配的好,作圖就成功了一大半。首先要獲得圖片里的顏色~
  • 第二個(gè)繪圖要素:數(shù)據(jù)- ]  }3 j8 x( h- S
    作圖數(shù)據(jù)是必不可少的,但你要畫圖的畫,你肯定已經(jīng)有數(shù)據(jù)了。當(dāng)然小編沒有這篇SCI論文里的數(shù)據(jù),所以就仿造了一點(diǎn)數(shù)據(jù)。

    & [0 C: P! x  N3 q, }  v* S
  • 第三個(gè)繪圖要素:框架3 o' T$ g( y! `& c
         此圖只是用python里的pycharts包繪制的。
    2 M: c7 M* g( L
    ; K( x6 f* Q+ f* @% E  R. G . N" \" h+ {: ?& v1 B* ]4 o
    * ?: T4 b% l& o0 u8 S
    1、取色 7 j2 e' v% b: Y$ F
    * k  R& A2 n( I; ^; u# V+ f

    4 A( g% K  K! w( l! ]7 @還是用類似的取色圖片取色,用MATLAB程序取色。但是python配顏色使用的是16進(jìn)制的顏色,MATLAB使用的是RGB顏色,因此需要在原有取色程序上稍微改進(jìn)一下~
    : o# `' c! q2 Y+ w% x( ^7 L# D. d1 r. ]/ W& d1 ^; h  w6 s
    將此張圖命名導(dǎo)入matlab中隨便命一個(gè)名字。用以下代碼取色圖片就是上面的截圖,運(yùn)行之后在圖片需要的顏色處打點(diǎn),完了之后按enter,顏色就自動(dòng)取出來(lái)了。
  • tupian=imread('地圖.png');figure(1)imshow(tupian);[c1,c2]=getpts; %選擇顏色點(diǎn)c1=ceil(c1); %將選點(diǎn)的位置化為整數(shù)c2=ceil(c2);for i=1:length(c1)    color(i,:)=tupian(c2(i),c1(i),:);endcolor=double(color);features_list={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; %字符串label_str='#';cell_str=cell(1,size(color,1));for j=1:size(color,1)    color_test=color(j,:);    for i=1:3        temp_num=color_test(i);        label_str(1+i*2-1)=features_list{(temp_num-mod(temp_num,16))/16+1};        label_str(1+i*2)=features_list{mod(temp_num,16)+1};    end    cell_str{1,j}=label_str;enddisp(cell_str)得到結(jié)果如下:2 d: k* z  _& P, U* n* M
    3 l5 E# m1 A& N. z; u
    這個(gè)就是需要用到的顏色了
    : J- Y8 B& U2 E+ D- l
      {( E' o1 [7 J% m
    - p. ?! O$ |7 x" S6 e* s( f8 n( \3 y5 P: E" m

    ( y0 P+ z7 H/ s2 n5 t5 {+ x, M2、數(shù)據(jù)
    $ R1 P! |( v9 D! D4 Q, K9 o' z
    + z* `* k; \/ S7 L8 F/ _% f
    6 g" e1 p6 }+ ]; x* R2 E4 K數(shù)據(jù)是在網(wǎng)上找的一些數(shù)據(jù),數(shù)據(jù)格式非常的簡(jiǎn)單,就是國(guó)家對(duì)應(yīng)數(shù)值。
    / \% l- h% C% j7 B3 T ' b! k" ~3 }4 C+ C: }" n. b9 F

    & X9 \3 c- g. M: @# v
    6 @& e' Y6 y4 `- h0 e$ L( w5 X" U/ g0 |5 i

      E7 {6 q0 b5 f+ d( B3、畫圖
    * ]5 t' w9 j/ B8 _! _8 k7 `! p
    5 K% A6 \( s2 l! e0 A, V* v. r4 z0 ^4 O' F2 ~

    ; H  e* r+ S3 d- F# k. Y世界地圖
    3 |- A+ b4 E& e9 u7 [# ^9 D" `- b0 c9 }5 I: L# l0 [9 R+ ~
    首先要導(dǎo)入一些包pyecharts 用于畫圖,pandas 用于讀數(shù)據(jù),只需要導(dǎo)入相應(yīng)的數(shù)據(jù)就可實(shí)現(xiàn)。range_color 就是改變整個(gè)配色的,將前面取到的16進(jìn)制顏色帶入2 Q/ P2 Q6 ^, j* ^+ ~; x
  • from pyecharts import options as optsimport pandas as pdfrom pyecharts.charts import Mapfrom pyecharts.faker import Fakerimport os#導(dǎo)入數(shù)據(jù)包data = pd.read_csv('近年來(lái)碳排量總計(jì).csv')A=data['Country or region'].to_list()print(A)B=data['Score'].to_list()attr=Avalue=Bdata = []for index in range(len(attr)):    city_label = [attr[index], value[index]]    data.append(city_label)' I) T# }% ^- @: y
    ditu = (    Map()        .add("世界地圖", data, "world")        #這個(gè)是顯示文字的,True則各國(guó)英文字會(huì)顯示        # .set_series_opts(label_opts=opts.LabelOpts(is_show=True)        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))        .set_global_opts(                #標(biāo)題屬性        title_opts=opts.TitleOpts(title="世界地圖繪制522"),                #標(biāo)記屬性        legend_opts=opts.LegendOpts(is_show=False),  #地圖上的紅點(diǎn)                        #顯示和顏色        #設(shè)置最大值以及最小值        #visualmap_opts=opts.VisualMapOpts(max_=7,min_=4),        #background_color  框的顏色,默認(rèn)沒有 background_color='#F8F7CC'        visualmap_opts=opts.VisualMapOpts(max_=30,min_=0,                    #設(shè)置顏色                   # range_color=['#F6CEF5', '#F7BE81','#F78181']),                    range_color=['#F8F7CC', '#F9D674','#F8AD4B','#EF502E','#E11F26','#7F1228']                    ,background_color='#F8F7CC'                    ),                    # range_color=['#8DC3DA','#0970B3']),          )    .render())# 打開htmlos.system("render.html")$ y' R7 v/ A+ ~8 }% Y* K. Y$ }
    效果如下
    3 x* z3 s2 }( J$ r4 n * b! ^; I8 P+ F, e6 _7 S9 m) A) ^
    + g$ W% E/ K+ V2 L8 T  k. V
    稍微改變一下配色,在顏色代碼里面靈活變化:設(shè)置成一下即可實(shí)現(xiàn)。
    7 q0 x: o7 D3 C6 M% e% O$ Z; Yrange_color=['#F6CEF5', '#F7BE81','#F78181'])
    * R' V: ]8 h% d! f4 Z- t' V6 s 6 x/ E: {) _- n8 r0 J2 ~' [8 i
    6 G6 _5 C( c1 j' A
    ( x+ j6 s8 g- c
    中國(guó)地圖  W: W6 n  \" z1 t' ^' I/ c
    # ?! L- `+ T+ o/ a+ u; W
    / f, J1 A6 n- U% R8 k
    除了繪制世界地圖外,還可以繪制許多其他的地圖,各國(guó)的地圖,各個(gè)省份的地圖等等。
    + G; M4 J9 u7 {以下繪制中國(guó)各省份地圖,只要導(dǎo)入以下格式的數(shù)據(jù)即可,注意省份名字要規(guī)范,這樣才能識(shí)別到。3 o- @& D5 x4 u. Q

    ' j! Z8 W9 {- Z. c3 p( ^稍微改變一下代碼即可實(shí)現(xiàn)" X+ T2 \" K2 B+ [
  • from pyecharts import options as optsimport pandas as pdfrom pyecharts.charts import Mapfrom pyecharts.faker import Fakerimport os#導(dǎo)入數(shù)據(jù)包data = pd.read_csv('各省份數(shù)據(jù).csv',encoding='gbk')A=data['省份'].to_list()print(A)B=data['數(shù)值'].to_list()attr=Avalue=Bdata = []for index in range(len(attr)):    city_label = [attr[index], int(value[index])]    data.append(city_label)' f2 F! I+ {% e8 [$ Z) n  N* E
    ditu = (    Map()        .add("世界地圖", data, "china")        #這個(gè)是顯示文字的,True則各國(guó)英文字會(huì)顯示        # .set_series_opts(label_opts=opts.LabelOpts(is_show=False))        .set_series_opts(label_opts=opts.LabelOpts(is_show=True))        .set_global_opts(                #標(biāo)題屬性        title_opts=opts.TitleOpts(title="地圖522"),                #標(biāo)記屬性        legend_opts=opts.LegendOpts(is_show=False),  #地圖上的紅點(diǎn)                        #顯示和顏色        #設(shè)置最大值以及最小值        #visualmap_opts=opts.VisualMapOpts(max_=7,min_=4),        #background_color  框的顏色,默認(rèn)沒有 background_color='#F8F7CC'        visualmap_opts=opts.VisualMapOpts(max_=max(B),min_=min(B),                    #設(shè)置顏色                   # range_color=['#F6CEF5', '#F7BE81','#F78181']                    range_color=['#F8F7CC', '#F9D674','#F8AD4B','#EF502E','#E11F26','#7F1228']                    ,background_color='#F8F7CC'                    ),                    # range_color=['#8DC3DA','#0970B3']),          )    .render())# 打開htmlos.system("render.html")效果如下:' q$ N0 c9 ]3 z! L: N8 S7 C2 D8 Z

    1 V" z, _! T5 J1 F3 L$ l& d* w" w. X# F' J* g
    3 S  P# D( F) _) R

    ) C' ~* `0 ~6 R- z- R$ I+ I美國(guó)地圖* `. M! ]% f* C
    1 W7 m, U. D' u/ T3 N/ _

    # `/ j% h; W% o  m- j最后再畫一個(gè)美國(guó)地圖吧~
    : V( _% O+ S' _% b$ w只要導(dǎo)入以下格式的數(shù)據(jù)即可,注意地區(qū)名字要規(guī)范,這樣才能識(shí)別到。0 g4 [" w0 }, b' y' ?  D: s+ Q0 r

    & D& Y! `" R/ [稍微改變一下代碼即可實(shí)現(xiàn)# q6 q" L! n4 `1 n0 k5 j/ [1 N+ C
    ( G2 [' c+ [+ Y2 ]
  • from pyecharts import options as optsimport pandas as pdfrom pyecharts.charts import Mapfrom pyecharts.faker import Fakerimport os#導(dǎo)入數(shù)據(jù)包data = pd.read_csv('美國(guó).csv',encoding='gbk')A=data['城市'].to_list()print(A)B=data['數(shù)值'].to_list()attr=Avalue=Bdata = []for index in range(len(attr)):    city_label = [attr[index], int(value[index])]    data.append(city_label)7 o0 S3 \! Q# l8 X0 Q* ]
    ditu = (    Map()        .add("世界地圖", data, "美國(guó)")        #這個(gè)是顯示文字的,True則各國(guó)英文字會(huì)顯示        # .set_series_opts(label_opts=opts.LabelOpts(is_show=True)        # .set_series_opts(label_opts=opts.LabelOpts(is_show=False))        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))        .set_global_opts(                #標(biāo)題屬性        title_opts=opts.TitleOpts(title="地圖522"),                #標(biāo)記屬性        legend_opts=opts.LegendOpts(is_show=False),  #地圖上的紅點(diǎn)                        #顯示和顏色        #設(shè)置最大值以及最小值        #visualmap_opts=opts.VisualMapOpts(max_=7,min_=4),        #background_color  框的顏色,默認(rèn)沒有 background_color='#F8F7CC'        visualmap_opts=opts.VisualMapOpts(max_=max(B),min_=min(B),                    #設(shè)置顏色                   # range_color=['#F6CEF5', '#F7BE81','#F78181']                    # range_color=['#F8F7CC', '#F9D674','#F8AD4B','#EF502E','#E11F26','#7F1228']                    range_color=['#8DC3DA','#0970B3']                    # ,background_color='#F8F7CC'                    ),                    # range_color=['#8DC3DA','#0970B3']),          )    .render())# 打開htmlos.system("render.html")
    ! p$ ?+ [+ `& i ! ^8 k; p/ d8 N
    END5 e+ I: P+ F$ Y0 u
    - O8 a  x1 @  r
    5 L; {5 I+ Y, e+ i
    參考資料:9 `$ v/ ?. V1 |
    【1】圖片來(lái)源(sciencemag.org)【10.1126/science.abf4049】" o7 U  A% s6 q; y# |  O
      i% `, e- u4 C4 F; X  h( D2 F
    往期精彩回顧
    4 g  k+ n0 t/ \) q
    7 r. l  d7 s% ?推薦 | 【好玩的源碼】手把手教你MATLAB奏樂推薦 | 【建模算法】零基礎(chǔ)學(xué)優(yōu)化——線性規(guī)劃推薦 | 【建模算法】零基礎(chǔ)學(xué)優(yōu)化——非線性規(guī)劃推薦 | 【高級(jí)繪圖】畫一個(gè)SCI論文里的柱狀圖(文末送書)
    " t  |" x; C/ l! B: g8 {3 |; i+ N. r
    1 \$ a/ R. ^$ q
    ; @& N* z! S4 c0 U
    , `. c3 {: P6 p. Y/ `0 F* f
    5 m( I! X2 S! k0 V" s5 D7 T/ z* e8 @4 o! D
    ↓↓↓ 點(diǎn)擊"閱讀原文" 【加入QQ群】 數(shù)據(jù)鏈接在留言區(qū)奧~
  • 發(fā)表回復(fù)

    本版積分規(guī)則


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表