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

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

搜索
查看: 42|回復(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è)的玩耍吧
9 a7 B: O# ^/ N2 D7 X
0 j/ r/ k+ L1 v  [. {好玩的matlab/ e9 `) Y1 z5 z/ P) p
帶你解鎖不一樣的matlab新玩法
# W- h0 E: ~, R4 K+ Z7 B- F' k
( J& @! y  i/ c2 Y7 i; \+ J' a/ R( k喜歡此推文的小伙伴們記得點(diǎn)贊+關(guān)注+分享!( K# M0 N* Q; v# E6 k8 H' M
   此篇推文來(lái)學(xué)習(xí)下SCI論文里面地圖的繪制。以下是來(lái)自science2020[1]論文里的配圖。找了一圈好像這張圖是用python畫(huà)的,雖然咱是個(gè)分享MATLAB的公眾號(hào),但為了好看的地圖~5 y5 U6 P: ^  D9 x
' e+ P8 {. L3 a! R

; g( z" W- x6 b, ~* K
" h+ e) I+ d. c  k+ s1 z
8 Z$ ?9 c3 x6 V( o' i9 j效果
/ e/ t! s2 [6 s7 @$ U4 v, {! s
" A' \$ x5 }  f, [/ O! U$ d
以下是復(fù)現(xiàn)出來(lái)的圖,復(fù)現(xiàn)出了一些相似的元素,色階其實(shí)是一樣的,只不過(guò)由于數(shù)據(jù)不同,所以色塊分布也就不一樣。
! c: ~5 J% N% K2 q& P
& V1 r, E  c. I( m  ^
2 N/ G# v: W3 ]. [0 ]1 U; j
) R0 o  ]1 A9 d- N  H4 s* B

( G/ I* `. h+ ?. _* V3 ~7 y8 T" i; _# Y9 f

- @9 }2 j+ Q, |7 R) ]; K* {1 {
1 s4 J& U% e8 y% P+ C+ P; R6 G' ?繪制要素- o1 @2 x, |: M' I

8 S' c) f/ ]0 a& L4 j2 r
  • 第一個(gè)繪圖要素:顏色
    3 J# O7 b8 z+ |7 x看到這張圖,首先映入眼簾的是啥呢?當(dāng)然是顏色了!顏色配的好,作圖就成功了一大半。首先要獲得圖片里的顏色~
  • 第二個(gè)繪圖要素:數(shù)據(jù)1 w: ?' r  y4 {8 l. u
    作圖數(shù)據(jù)是必不可少的,但你要畫(huà)圖的畫(huà),你肯定已經(jīng)有數(shù)據(jù)了。當(dāng)然小編沒(méi)有這篇SCI論文里的數(shù)據(jù),所以就仿造了一點(diǎn)數(shù)據(jù)。
    7 n( E8 W+ P8 `+ x/ s1 y
  • 第三個(gè)繪圖要素:框架
    5 B8 X# [" b" G% u! f# n
         此圖只是用python里的pycharts包繪制的。
    5 j; i2 \1 y' D! J7 L1 B$ O. ]- |  d; {" J) \' l

    ) o) w& w- _4 ^ : I' y% H. v; h  D4 q# M  t; P- _4 R
    1、取色
    7 v  o1 ^& I. w0 q2 J4 p + C  s! O6 e- @" T" r8 h* j

    + S; u! u' t+ i6 }' N還是用類(lèi)似的取色圖片取色,用MATLAB程序取色。但是python配顏色使用的是16進(jìn)制的顏色,MATLAB使用的是RGB顏色,因此需要在原有取色程序上稍微改進(jìn)一下~
    , _* Q! d% ^$ k, ]0 S& ]
    # Q% G4 l8 x- p1 _4 j! H將此張圖命名導(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é)果如下:  D$ L+ t/ k# u7 g3 `; T0 ?* g
    : u$ C8 j5 ]+ N% f/ u( H
    這個(gè)就是需要用到的顏色了" g6 |9 }- j1 M$ ]

    ; K+ H/ j- B; G) y: S1 o4 R( v0 ^6 y
    % l* j. f9 c& x7 e" f

    ' i+ c2 Q  |& I! O! R: T  e2、數(shù)據(jù)
    8 B# [' J9 t% w) n8 I  U( a, F) ?

    7 ^5 g0 }! Z5 [. ^數(shù)據(jù)是在網(wǎng)上找的一些數(shù)據(jù),數(shù)據(jù)格式非常的簡(jiǎn)單,就是國(guó)家對(duì)應(yīng)數(shù)值。  T6 S) I7 N# f/ h/ x8 M

    5 Y! r5 a. Z# o# s; ?: ]. E4 ~
    9 i. ?1 V* C& ^2 h. I
    & d) a! A4 W, v# x) O, E2 c  t

    # j5 N9 x7 B) A# h  X) B3、畫(huà)圖 0 N  j# H9 \- l9 P' B8 O0 h
    ( t! s. \! k5 _6 W; h
    3 _9 U2 ?) z% J9 p. n5 K2 d

    1 x! A5 y: B; T1 H' h( {, E& z世界地圖
    0 }7 D4 Z9 B" u% E0 b8 ~: b
    / ^/ f& D# H0 l% n首先要導(dǎo)入一些包pyecharts 用于畫(huà)圖,pandas 用于讀數(shù)據(jù),只需要導(dǎo)入相應(yīng)的數(shù)據(jù)就可實(shí)現(xiàn)。range_color 就是改變整個(gè)配色的,將前面取到的16進(jìn)制顏色帶入
    ; z  |: e* G: X- ]& A, f3 F& h& W
  • 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)
      n2 k$ J( W( }0 [" }. B$ xditu = (    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)沒(méi)有 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())# 打開(kāi)htmlos.system("render.html")
    4 o& \& i. x( A' d  a' u0 G$ P效果如下+ y& C$ @% M+ w( O

    # K. M& b: p5 O! r8 b3 U& t
    " W( \: t. v/ f2 X  d2 Z) u( |4 G稍微改變一下配色,在顏色代碼里面靈活變化:設(shè)置成一下即可實(shí)現(xiàn)。0 `0 |% O# j1 L5 Y7 u
    range_color=['#F6CEF5', '#F7BE81','#F78181']); d6 N' t7 P8 r: x* w

    3 p6 e2 T4 |4 o7 O  h: g/ r! M$ ^" r0 J. J! i! X

    / F" W# H+ y5 |4 r中國(guó)地圖
    : Q7 N0 K% i) V! D
    7 u6 u3 M  J" v1 Z; L: t% F' L' @4 i- U$ y
    除了繪制世界地圖外,還可以繪制許多其他的地圖,各國(guó)的地圖,各個(gè)省份的地圖等等。
    9 ?# O% k, p+ B  N9 q6 |7 l* D( X以下繪制中國(guó)各省份地圖,只要導(dǎo)入以下格式的數(shù)據(jù)即可,注意省份名字要規(guī)范,這樣才能識(shí)別到。
      x( \/ S6 X* y8 ]  }4 R% r 7 m& n2 T# B2 f9 |6 i2 u
    稍微改變一下代碼即可實(shí)現(xiàn)
    ! ^7 s. `* f+ c* e0 P6 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('各省份數(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)
    1 ^( A" q3 z( }3 n/ y" x* Rditu = (    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)沒(méi)有 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())# 打開(kāi)htmlos.system("render.html")效果如下:
    1 r: L% X0 P/ e2 B3 n* s. o
    : s+ M. \8 _  B" ]6 p/ _/ ?  B2 L: ~3 J8 S# m) X( B

    : H/ G, P4 I8 V+ L& B( c6 @6 w1 f$ q' F) p) a6 L' p1 |: f% p5 i
    美國(guó)地圖
    6 Q% ?+ N  w; d3 G2 g
    * C& O1 t. j0 u# ^& k$ w3 h) T( A' o; f' Z+ L9 n" C2 i  e
    最后再畫(huà)一個(gè)美國(guó)地圖吧~9 N) h) X# ~2 I& k  C8 g) E
    只要導(dǎo)入以下格式的數(shù)據(jù)即可,注意地區(qū)名字要規(guī)范,這樣才能識(shí)別到。% Z! C0 E& {6 L4 X, R0 W0 N- ]4 Y
    ( F; `. O7 Z" |' y" g% v4 P
    稍微改變一下代碼即可實(shí)現(xiàn)
    1 }! Y% i* q& f4 G$ f! O8 k! }0 J7 k) V) u8 [" u" m
  • 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)% @4 P# _" a0 c
    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)沒(méi)有 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())# 打開(kāi)htmlos.system("render.html")* t. M4 n9 y0 Q$ q  _/ j

    # K, S' [8 c- Y& H7 ZEND
    7 Z& ^3 p( Y1 Y8 X) i
      {1 t8 N) w$ [) b
    9 e! q6 A! y% U0 i
    參考資料:
    # V' p4 E% C2 O% l0 a【1】圖片來(lái)源(sciencemag.org)【10.1126/science.abf4049】
    7 e5 Q$ h4 o" c: U: y7 c4 d4 ?. B; v* p8 l8 }0 T+ h7 c
    往期精彩回顧
      a( ^" X+ T, S* Q. ]! h * K2 Z* |& X" o# P7 U
    推薦 | 【好玩的源碼】手把手教你MATLAB奏樂(lè)推薦 | 【建模算法】零基礎(chǔ)學(xué)優(yōu)化——線(xiàn)性規(guī)劃推薦 | 【建模算法】零基礎(chǔ)學(xué)優(yōu)化——非線(xiàn)性規(guī)劃推薦 | 【高級(jí)繪圖】畫(huà)一個(gè)SCI論文里的柱狀圖(文末送書(shū)); N* E; \- s& i7 y! d/ p
    5 d7 U8 j- T+ P' u7 E$ a0 Z" f

    6 }% L! E) A: u: ^5 W4 f. q+ T$ @  Y5 [/ z( G0 m
    , C: z9 e$ G3 z" x6 p) k; g/ a
    - N5 m) g9 O& y! s: [2 I% S% \
    ↓↓↓ 點(diǎn)擊"閱讀原文" 【加入QQ群】 數(shù)據(jù)鏈接在留言區(qū)奧~
  • 發(fā)表回復(fù)

    本版積分規(guī)則


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