如何用python画世界地图,并用不同的颜色展现每个国家的数据?

以下的图来自 iMeta 期刊文章,使用此代码,请引用文章:

Yong-Xin Liu, Chun-Lin Shi, Tengfei Ma, Wubin Ding, Danyi Li, Tong Chen, Jingyuan Fu, Shuang-Jiang Liu. 2023. iMeta progress and acknowledgment of reviewers in 2022. iMeta 2: e89. https://doi.org/10.1002/imt2.89

大家可能偶尔需要画世界地图中国地图,来展示不同国家的某些特征分布,比如全球不同国家的新冠感染人数,在中国地图中展示不同省、市的人数、足迹、访问量等。如果没有了解过,可能会觉得画地图很难,可了解后就会觉得其实也没那么难。这篇文章用实际例子来介绍如何用Python画出好看的世界地图或者中国地图,以及如何根据需求来个性化配色添加文字

f779cb98fe5a2c767ccddb9307c12f81.png

如果想复现本教程的结果,可以从Github上面下载画图脚本所用到的所有数据(包括每个国家的下载量数据,和世界地图数据,以及画图的脚本):https://github.com/DingWB/folium_documentation。

提示: 在运行ipynb文件时,如果遇到“Notebook ** is not trusted”,就在jupyter notebook右上角点击“不可信”,然后更改为“可信”即可解决。

本教程是用Pyhton3中的jupyter notebook运行的,也可以将代码复制到pytho编辑器中运行。不会python的朋友,可以先下载安装anaconda,在anaconda中打开jupyter notebook,然后再在jupyter notebook中打开本教程所分享的plot_world_map.ipynb即可。

Python主页(https://www.python.org/downloads/windows/)下载安装包后即可安装Anaconda(以window电脑为例),安装网址(https://www.anaconda.com/),安装教程链接:Anaconda安装(过程详细)可以参考:https://blog.csdn.net/weixin_42855758/article/details/122795125

如何打开.ipynb文件看链接:使用Jupyter打开本地.ipynb文件(D盘,E盘或F盘) - 知乎 (zhihu.com)怎么用jupyter执行代码(https://www.python51.com/jc/73223.html) (还可以百度搜索:JupyterNotebook运行代码详细步骤)。

1、安装python包

#pip install folium #用来画世界地图; 去掉井号,在命令行中执行
#pip install pandas,geopandas #用来处理和读取世界地图数据(geojson),去掉井号,在命令行中执行

2、导入python包

import pandas as pd
import folium,branca,os
from folium.features import DivIcon
import geopandas
import matplotlib
import matplotlib.pylab as plt
import numpy as np
import branca.colormap as cm

3、读取数据

读取每个国家下载量数据

这里需要注意,国家会对每个出版的地图进行审核,台湾、香港和南海诸岛必须要要属于中国,所以,需要对原始数据进行处理,将台湾、香港、澳门的数据合并到中国。

读取的数据,包含两列:CountryName和Count,其中,CountryName是国家的名字,Count是每个国家的下载量,大家可以把Count替换为不同国家或者省、市的新冠确诊人数、死亡人数、访问量、人口、降水量等等。

df=pd.read_excel(os.path.expanduser("data.xlsx"))
#merge China main land, Hongkong, Taiwan and Macao.
df.loc[df.CountryName=='China','Count']= df.loc[df.CountryName.isin(['China','Hong Kong','Taiwan','Macao']),'Count'].sum()
df=df.loc[~ df.CountryName.isin(['Hong Kong','Taiwan','Macao'])]
#为了使数据中的国家名字与后面的地图数据中的国家名字匹配,需要将部分国家的名字替换为地图数据中的名字
df.CountryName.replace({'Iran, Islamic Republic of...':'Iran','Russian Federation':'Russia','Sri Lanka':'Srilanka','Venezuela, Bolivarian Republic of...':'Venezuela','The former Yugoslav Republic of Macedonia':'North Macedonia','Syrian Arab Republic':'Syria','Brunei Darussalam':'Brunei','Republic of Moldova':'Moldova','Congo, Democratic Republic':'Dem. Rep. Congo',"Lao People's Democratic Republic":'Laos','Libyan Arab Jamahiriya':'Libya','South Sudan':'S. Sudan','United Republic of Tanzania':'Tanzania','Bosnia and Herzegovina':'Bosnia And Herzegovina',"Korea,Democratic People'S Republic Of":'North Korea',},inplace=True)
print(df.CountryName.unique())
['China' 'United States' 'India' 'Germany' 'United Kingdom' 'Japan''Canada' 'Australia' 'South Korea' 'Netherlands' 'Singapore' 'France''Brazil' 'Spain' 'Mexico' 'Italy' 'Denmark' 'Switzerland' 'Sweden''Pakistan' 'Russia' 'Ireland' 'Israel' 'Belgium' 'Thailand' 'Turkey''Norway' 'South Africa' 'Poland' 'Chile' 'Colombia' 'Finland' 'Malaysia''Austria' 'Philippines' 'Greece' 'Portugal' 'Indonesia' 'Iran' 'Egypt''Czech Republic' 'Argentina' 'New Zealand' 'United Arab Emirates''Ethiopia' 'Nigeria' 'Saudi Arabia' 'Kenya' 'Ukraine' 'Estonia' 'Morocco''Peru' 'Viet Nam' 'Bangladesh' 'Ecuador' 'Croatia' 'Hungary' 'Luxembourg''Romania' 'Unknown' 'Algeria' 'Ghana' 'Panama' 'Puerto Rico' 'Uruguay''Cyprus' 'Iraq' 'Serbia' 'Dominican Republic' 'Venezuela' 'Uganda''Slovakia' 'Slovenia' 'Lithuania' "Cote d'Ivoire'" 'Georgia' 'Kuwait''Kazakhstan' 'Zimbabwe' 'Tanzania' 'Iceland' 'Tunisia' 'Srilanka''Jordan' 'Qatar' 'Nepal' 'Benin' 'Seychelles' 'Yemen' 'North Macedonia''Lebanon' 'Paraguay' 'Sudan' 'Jamaica' 'Trinidad and Tobago' 'Costa Rica''Botswana' 'Bulgaria' 'Namibia' 'Malta' 'Oman''Palestinian Territory, Occupied' 'Senegal' 'Bolivia' 'Dem. Rep. Congo''Bahrain' 'Myanmar' 'Reunion' 'Guatemala' 'Zambia' 'Syria' 'Martinique''New Caledonia' 'Malawi' 'Latvia' 'Bosnia And Herzegovina' 'Honduras''Cameroon' 'Mongolia' 'Cuba' 'Nicaragua' 'Mauritius' 'Maldives' 'Brunei''Uzbekistan' 'Moldova' 'Armenia' 'Eritrea' 'Montenegro' 'Libya''French Guiana' 'Sierra Leone' 'Gabon' 'Liechtenstein' 'Togo' 'Belize''Belarus' 'Laos' 'Bhutan' 'Mozambique' 'Bahamas' 'Albania' 'Angola''Barbados' 'Fiji' 'Guadeloupe' 'Burkina Faso' 'Papua New Guinea''Vanuatu' 'Rwanda' 'Falkland Islands (Malvinas)' 'Madagascar' 'Andorra''Cape Verde' 'S. Sudan' 'Cambodia' 'Kyrgyzstan''EUROPE - UNKNOWN COUNTRY' 'El Salvador' 'Greenland' 'Aruba' 'Guinea']

读取世界地图数据

这里,使用geopandas读取中科院全球国家行政边界数据,
地图数据下载网址:中国科学院地理科学与资源研究所,链接https://www.resdc.cn/Default.aspx,选择【全球100万基础地理数据】分类下面的【全球国家行政边界数据】下载解压,也可以直接从前面分享的github链接获取地图数据。

需要注意的是,从其它地方下载的世界地图(大多来自西方国家),西藏的边界线是有问题的,跟国家官方给的边界线不一致,如果用那些数据来画图,审核肯定无法通过。还有台湾、钓鱼岛和南海诸岛,也存在问题。所以,我们最后使用的是中科院提供的世界地图数据来画图。
如果需要画中国地图,比如不同省、市的分布,可以将这里的世界地图数据替换为中国地图即可(一般是geojson格式的地图数据,也可以在上面中科院官网下载中国地图数据)。

# Read the geopandas dataset
data = geopandas.read_file("世界国家.shp")
data.crs="epsg:4326"
data.to_crs(crs="epsg:3857")
data.to_file('World.geojson', driver='GeoJSON')
#国家名字每个单词首字母大写
data.NAME=data.NAME.apply(lambda x:x.title() if not pd.isna(x) else np.nan)
data.NAME.replace({'Russian Federation':'Russia','Cote D¡¯Ivoire':"Cote D'Ivoire'","Korea,Democratic People'S Republic Of":'North Korea','Macedonia,The Former Yugoslav Republic Of':'North Macedonia','Syrian Arab Republic':'Syria','Korea, Republic Of':'South Korea','Congo,The Democratic Republic Of The':'Dem. Rep. Congo','United States of America':'United States'},inplace=True)
#讲下载量数据中的国家名字也做同样的处理
df.CountryName=df.CountryName.apply(lambda x:x.title() if not pd.isna(x) else np.nan)
#把两个数据框拼接起来,拼接后的数据框,既包含世界地图坐标数据,也包含我们需要展示的数据(下载量)
data = data.merge(df, how="left", left_on=['NAME'], right_on=['CountryName'])
print(data.NAME.unique())
data.drop('geometry',axis=1).head() 
#geometry这一列包含每个国家的坐标和边界信息,非常庞大,所以就不展示geometry这一列了
[nan 'Greenland' 'Canada' 'United States' 'Saint Pierre And Miquelon''Bermuda' 'Bahamas' 'Turks And Caicos Islands' 'Cuba' 'Mexico''Cayman Islands' 'Haiti' 'Puerto Rico' 'Virgin Islands,British''Dominican Republic' 'Virgin Islands,U.S.' 'Anguilla' 'Jamaica''Saint Kitts And Nevis' 'Antigua And Barbuda' 'Montserrat' 'Belize''Guadeloupe' 'Guatemala' 'Dominica' 'Martinique' 'Nicaragua''Saint Lucia' 'El Salvador' 'Honduras' 'Barbados''Saint Vincent And The Grenadines' 'Aruba' 'Colombia' 'Grenada''Netherlands Antilles' 'Trinidad And Tobago' 'Costa Rica' 'France''Panama' 'Marshall Islands' 'Palau' 'Kiribati' 'Nauru' 'Solomon Islands''Papua New Guinea' 'Cook Islands' 'American Samoa' 'Australia' 'Vanuatu''Fiji' 'Tonga' 'Niue' 'New Caledonia' 'Pitcairn' 'Norfolk Island''Heard Island And Mcdonald Islands' 'Bouvet Island''Northern Mariana Islands' 'Antarctica''South Georgia And The South Sandwich Islands' 'Tuvalu' 'Tokelau''French Polynesia' 'French Southern Territories' 'Samoa''Micronesia,Federated States Of' 'Wallis And Futuna''Cocos(Keeling) Islands' 'Prince Edward Island' 'New Zealand''Wake Island' 'Algeria' 'Tunisia' 'Libya' 'Morocco' 'Egypt''Western Sahara' 'Mali' 'Mauritania' 'Niger' 'Sudan' 'Senegal''Cape Verde' 'Ethiopia' 'Gambia' 'Burkina Faso' 'Eritrea' 'Guinea-Bissau''Djibouti' 'Guinea' 'Chad' 'Nigeria' "Cote D'Ivoire'"'Central African Republic' 'Ghana' 'Sierra Leone' 'Benin' 'Togo''Liberia' 'Cameroon' 'Uganda' 'Equatorial Guinea' 'Congo''Sao Tome And Principe' 'Gabon' 'Somalia' 'Rwanda' 'Kenya''Dem. Rep. Congo' 'Burundi' 'Tanzania' 'Angola' 'Seychelles' 'Malawi''Mayotte' 'Zambia' 'Madagascar' 'Mozambique' 'Mauritius' 'Zimbabwe''Reunion' 'Namibia' 'Botswana' 'Swaziland' 'Lesotho' 'South Africa''Saint Helena' 'Comoros' 'Canarias' 'Madeira' 'Venezuela' 'Guyana''Suriname' 'French Guiana' 'Ecuador' 'Brazil' 'Bolivia' 'Peru' 'Paraguay''Argentina' 'Uruguay' 'Chile' 'Falkland Islands(Malvinas)''Svalbard And Jan Mayen' 'Russia' 'Sweden' 'Iceland' 'Norway''Faroe Islands' 'Finland' 'United Kingdom' 'Estonia' 'Latvia' 'Lithuania''Denmark' 'Belarus' 'Germany' 'Netherlands' 'Poland' 'Ireland' 'Belgium''Luxembourg' 'Czech Republic' 'Slovakia' 'Moldova' 'Austria' 'Hungary''Switzerland' 'Liechtenstein' 'Slovenia' 'Romania' 'Serbia' 'Ukraine''Bosnia And Herzegovina' 'Croatia' 'San Marino' 'Monaco' 'Italy''Bulgaria' 'Andorra' 'North Macedonia' 'Montenegro' 'Vatican' 'Albania''Greece' 'Gibraltar' 'Malta' 'Portugal' 'Spain' 'Turkmenistan''Kyrgyzstan' 'Armenia' 'Syria' 'Lebanon' 'Afghanistan' 'Iraq' 'Kuwait''Nepal' 'Bhutan' 'Laos' 'Maldives' 'Brunei' 'East Timor''Christmas Island' 'Mongolia' 'Caspian Sea' 'Jordan' 'Bahrain' 'Qatar''Georgia' 'Israel' 'Cyprus' 'Iran' 'Pakistan' 'Azerbaijan' 'Yemen''Bangladesh' 'Singapore' 'Kazakhstan' 'Area Under Dispute' 'Cambodia''Srilanka' 'British Indian Ocean Territory' 'Tajikistan' 'Saudi Arabia''Myanmar' 'Japan' 'South Korea' 'United Arab Emirates' 'Malaysia' 'India''Indonesia' 'Philippines' 'Oman' 'Thailand' 'Uzbekistan' 'Turkey''North Korea' 'Viet Nam' 'China']

OBJECTIDNAMEFENAMEFCNAMESOCPOPELEMIDSHAPE_LENGSHAPE_AREAID1CountryNameCount
01NaNNoneNoneNone0.00154.00885627.5075421NaNNaN
12GreenlandGreenland¸ñÁêÀ¼GRL6.011359.592591662.8553572Greenland1.0
23CanadaCanada¼ÓÄôóCAN3166.023635.7366411692.8085943Canada1763.0
34United StatesUnited States Of AmericaÃÀ¹úUSA28837.031261.0873681100.9956484United States15479.0
45Saint Pierre And MiquelonSaint Pierre and MiquelonʥƤ°£¶ûºÍÃÜ¿Ë¡SPM1.041.7256720.0269385NaNNaN

将无法匹配的国家名字打印出来,如果有需要,可以向上面df.CountryName.replace中添加字典键值对来匹配

df.loc[~ df.CountryName.isin(data.NAME.tolist())].CountryName.values
array(['Unknown', 'Palestinian Territory, Occupied','Falkland Islands (Malvinas)', 'S. Sudan','Europe - Unknown Country'], dtype=object)

4、画世界地图

folium.Map的主要参数信息如下:
    location:设定地图中心点
    width, height:将地图的宽度和高度进行缩放
    tiles:地图瓦片,参考https://leaflet-extras.github.io/leaflet-providers/preview/ 和 https://juejin.cn/post/7116708374279880734

# Create a map
my_map = folium.Map(title="World Map",location=(50,5),max_zoom=1,control_scale=True,zoom_control=False,width='80%',height='90%',zoom_start=2.49,#tiles='Stamen Terrain', #Stamen Watercolor# titles="http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunityENG/MapServer/tile/{z}/{y}/{x}",tiles=folium.TileLayer('https://{s}.tile.thunderforest.com/mobile-atlas/{z}/{x}/{y}.png?apikey={apikey}',attr='&copy; <a href="http://www.thunderforest.com/">Thunderforest</a>, &copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',apikey='pk.eyJ1IjoiZGluZ3diIiwiYSI6ImNsY3doNmluazBmd2Qzb29lbzVrYXltdjYifQ.H8sWvLIDzRD7hbZDYlbUCQ',maxZoom=24,overlay=True))data['Y']=data.Count.apply(lambda x:np.log2(x+1) if not pd.isna(x) else np.nan)
max_v = data.Y.max()
def get_color(x,name):if pd.isna(name):return 'darkgrey'if pd.isna(x):return 'darkgrey'return matplotlib.colors.rgb2hex(plt.get_cmap('Spectral_r')(x/max_v))# return cmap(x)ticks=[]
for i in np.arange(start=0,stop=1.1,step=0.1):ticks.append(int(2**(i * max_v) -1))
print(ticks)
cmap = cm.LinearColormap([plt.get_cmap('Spectral_r')(i) for i in np.arange(start=0,stop=1.1,step=0.1)],index=np.arange(start=0,stop=1.1,step=0.1),vmin=0, vmax=1,max_labels=20).to_step(10) #tick_labels=ticks,cmap.caption="Number of download"
my_map.add_child(cmap)# add different color to each country according to the number of download
folium.GeoJson(data,style_function=lambda feature: {'fillColor': get_color(feature['properties']['Y'],feature['properties']['NAME']),'color': 'gold','fillOpacity':1,'opacity':0.7,'weight': 1,'dashArray': '0.8, 0.8'}
).add_to(my_map)#add country names onto the map.
for i,row in data.iterrows():if pd.isna(row['CountryName']):continuecenter=row.geometry.centroidif row.geometry.area <= 5:continuefontsize= min(3+row.geometry.area / 70,10)folium.map.Marker([center.y, center.x],icon=DivIcon(html='<div style="color:black; font-size: %spt; font-weight: bold"; opacity: 0.5>%s</div>'%(fontsize,row['NAME']),)).add_to(my_map)my_map.save('map1.html')
my_map
[0, 2, 8, 26, 82, 249, 755, 2283, 6894, 20813, 62829]
这里需要注意,最大的难点在于图例,因为这个数据分布不均匀,大部分下载量都很小,集中在1-3000,最大的是中国(下载量是6万多,其次是美国,1万多,排第三的只有3000左右)。

如果用线性的图例配色,那么,1-3000的那些绝大多数国家,颜色就都是一样的(比如都是蓝色),只有中国是红色,就不好看。
所以,我们需要使用非线形的colormap
我首先对下载量data.count进行log转换,转换后,最大值是15左右,然后再缩放(除以最大值)到0-1之间,再采用线性的colormap来解决上述问题。
此外,我们在标注国家名字时,将名字标注在每个国家的中心位置,字体大小还可以根据该国家的面积来自动缩放。

处理图例-方法1:手动编辑

因为我们目前的下载量被缩放到了0-1之间,但是地图的图例上面需要展示真实的下载量,而不是缩放之后的小数。
有2个方法可以修改图例,第一个方法是将图例上面缩放之后的小数,比如0.1,0.2,0.3,通过逆向运算,就可以算出处理之前的真实下载量,比如,我们在处理原始数据时,先对下载量进行了log2转换,然后再除以最大值(max_v):data['Y']=data.Count.apply(lambda x:np.log2(x+1) if not pd.isna(x) else np.nan)。
那么逆运算就是先乘以max_v再做2的幂指数运算,最后减去1,就是我们原始的下载量:

R=[]
for i in np.arange(start=0,stop=1.1,step=0.1):R.append(int(2**(i * max_v) -1))
print(R)
[0, 2, 8, 26, 82, 249, 755, 2283, 6894, 20813, 62829]

上面打印出来的,就是图例上对应的原始下载量,然后手动将图例上面的小数替换成上述真实数字即可。手动在html或者pdf编辑器中将0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1替换成[0, 2, 8, 26, 82, 249, 755, 2283, 6894, 20813, 62829]

处理图例-方法2:自动替换

我们也可以用Javascript代码自动化处理,大致原理就是用javscript读取并识别图例的tick labels,做逆运算,自动替换为原始下载量

from branca.element import Element
e = Element("""var ticks = document.querySelectorAll('div.legend g.tick text')for(var i = 0; i < ticks.length; i++) {var value = parseFloat(ticks[i].textContent.replace(',', ''))console.log(value)var newvalue = (Math.pow(2, value * 15.939188921332656).toFixed(0)-1).toString()ticks[i].textContent = newvalue}
""")
html = cmap.get_root()
html.script.get_root().render()
html.script.add_child(e)
#如果需要保存成html可以添加
my_map.save('map2.html')
my_map

16149cbfa7ee4389ae2cd3eb36d1d7d2.jpeg


5、备选方法:folium.Choropleth函数

最后,在folium包中,还可以用另外一个函数Choropleth函数也可以画出上面的图,但是这个方法画出来的图,图例也是有问题的,需要手动修改图例。
感兴趣的朋友可以研究一下,附上代码:

scales=[1,5,10,50,100,200,500,1000,2000,3000,20000,62830]
data['ID']=data.index.tolist()my_map = folium.Map(title="World Map",location=(50,5),max_zoom=1,control_scale=True,prefer_canvas=True,zoom_control=False,width='80%',height='90%',zoom_start=2.49,#tiles='Stamen Terrain', #Stamen Watercolor# titles="http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunityENG/MapServer/tile/{z}/{y}/{x}",tiles=folium.TileLayer('https://{s}.tile.thunderforest.com/mobile-atlas/{z}/{x}/{y}.png?apikey={apikey}',attr='&copy; <a href="http://www.thunderforest.com/">Thunderforest</a>, &copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',apikey='pk.eyJ1IjoiZGluZ3diIiwiYSI6ImNsY3doNmluazBmd2Qzb29lbzVrYXltdjYifQ.H8sWvLIDzRD7hbZDYlbUCQ',maxZoom=24,overlay=True))c = folium.Choropleth(geo_data=data,name='choropleth',data=data,columns=['ID', 'Count'],key_on='feature.id',fill_color='Spectral_r',#'red',#'RdYlGn_r',nan_fill_color='darkgray',fill_opacity=0.8,line_opacity=0.5,legend_name='No.Download',highlight=True,threshold_scale=scales
)# print(c._children)
for child in c._children:if child.startswith("color_map"):del c._children[child]c.add_to(my_map)cmap=cm.linear.Spectral_11.to_step(11).scale(1,62830)cmap.caption="Number of download"
my_map.add_child(cmap)#add country names onto the map.
for i,row in data.iterrows():if pd.isna(row['CountryName']):continuecenter=row.geometry.centroidif row.geometry.area <= 5:continuefontsize= min(3+row.geometry.area / 70,10)folium.map.Marker([center.y, center.x],icon=DivIcon(html='<div style="color:black; font-size: %spt; font-weight: bold"; opacity: 0.5>%s</div>'%(fontsize,row['NAME']),)).add_to(my_map)my_map.save('map3.html')
my_map

7880126f5372b8ab0be626c4fc347717.jpeg

最后,我们也来蹭一下ChatGPT的热度试试让ChatGPT来帮我们写一篇微信公众号推文,来教大家怎么用Folium来画世界地图。看看这个工智能聊天机器人程序能否给我想要的答案。请看截图:

b56a5a2930d140ab45b6bee46b32fc4e.png

abc3c67f1b0ee64596b565cacf441faa.png

7ec0e8c9efc744b1ab94a1875ba8dd51.png

不得不佩服,ChatGPT确实很厉害,难怪它以这么快的速度火遍全球。

大家有什么问题、建议或者更好的画图方法,欢迎关注Computational Biology公众号一起交流学习。

此代码来源于 iMeta期刊 文章,若使用此代码,请引用以下文章:

Yong-Xin Liu, Chun-Lin Shi, Tengfei Ma, Wubin Ding, Danyi Li, Tong Chen, Jingyuan Fu, Shuang-Jiang Liu. 2023. iMeta progress and acknowledgment of reviewers in 2022. iMeta 2: e89. https://doi.org/10.1002/imt2.89

更多推荐

(▼ 点击跳转)

高引文章 ▸▸▸▸

iMeta | 德国国家肿瘤中心顾祖光发表复杂热图(ComplexHeatmap)可视化方法

1f3987b5d7e4f8c156792a66377fb3f5.png

▸▸▸▸

iMeta | 浙大倪艳组MetOrigin实现代谢物溯源和肠道微生物组与代谢组整合分析

1262f01383f9f7f8481e1bb559ef411b.png

▸▸▸▸

iMeta | 高颜值绘图网站imageGP+视频教程合集                                        

13cb409dbc4e657168c0dfcc1b2b330e.png

830dd448aa88844a6070ab079a6a4014.jpeg

第1卷第1期

44ad92d20c5045d357b0adb723a3e4d5.jpeg

第1卷第2期

ec669204ac0d438e41f649ec1952af00.jpeg

第1卷第3期

9ce9d4103337ef2ae334969ee527e1b0.jpeg

第1卷第4期

期刊简介

“iMeta” 是由威立、肠菌分会和本领域数百位华人科学家合作出版的开放获取期刊,主编由中科院微生物所刘双江研究员和荷兰格罗宁根大学傅静远教授担任。目的是发表原创研究、方法和综述以促进宏基因组学、微生物组和生物信息学发展。目标是发表前10%(IF > 15)的高影响力论文。期刊特色包括视频投稿、可重复分析、图片打磨、青年编委、前3年免出版费、50万用户的社交媒体宣传等。2022年2月正式创刊发行!

联系我们

iMeta主页:http://www.imeta.science

出版社:https://onlinelibrary.wiley.com/journal/2770596x
投稿:https://mc.manuscriptcentral.com/imeta
邮箱:office@imeta.science

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/2178.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

互联网产品中的平台、社区、软件、网站、品牌等科普

文章目录 GitHubGitLabxiaomi.cn微博B站MIUIAndroidRedmiROMLineageOSSUASUSNokiaNubiaNVIDIAOnePlusRazerFairphoneSamsungGoogleLeEcoSonylenovoXiaomiLGMotorolaTwitterPixelexperienceDOT OSARROW OS1.1.1.1iPhoneOPPOvivoHUAWEIHONORrealmeIQOOMEIZUBlacksharkZTE红魔Cool…

字符编码与 C++ 处理

基本概念 字符集 字符集&#xff08;Character Set&#xff09;&#xff1a;是指多个字符的集合。不同的字符集包含的字符个数不一样、包含的字符不一样、对字符的编码方式也不一样。例如 GB2312 是中国国家标准的简体中文字符集&#xff0c;GB2312 收录简化汉字&#xff08;…

wordpress 占用内存 CPU过高的解决方案

&#xff08;ChatGpt的回复再结合其它资料整理&#xff0c;有任何意见欢迎指出&#xff09;WordPress占用内存过高可能由多种因素引起&#xff0c;以下是一些可能的原因和解决方法。总之&#xff0c;为了解决WordPress占用内存过高的问题&#xff0c;您需要对主题&#xff0c;插…

阿里云服务器可以干嘛?ChatGPT等12件小事

拥有一台阿里云服务器可以用来做什么&#xff1f;ChatGPT最近很火&#xff0c;可以在云服务器上部署本地ChatGPT&#xff0c;搭建个人博客、企业网站&#xff0c;学习Linux、跑Python爬虫等&#xff0c;阿里云服务器网分享使用阿里云服务器用途的12件小事&#xff1a; 阿里云服…

感谢飞书放过幕布!GPT-4平替Poe;100个GPT-4实战案例;AI绘画新手指南之SD篇;new Bing靠谱教程;AI生成视频摘要神器 | ShowMeAI日报

&#x1f440;日报合辑 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 『感谢飞书放过幕布』flomo 从字节收购幕布&#xff0c;时代变了 3月15日&#xff0c;flomo 浮墨笔记团队已与飞书初步达成全资收购幕布的合作意…

一周 AI 丨每天都在见证历史,AI 从未如此让人震撼

过去的一周&#xff0c;是 AI 史上最热门的一周。斯坦福 Alpaca 7 B 发布&#xff0c;用六百 刀实现接近 GPT3.5 的能力。Google Workspace AI 发布&#xff0c;G 家终于也开始整合进产品了。GPT4 发布 OpenAI 继续狂飙。Anthropic Claude 发布&#xff0c;OpenAI 出走的人才打…

调用OpenAI接口失败的原因

谈谈我研究OpenAI的感受&#xff0c;Chatgpt的后台时基于OpenAI研发的&#xff0c;但是国内一直无法使用Chatgpt&#xff0c;2023年2月份研究了OpenAI接口&#xff0c;为了国内能体验ChatGpt&#xff0c;就自己搭建了网站&#xff0c;并集成了几十个接口到自己的网站&#xff0…

ChatGPT首批88个插件最全解读

OpenAI放出大招&#xff0c;向所有ChatGPT Plus用户开放联网功能和众多插件&#xff0c;允许ChatGPT访问互联网并使用88个第三方插件。实际上我写完介绍之后已近有一百零几个插件了&#xff0c;关注我&#xff0c;后面持续更新 本批第三方插件能够全方位覆盖衣食住行、社交、工…

国产ChatGPT命名图鉴

文 | 星晖 编 | 石灿 很久不见这般热闹的春天。 随着ChatGPT的威名席卷全球&#xff0c;大洋对岸的中国厂商也纷纷亮剑&#xff0c;各式本土大模型你方唱罢我登场&#xff0c;声势浩大的发布会排满日程表。 有趣的是&#xff0c;在这些大模型产品初入历史舞台之时&#xff0c;带…

以防作弊,ChatGPT 遭教育部“拉黑”:师生禁用!

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 上个月&#xff0c;弗曼大学哲学助理教授 Darren Hick 逮到一个用 ChatGPT 写论文的作弊者后&#xff0c;就感慨&#xff1a;“ChatGPT 太先进了&#xff0c;它肯定会&#xff08;在学生中&#xff0…

LLMs之InternLM:InternLM/InternLM-7B模型的简介、安装、使用方法之详细攻略

LLMs之InternLM&#xff1a;InternLM/InternLM-7B模型的简介、安装、使用方法之详细攻略 导读&#xff1a;InternLM有 1040亿参数&#xff0c;是在包含1.6万亿token的多语种高质量数据集上训练而成。同时&#xff0c;InternLM-7B完全可商用&#xff0c;支持8k语境窗口长度&…

深挖 ChatGPT 原理,保姆级解说!

最近&#xff0c;ChatGPT 几乎刷屏国内外各大社交媒体&#xff0c;它流畅对答、写剧本、写代码等各项功能令人惊奇&#xff0c;许多技术人也不断深究其强大的背后原理&#xff0c;本文作者就是其中之一。 原文链接&#xff1a;https://www.jonstokes.com/p/chatgpt-explained-a…

《预训练周刊》第67期: ChatGPT引起热议、量化技术、Meta图像掩码加速CLIP

No.67 智源社区 预训练组 预 训 练 研究 观点 资源 活动 周刊订阅 告诉大家一个好消息&#xff0c;《预训练周刊》已经开启“订阅功能”&#xff0c;以后我们会向您自动推送最新版的《预训练周刊》。订阅方法&#xff1a; 方式1&#xff1a;扫描下面二维码&#xff0c;进入《预…

Web3.0的由来:10分钟看未来,必须掌握的吹牛知识

全文3046字&#xff0c;阅读约需要10分钟 2022年10月18日&#xff0c;周星驰在社交平台发布一条招聘信息。一共两张照片&#xff0c;一张是周星驰在白板前写着“请人”二字&#xff0c;另一张是招人启事&#xff0c;人才要求&#xff1a;熟悉Web3、有项目管理经验、有头脑又宅心…

四天工作制究竟香不香;复旦发布类ChatGPT模型Moss;苹果上新348元省电保护膜 | EA周报...

EA周报 2023年2月24日 每个星期1分钟&#xff0c;元宝带你喝一杯IT人的浓缩咖啡&#xff0c;了解天下事、掌握IT核心技术。 周报看点 1、周鸿祎&#xff1a;ChatGPT可能两三年内就会产生自我意识威胁人类 2、余承东&#xff1a;华为没有必要下场造车&#xff0c;问界不会涉及 2…

java springboot 整合webSocket接入调用chatGPT3.5接口实现自由返回

java springboot 中使用webSocket接入openAI接口调用chatGPT3.5接口实现自由返回 在springboot中添加webSocketServer Component Anonymous ServerEndpoint(“/websocket/{id}”) // 访问路径: ws://localhost:8080/websocket public class WebSocketServer { protected sta…

探索ChatGPT背后的网络基础设施

ChatGPT是OpenAI公司开发的一款聊天机器人应用&#xff0c;自2022年11月推出以来以迅雷不及掩耳盗铃之势火爆全球。ChatGPT不仅可以模仿人类对话&#xff0c;还可以创建音乐、电视剧、童话故事和学生论文&#xff0c;甚至是编写和调试计算机程序。 截至2023年1月&#xff0c;C…

chatgpt帮我写的一个小程序气泡框代码

效果图 这是一个气泡框 .bubble { position: relative; padding: 10px; border-radius: 8px; background-color: #ddd; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); } .triangle { position: absolute; width: 0; height: 0; top: -10px; left: 50%; margin-left: -10px; bor…

2023 ChatGPT智能AI机器人微信小程序源码

最近ChatGPT智能AI聊天突然爆火了 ChatGPT 是 OpenAI 开发的一款专门从事对话的人工智能聊天机器人原型。 聊天机器人是一种大型语言模型&#xff0c;采用监督学习和强化学习技术。 ChatGPT 于 2022 年 11 月推出&#xff0c;尽管其回答事实的准确性受到批评&#xff0c;但因…

三分钟完成小程序 uni-app、网站接入chatgpt实现聊天效果

利用laf云开发实现uni-app调用chatGPT API&#xff0c;实现与openai对话 1.实现后台接口 注册laf云开发账号 https://laf.dev/ 注册一个应用后进入这个页面&#xff1a; 下载依赖 chatgpt配置apiKey写send函数 //send函数源码 import cloud from lafjs/cloud export async…