• Criando，可视化和公共组件Vue.js否NPM com故事书 故事书吗？ 乌拉姆·费拉蒙塔开源构成了分离的接口组件，来自西班牙，欧洲，西班牙和欧洲的故事书，它的基本组成部分是绝对的，复杂的，复杂的，必要的telas。 ...
• tableau可视化When working with geospatial data, it’s often useful to visually inspect the data on a map. In this tutorial, we will be using real cellphone geospatial data from the Government of ...

tableau可视化

When working with geospatial data, it’s often useful to visually inspect the data on a map. In this tutorial, we will be using real cellphone geospatial data from the Government of Catalonia. The data is available and hosted on Google’s Public Datasets.
If you’re not familiar with Google Cloud, please check out my Level Up with Google’s Public Datasets tutorial to access Catalonia Cell Coverage Dataset.
汇入资料 (Importing Data)
Once the data is loaded into Tableau, we can see mobile data has many records of geospatial information. Let’s dive into Tableau to visualize.
将数据加载到Tableau中后，我们可以看到移动数据具有许多地理空间信息记录。 让我们深入Tableau进行可视化。

Our first step is to convert Lat and Long from Measures to Dimensions. By converting Lat and Long into Dimensions, we tell Tableau to treat each record separately and not aggregate them.
我们的第一步是将纬度和经度从“度量”转换为“尺寸”。 通过将纬度和经度转换为维度，我们告诉Tableau分别对待每条记录，而不是将它们汇总。
Next, we’ll double-click Lat and Long to load the data onto the map. As we can see, the cellular data is global, but mostly concentrated in Europe, especially Spain. This is because the data is provided by the Government of Catalonia, which is located in Barcelona, Spain.
接下来，我们将双击纬度和经度以将数据加载到地图上。 可以看到，蜂窝数据是全球性的，但主要集中在欧洲，尤其是西班牙。 这是因为数据由位于西班牙巴塞罗那的加泰罗尼亚政府提供。

修改图设置 (Modify Plot Settings)
Zooming into Barcelona, Spain, we can see a plethora of geospatial cellphone data from our dataset. There seems to be a lot of overlapping data points, which prevents us to fully visualize the granular detail in Barcelona.
放大到西班牙的巴塞罗那，我们可以从数据集中看到大量的地理空间手机数据。 似乎有很多重叠的数据点，这使我们无法完全可视化巴塞罗那中的细化细节。

To better visualize the data, we can reduce the size of each data point.
为了更好地可视化数据，我们可以减小每个数据点的大小。

Furthermore, we can change the color and decrease opacity to 20%. With a 20% opacity, solid color on the map means that there are 5 overlapping data points
此外，我们可以更改颜色并将不透明度降低到20％。 不透明度为20％时，地图上的纯色表示有5个重叠的数据点

可视化随时间变化的运动 (Visualize Movement Over Time)
Since our data is time series, we can take advantage of Tableau’s Pages function to animate the map. Click and drag the Date dimension to Pages and change the detail level to continuous DAY.
由于我们的数据是时间序列，因此我们可以利用Tableau的Pages函数来对地图进行动画处理。 单击并将日期维度拖动到页面，然后将详细信息级别更改为连续的DAY。

A new control pane will show up next to the map. Click the right triangle and the map will animate forward in time.
新的控制窗格将显示在地图旁边。 单击直角三角形，地图将及时向前动画。

Voilà! You’ve just successfully animated and visualized cellphone geospatial in Barcelona, Spain using Tableau.
瞧！ 您已经使用Tableau在西班牙巴塞罗那成功地成功制作了动画和可视化的手机地理空间。

Using a Dark Style in Tableau Map Layer

在Tableau地图层中使用深色样式

支持 (Support)
Thank you for checking out my tutorial! A few shares go a long way!
感谢您查看我的教程！ 几股大有帮助！
Interested in other cool tech? Check out my tutorial on Getting Started with Jupyter + Spark on the Cloud in 2020
对其他炫酷技术感兴趣？ 查看我的2020年Jupyter + Spark on Cloud入门教程

翻译自: https://towardsdatascience.com/visualize-cellphone-mobility-in-barcelona-spain-using-tableau-e3f7ab99d7e9

tableau可视化

展开全文
• ## Tableau疫情可视化

千次阅读 2020-06-02 13:13:24
本文数据来源于丁香园官网的疫情数据，包含国家/地区、省份的疑似病例、死亡病例、确诊病例、治愈病例等数据，将其存储在MySQL数据库中，并利用tableau完成相应的动态可视化。 数据获取 数据爬取参考了文章——17行...
本文数据来源于丁香园官网的疫情数据，包含国家/地区、省份的疑似病例、死亡病例、确诊病例、治愈病例等数据，将其存储在MySQL数据库中，并利用tableau完成相应的动态可视化。
数据获取
数据爬取参考了文章——17行代码简单搞定最新疫情数据获取，根据改进得到代码如下：
//导入需要的库
import pymysql  //数据库
import re //网页内容爬取正则化
import json //json文件
from pip._vendor import requests //网页爬取

def create(): //创建数据库表的函数
db = pymysql.connect("localhost", "root", "136131", "yiqing",charset='utf8')  // 连接数据库，得到一个数据库对象yiqing

cursor = db.cursor() //开启游标功能，得到一个游标对象
cursor.execute("DROP TABLE IF EXISTS info") //执行SQL语句
//创建表的SQL语句
sql = """CREATE TABLE info(
Id INT PRIMARY KEY AUTO_INCREMENT,
Date varCHAR(255),
Country varchar(255),
Province varchar(255),
City varchar(255),
Confirmed_num varchar(255),
Yisi_num varchar(255),
Cured_num varchar(255),
Code varchar(255))"""

cursor.execute(sql) //执行上述SQL语句

db.close() //断开数据库，释放资源

//在数据库表中插入数据函数
def insert(value):
db = pymysql.connect("localhost", "root", "136131", "yiqing",charset='utf8')

cursor = db.cursor()
sql = "INSERT INTO info(Date,Country,Province,City,Confirmed_num,Yisi_num,Cured_num,Dead_num,Code) VALUES ( %s,%s,%s,%s,%s,%s,%s,%s,%s)"
try:
cursor.execute(sql, value)
db.commit()
print('插入数据成功')
except:
db.rollback()
print("插入数据失败")
db.close()

create()  // 创建表
url='https://raw.githubusercontent.com/BlankerL/DXY-2019-nCoV-Data/master/json/DXYArea.json' //数据从丁香园网站获取
response = requests.get(url)
// 将响应信息进行json格式化
versionInfo = response.text
print(versionInfo)//打印爬取到的数据
print("------------------------")//重要数据分割线↓
//从内存加载

获取到的数据是以字典的形式存储的，以中国的数据为例，形式如下：
{
"locationId": 951001,
"continentName": "亚洲",
"continentEnglishName": "Asia",
"countryName": "中国",
"countryEnglishName": "China",
"provinceName": "中国",
"provinceEnglishName": "China",
"provinceShortName": "中国",
"currentConfirmedCount": 2105,
"confirmedCount": 83482,
"suspectedCount": 0,
"curedCount": 78028,
"comment": null,
"cities": null,
"updateTime": 1586669332105
},

接下来将上面的数据利用上面的函数读取到sql中去。
//用于存储数据的集合
dataSource = []
provinceShortNameList = []
confirmedCountList = []
curedCount = []
//遍历对应的数据存入集合中
for k in range(len(jsonData['results'])):
countryName=jsonData['results'][k]['countryName'] //获取该组数据的国家名称
provinceShortName = jsonData['results'][k]['provinceName'] //获取该组数据的省的名称
if("待明确地区" == provinceShortName): //如果是待明确地区
continue; //不操作
if jsonData['results'][k]['cities']==None or jsonData['results'][k]['cities']==[]:
confirmnum=jsonData['results'][k]['confirmedCount'] //确诊病例
yisi_num=jsonData['results'][k]['suspectedCount'] //疑似病例
cured_num=jsonData['results'][k]['curedCount'] //治愈病例
code=jsonData['results'][k]['locationId']
cityname=jsonData['results'][k]['provinceName']
date='2020-4-12'
else:
for i in range(len(jsonData['results'][k]['cities'])): //对该组数据中的每一个城市
confirmnum=jsonData['results'][k]['cities'][i]['confirmedCount'] //确诊病例
yisi_num=jsonData['results'][k]['cities'][i]['suspectedCount'] //疑似病例
cured_num=jsonData['results'][k]['cities'][i]['curedCount'] //治愈病例
code=jsonData['results'][k]['cities'][i]['locationId']
cityname=jsonData['results'][k]['cities'][i]['cityName']
date='2020-4-12'

tableau可视化
之后就可以使用tableau连接数据库进行相应的仪表盘制作。
世界地图数据
对确诊病例进行可视化，由红到蓝确诊人数依次减少，下方显示各个国家的疑似、确诊、死亡、痊愈病例数。  在全球数据中，根据颜色数据可以大致判断确诊人数相对来说比较高的国家分别是美国、中国、俄罗斯以及欧洲一些国家例如意大利、西班牙等。 通过点击相应国家可以在下方的柱状图中查看到该国家的疑似、确诊、死亡、痊愈病例数。  如上图所示，美国确诊病例达到529951，治愈病例32091，死亡病例20608，无疑似病例。
中国地图数据
国内的数据更加丰富，除去各个省市总的病例情况外，还包括各个市区的数据，下面是中国各个省的疫情数据，可以指向相对位置查看具体数据。  通过点击不同城市可以查看到该省各个市的柱状图和气泡图数据，更加直观明了，以上海为例，下图左下角是上海各个区包括境外输入的疑似、确诊、死亡、治愈病例分布，右下角是各个区的气泡图，可根据气泡大小来直观了解确诊数的多少，可以清晰地看到，徐汇区的确诊病例数为18。  关于tableau的更多操作细节可以前往Tableau官方教程。 以上可视化的动态图也可以前往Tableau Public查看。
展开全文
• 爬虫实战：2020疫情动态实时播报可视化一、网页分析二、完整代码及代码分析三、图片辅助分析四、运行结果 一、网页分析 本次实战我们爬取的是腾讯新闻的疫情追踪 请求...


爬虫实战：Pyecharts实现2020疫情动态实时播报可视化
一、网页分析二、完整代码及代码分析三、图片辅助分析四、运行结果

新增：疫情统计截至时间

一、网页分析
本次实战我们爬取的是腾讯新闻的疫情追踪

请求https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist链接即可得到我们需要的数据，注意请求方式为post，格式为json  数据
疫情统计截至时间
二、完整代码及代码分析
import requests
import json
import jsonpath
from pyecharts.charts import Map,Geo
from pyecharts import options as opts

"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"
}

#请求得url
url = "https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist"

#post方式请求

#将json格式转化为字典

#名称
name = jsonpath.jsonpath(data,"$..name") #人数 confirm = jsonpath.jsonpath(data,"$..confirm")

#数据处理
#zip() 函数用于将可迭代的对象作为参数，将对象中对应的元素打包成一个个元组，然后返回由这些元组组成的列表。
#参考图1
data_list = zip(name,confirm)
#要使用list解包
#print(list(data_list))

#截至时间
time_title = "统计截至:" + response.json()["data"]["FAutoGlobalStatis"]["lastUpdateTime"]

#国家名称表中英文的映射
nameMap = {
'Singapore Rep.':'新加坡',
'Dominican Rep.':'多米尼加',
'Palestine':'巴勒斯坦',
'Bahamas':'巴哈马',
'Timor-Leste':'东帝汶',
'Afghanistan':'阿富汗',
'Guinea-Bissau':'几内亚比绍',
"Côte d'Ivoire":'科特迪瓦',
'Siachen Glacier':'锡亚琴冰川',
"Br. Indian Ocean Ter.":'英属印度洋领土',
'Angola':'安哥拉',
'Albania':'阿尔巴尼亚',
'United Arab Emirates':'阿联酋',
'Argentina':'阿根廷',
'Armenia':'亚美尼亚',
'French Southern and Antarctic Lands':'法属南半球和南极领地',
'Australia':'澳大利亚',
'Austria':'奥地利',
'Azerbaijan':'阿塞拜疆',
'Burundi':'布隆迪',
'Belgium':'比利时',
'Benin':'贝宁',
'Burkina Faso':'布基纳法索',
'Bulgaria':'保加利亚',
'The Bahamas':'巴哈马',
'Bosnia and Herz.':'波斯尼亚和黑塞哥维那',
'Belarus':'白俄罗斯',
'Belize':'伯利兹',
'Bermuda':'百慕大',
'Bolivia':'玻利维亚',
'Brazil':'巴西',
'Brunei':'文莱',
'Bhutan':'不丹',
'Botswana':'博茨瓦纳',
'Central African Rep.':'中非',
'Switzerland':'瑞士',
'Chile':'智利',
'China':'中国',
'Ivory Coast':'象牙海岸',
'Cameroon':'喀麦隆',
'Dem. Rep. Congo':'刚果民主共和国',
'Congo':'刚果',
'Colombia':'哥伦比亚',
'Costa Rica':'哥斯达黎加',
'Cuba':'古巴',
'N. Cyprus':'北塞浦路斯',
'Cyprus':'塞浦路斯',
'Czech Rep.':'捷克',
'Germany':'德国',
'Djibouti':'吉布提',
'Denmark':'丹麦',
'Algeria':'阿尔及利亚',
'Egypt':'埃及',
'Eritrea':'厄立特里亚',
'Spain':'西班牙',
'Estonia':'爱沙尼亚',
'Ethiopia':'埃塞俄比亚',
'Finland':'芬兰',
'Fiji':'斐',
'Falkland Islands':'福克兰群岛',
'France':'法国',
'Gabon':'加蓬',
'United Kingdom':'英国',
'Georgia':'格鲁吉亚',
'Ghana':'加纳',
'Guinea':'几内亚',
'Gambia':'冈比亚',
'Guinea Bissau':'几内亚比绍',
'Eq. Guinea':'赤道几内亚',
'Greece':'希腊',
'Greenland':'格陵兰',
'Guatemala':'危地马拉',
'French Guiana':'法属圭亚那',
'Guyana':'圭亚那',
'Honduras':'洪都拉斯',
'Croatia':'克罗地亚',
'Haiti':'海地',
'Hungary':'匈牙利',
'Indonesia':'印度尼西亚',
'India':'印度',
'Ireland':'爱尔兰',
'Iran':'伊朗',
'Iraq':'伊拉克',
'Iceland':'冰岛',
'Israel':'以色列',
'Italy':'意大利',
'Jamaica':'牙买加',
'Jordan':'约旦',
'Japan':'日本',
'Japan':'日本本土',
'Kazakhstan':'哈萨克斯坦',
'Kenya':'肯尼亚',
'Kyrgyzstan':'吉尔吉斯斯坦',
'Cambodia':'柬埔寨',
'Korea':'韩国',
'Kosovo':'科索沃',
'Kuwait':'科威特',
'Lao PDR':'老挝',
'Lebanon':'黎巴嫩',
'Liberia':'利比里亚',
'Libya':'利比亚',
'Sri Lanka':'斯里兰卡',
'Lesotho':'莱索托',
'Lithuania':'立陶宛',
'Luxembourg':'卢森堡',
'Latvia':'拉脱维亚',
'Morocco':'摩洛哥',
'Moldova':'摩尔多瓦',
'Mexico':'墨西哥',
'Macedonia':'马其顿',
'Mali':'马里',
'Myanmar':'缅甸',
'Montenegro':'黑山',
'Mongolia':'蒙古',
'Mozambique':'莫桑比克',
'Mauritania':'毛里塔尼亚',
'Malawi':'马拉维',
'Malaysia':'马来西亚',
'Namibia':'纳米比亚',
'New Caledonia':'新喀里多尼亚',
'Niger':'尼日尔',
'Nigeria':'尼日利亚',
'Nicaragua':'尼加拉瓜',
'Netherlands':'荷兰',
'Norway':'挪威',
'Nepal':'尼泊尔',
'New Zealand':'新西兰',
'Oman':'阿曼',
'Pakistan':'巴基斯坦',
'Panama':'巴拿马',
'Peru':'秘鲁',
'Philippines':'菲律宾',
'Papua New Guinea':'巴布亚新几内亚',
'Poland':'波兰',
'Puerto Rico':'波多黎各',
'Dem. Rep. Korea':'朝鲜',
'Portugal':'葡萄牙',
'Paraguay':'巴拉圭',
'Qatar':'卡塔尔',
'Romania':'罗马尼亚',
'Russia':'俄罗斯',
'Rwanda':'卢旺达',
'W. Sahara':'西撒哈拉',
'Saudi Arabia':'沙特阿拉伯',
'Sudan':'苏丹',
'S. Sudan':'南苏丹',
'Senegal':'塞内加尔',
'Solomon Is.':'所罗门群岛',
'Sierra Leone':'塞拉利昂',
'Somaliland':'索马里兰',
'Somalia':'索马里',
'Serbia':'塞尔维亚',
'Suriname':'苏里南',
'Slovakia':'斯洛伐克',
'Slovenia':'斯洛文尼亚',
'Sweden':'瑞典',
'Swaziland':'斯威士兰',
'Syria':'叙利亚',
'Togo':'多哥',
'Thailand':'泰国',
'Tajikistan':'塔吉克斯坦',
'Turkmenistan':'土库曼斯坦',
'East Timor':'东帝汶',
'Tunisia':'突尼斯',
'Turkey':'土耳其',
'Tanzania':'坦桑尼亚',
'Uganda':'乌干达',
'Ukraine':'乌克兰',
'Uruguay':'乌拉圭',
'United States':'美国',
'Uzbekistan':'乌兹别克斯坦',
'Venezuela':'委内瑞拉',
'Vietnam':'越南',
'Vanuatu':'瓦努阿图',
'West Bank':'西岸',
'Yemen':'也门',
'South Africa':'南非',
'Zambia':'赞比亚',
'Zimbabwe':'津巴布韦'
}

#自定义的每一段的范围
pieces = [
{"min":1000000},
{"min": 100000, "max":999999},
{"min": 10000, "max": 99999},
{"min": 1000, "max": 9999},
{"min": 100, "max": 999},
{"min":0,"max":99},
]

#width：宽度，height：高度，page_title：标题
#data_pair：数据项，maptype：地图类型，name_map：自定义读取的名称的映射，is_map_symbol_show：是否显示标记图形
data_pair=list(data_list),
maptype="world",
name_map=nameMap,
is_map_symbol_show=False)
#label_opts:标签配置项设置，is_show：是否显示视觉映射配置
map.set_series_opts(label_opts=opts.LabelOpts(is_show=False))

#is_piecewise：是否为分段型，pieces：自定义的每一段的范围
#max_：指定 visualMapPiecewise 组件的最大值，TitleOpts：标题配置
map.set_global_opts(
title_opts=opts.TitleOpts(pos_left="80px",title="世界地图",subtitle=time_title,subtitle_textstyle_opts=opts.TextStyleOpts(font_size=20)),
legend_opts=opts.LegendOpts(selected_mode='multiple'),
visualmap_opts=opts.VisualMapOpts(max_=1000000,is_piecewise=True,pieces=pieces),
)

map.render("世界疫情分布情况.html")

三、图片辅助分析
图1  示例
四、运行结果

觉得博主写的不错的读者大大们，可以点赞关注和收藏哦，谢谢各位！
更多博主开源爬虫教程目录索引 
展开全文
• 一般用matplotlib和seaborn就可以做可视化，为什么偏要用pyecharts? 它是中国人做的！ 更重要的，是它非常好用，可以作出非常多很酷的动图。比如大家刷疫情的时候，常看到的图 关于pyecharts教程，首推官方中文...
前言
一般用matplotlib和seaborn就可以做可视化，为什么偏要用pyecharts?
它是中国人做的！更重要的，是它非常好用，可以作出非常多很酷的动图。比如大家刷疫情的时候，常看到的图  关于pyecharts教程，首推官方中文教程。如果诸位想要快速入门，不妨继续往下看。安装：我用的pycharm，直接搜索pyecharts安装，当然，需要科学上网（付费VPN），如果没有连接外网，我的经验是经常下载失败~python版本：3.5及以上，建议大家直接安装最新版，能避免很多麻烦
准备工作
这篇博客是接着上一篇博客写的。在上一篇博客（新型冠状病毒数据抓取及整理详细流程）里，我们通过抓取腾讯新闻的数据，得到疫情数据，并将我们将所需数据存入三个DataFrame中
为了调取数据方便，我们将得到的数据保存成csv文件。注意，由于城市和省份信息里有中文，所以这里无论保存还是读取，都需要指明编码方式encoding=‘gbk’。
# 保存数据
china_info.to_csv(r'F:\开课吧\RS基础课\2019_CoV_china_info.csv', encoding='gbk', index=None);
foreigns.to_csv(r'F:\开课吧\RS基础课\2019_CoV_foreigns.csv', encoding='gbk', index=None);

# 读取数据
china_info = pd.read_csv(r'F:\开课吧\RS基础课\2019_CoV_china_info.csv', encoding='gbk');
foreigns = pd.read_csv(r'F:\开课吧\RS基础课\2019_CoV_foreigns.csv', encoding='gbk');

（以上数据会放进资源里，大佬们如果没时间看上一篇博客，可以直接下载数据进行操作。）
用pyecharts可视化
通过查阅pyecharts教程，你会发现很多很有趣的图，比如 仪表盘，水球图，旭日图和词云图。想象能够将分析结果通过这些图表示出来，有没有觉得很酷?
哈哈，废话不多说，直接说我们要用到的图（点击可跳转到官方教程的相关页面）：
饼图折线地理图表
# 导入pyecharts第三方库
from pyecharts.charts import *
from pyecharts import options as opts

饼图
目标：展示死亡人数、治愈人数与待治愈人数的比例。说明：有些大佬用 死亡人数、治愈人数与确认人数 来做饼图，这是令人困惑的。因为确认人数里面应该包括死亡人数与治愈人数，所以与死亡人数、治愈人数并列的，应该是待治愈人数。其中，

待治愈人数=确认人数-死亡人数-治愈人数

# 创建 待治愈人数 列
# 将最近一天的数据作为饼图数据
pie_data.index = ['待治愈人数', '疑似人数', '死亡人数', '治愈人数']
print(pie_data);

待治愈人数    37693.0
疑似人数     21675.0
死亡人数      1017.0
治愈人数      3998.0
Name: 28, dtype: float64在这里插入代码片

接下来，我们来生成饼图。
# 饼图
my_pie = (
Pie()
# 加载数据
.add("", [list(z) for z in zip(pie_data.index, pie_data.values)])
# 标题
.set_global_opts(title_opts=opts.TitleOpts(title= '全国疫情人数比例（%）'))
# 标签格式
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}"))
);
# 生成的饼图被保存在一个my_pie.html文件里面
my_pie.render(r'F:\开课吧\RS基础课\my_pie.html');

点开本地文档my_pie.html，可以看到
饼图的标签格式formatter="{b}: {d}"看上去有点奇怪。这里，做一点说明：{a}（系列名称），{b}（数据项名称），{c}（数值）, {d}（百分比）。
折线
查看数据类型：
print(chinaDayData.info());

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 29 entries, 0 to 28
Data columns (total 9 columns):
date            29 non-null float64
confirm         29 non-null int64
suspect         29 non-null int64
dead            29 non-null int64
heal            29 non-null int64
deadRate        29 non-null float64
healRate        29 non-null float64
add             29 non-null int64
to_be_healed    29 non-null int64
dtypes: float64(3), int64(6)
memory usage: 2.2 KB
None

chinaDayData['date'] = chinaDayData['date'].map(str);

['1.13', '1.14', '1.15', '1.16', '1.17', '1.18', '1.19', '1.20', '1.21', '1.22', '1.23', '1.24', '1.25', '1.26', '1.27', '1.28', '1.29', '1.30', '1.31', '2.01', '2.02', '2.03', '2.04', '2.05', '2.06', '2.07', '2.08', '2.09', '2.10']

经过上面数据处理，现在已经可以开始作图了。
# 作出 关于确诊人数和疑似人数 的折线图
my_line1 = (
Line()
# x轴
# y轴
# 标题
.set_global_opts(title_opts=opts.TitleOpts(title="全国确诊人数与疑似人数关于时间变化趋势"))
)
# 作出关于 死亡人数、治愈人数与新增人数 的折线图
my_line2 = (
Line()
# x轴
# y轴
# 标题
.set_global_opts(title_opts=opts.TitleOpts(title="全国死亡人数、治愈人数\n与新增人数关于时间变化趋势"))
)
# 两个折线图各自保存进html文件中
my_line1.render(r'F:\开课吧\RS基础课\my_line1.html');
my_line2.render(r'F:\开课吧\RS基础课\my_line2.html');

分别打开本地文档的my_line1.html和my_line2.html，可以看到折线图：
地理图
目标：分别在世界地图和中国地图上观察疫情分布情况数据：中国的疫情分布用china_info，世界的疫情分布用foreigns
首先根据中国国内数据，作出四川省的疫情分布状况。
注意，在做之前，必须先将城市名称规整化。这是由于pyecharts中地图内置的城市名称可能与数据中的城市名称不同，这将导致做出的地图没有任何数据显示。
# 按照四川省的各个市来计算确认人数
# 这里将城市中文名称规整化
def city_name(city):
if city == '阿坝':
city = '阿坝藏族羌族自治州';
elif city == '凉山':
city = '凉山彝族自治州';
elif city == '甘孜':
city = '甘孜藏族自治州';
else:
city = city + '市';
return city;

# 提取china_info中的四川省数据，并选取其中的city和confirm列。
sichuanMap_data = china_info[china_info['province']=='四川'];
sichuanMap_data.drop(['province', 'healRate(%)', 'deadRate(%)'], axis=1, inplace=True);
sichuanMap_data.index = range(len(sichuanMap_data));
sichuanMap_data['city'] = sichuanMap_data['city'].map(city_name);
#print(sichuanMap_data);

# 作图
sichuan_map = (
Map()
.add('', [list(z) for z in zip(sichuanMap_data.city, sichuanMap_data.confirm)], '四川')
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
# 标题
title_opts=opts.TitleOpts(title="四川地图疫情分布图"),
tooltip_opts=opts.TooltipOpts(formatter='{b}: {c}'),
# 视觉效果
visualmap_opts=opts.VisualMapOpts(is_piecewise=True,
pieces=[
{'min': 51, 'label': '>50', "color": "#ff585e"},
{'min': 21, 'max': 50, 'label': '21-50', "color": "#ffb248"},
{'min': 11, 'max': 20, 'label': '11-20', "color": "#ffb248"},
{'min': 1, 'max': 10, 'label': '1-10', "color": "#fff2d1"}
]),
)
)

# 存储进html文件
sichuan_map.render(r'F:\开课吧\RS基础课\sichuan_map.html')

其次，根据中国国内数据，作出各省的疫情分布状况。
# 按照省份来计算确认人数
chinaMap_data = china_info[['province', 'confirm', 'heal', 'dead']].groupby('province').sum().sort_values(by='confirm', ascending=False);
#print(chinaMap_data);

china_map = (
Map()
.add('', [list(z) for z in zip(chinaMap_data.index, chinaMap_data.confirm)], 'china')
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
# 标题
title_opts=opts.TitleOpts(title="中国地图疫情分布图"),
tooltip_opts=opts.TooltipOpts(formatter='{b}: {c}'),
# 视觉效果
visualmap_opts=opts.VisualMapOpts(is_piecewise=True,
pieces=[
{'min': 20001, 'label': '>20000', "color": "#893448"},
{'min': 1000, 'max': 20000, 'label': '1000-20000', "color": "#ff585e"},
{'min': 500, 'max': 999, 'label': '500-999', "color": "#ffb248"},
{'min': 100, 'max': 499, 'label': '100-499', "color": "#ffb248"},
{'min': 1, 'max': 99, 'label': '1-99', "color": "#fff2d1"}
]),
)
)

china_map.render(r'F:\开课吧\RS基础课\china_map.html')

得到图像如下：
最后，我们根据国际数据，作出世界范围内疫情分布情况。
注意，这里我们同样需要将中文国名转化成英文名，这是由于pyecharts中的国名是英语，所以如果数据是中文，则会导致图表没有数据显示。
根据我的博客《从360图书馆抓取全球国家的中文名与英文名》，可以作出中文国名与英文对应的字典，我们记为dict_countries.
dict_countries = {'中国': 'China', '蒙古': 'Mongolia', '朝鲜': 'Dem. Rep. Korea', '韩国': 'Korea', '日本': 'Japan', '菲律宾': 'Philippines', '越南': 'Vietnam', '老挝': 'Laos', '柬埔寨': 'Cambodia', '缅甸': 'Myanmar', '泰国': 'Thailand', '马来西亚': 'Malaysia', '文莱': 'Brunei Darussalam', '新加坡': 'Singapore', '印度尼西亚': 'Indonesia', '尼泊尔': 'Nepal', '不丹': 'Bhutan', '孟加拉国': 'Bengal', '印度': 'India', '巴基斯坦': 'Pakistan', '斯里兰卡': 'Sri Lanka', '马尔代夫': 'Maldives', '哈萨克斯坦': 'Kazakhstan', '吉尔吉斯斯坦': 'Kyrgyzstan', '塔吉克斯坦': 'Tajikistan', '乌兹别克斯坦': 'Uzbekistan', '土库曼斯坦': 'Turkmenistan', '阿富汗': 'Afghanistan', '伊拉克': 'Iraq', '伊朗': 'Iran', '叙利亚': 'Syria', '约旦': 'Jordan', '黎巴嫩': 'Lebanon', '以色列': 'Israel', '巴勒斯坦': 'Palestine', '沙特阿拉伯': 'Saudi Arabia', '巴林': 'Bahrain', '卡塔尔': 'Qatar', '科威特': 'Kuwait', '阿拉伯联合酋长国阿联酋': 'United Arab Emirates', '阿曼': 'Oman', '也门': 'Yemen', '格鲁吉亚': 'Georgia', '亚美尼亚': 'Armenia', '阿塞拜疆': 'Azerbaijan', '土耳其': 'Turkey', '塞浦路斯': 'Cyprus', '芬兰': 'Finland', '瑞典': 'Sweden', '挪威': 'Norway', '冰岛': 'Iceland', '丹麦法罗群岛丹': 'Danmark Faroe Islands', '爱沙尼亚': 'Estonia', '拉脱维亚': 'Latvia', '立陶宛': 'Lithuania', '白俄罗斯': 'Belarus', '俄罗斯': 'Russia', '乌克兰': 'Ukraine', '摩尔多瓦': 'Moldova', '波兰': 'Poland', '捷克': 'Czech', '斯洛伐克': 'Slovakia', '匈牙利': 'Hungary', '德国': 'Germany', '奥地利': 'Austria', '瑞士': 'Switzerland', '列支敦士登()': 'Liechtenstein L I E', '英国': 'Britain', '爱尔兰': 'Ireland', '荷兰': 'Holand', '比利时': 'Belgium', '卢森堡': 'Luxemburg', '法国': 'France', '摩纳哥': 'Monaco', '罗马尼亚': 'Romania', '保加利亚': 'Bulgaria', '塞尔维亚': 'Serbia', '马其顿': 'Macedonia', '阿尔巴尼亚': 'Albania', '希腊': 'Greece', '斯洛文尼亚': 'Slovenia', '克罗地亚': 'Croatia', '波斯尼亚和墨塞哥维那(波黑)。': 'Bosnia Herzegovina', '意大利': 'Italy', '梵蒂冈': 'Vatican', '圣马力诺': 'San Marino', '马耳他': 'Malta', '西班牙': 'Spain', '葡萄牙': 'Portugal', '安道尔': 'Andorra', '埃及': 'Egypt', '利比亚': 'Libya', '苏丹': 'Sudan', '突尼斯': 'Tunis', '阿尔及利亚': 'Algeria', '摩洛哥': 'Morocco', '亚速尔群岛()葡': 'Azores Portugal', '马德拉群岛葡': 'M A D E I R A I S L A N D S', '埃塞俄比亚': 'Ethiopia', '厄立特里亚': 'Eritrea', '索马里': 'Somalia', '吉布提': 'Djibouti', '肯尼亚': 'Kenya', '坦桑尼亚': 'Tanzania', '乌干达': 'Uganda', '卢旺达': 'Rwanda', '布隆迪': 'Burundi', '塞舌尔': 'Seychelles', '乍得': 'Chad', '中非': 'Central Africa', '喀麦隆': 'Cameroon', '赤道几内亚': 'Equatorial Guinea', '加蓬': 'Gabon', '刚果共和国即：刚果布': 'Republicof Congo', '刚果民主共和国即：刚果金': 'Democratic Republicof Congo', '圣多美及普林西比': 'Sao Tomeand Principe', '毛里塔尼亚': 'Mauritania', '西撒哈拉注：未独立，详细请看：': 'Western Sahara', '塞内加尔': 'Senegal', '冈比亚': 'Gambian', '马里': 'Mali', '布基纳法索': 'Burkina Faso', '几内亚': 'Guinea', '几内亚比绍-': 'Guinea Bissau', '佛得角-': 'Cape Verde', '塞拉利昂': 'Sierra Leone', '利比里亚': 'Liberia', "科特迪瓦'": 'Coted Ivoire', '加纳': 'Ghana', '多哥': 'Togo', '贝宁': 'Benin', '尼日尔': 'Niger', '加那利群岛西': 'Canary Islands', '赞比亚': 'Zambia', '安哥拉': 'Angola', '津巴布韦': 'Zimbabwe', '马拉维': 'Malawi', '莫桑比克': 'Mozambique', '博茨瓦纳': 'Botswana', '纳米比亚': 'Namibia', '南非': 'South Africa', '斯威士兰': 'Swaziland', '莱索托': 'Lesotho', '马达加斯加': 'Madagascan', '科摩罗': 'Comorin', '毛里求斯': 'Mauritius', '留尼旺法': 'Reunion', '圣赫勒拿英': 'Saint Helena', '澳大利亚': 'Australia', '新西兰': 'New Zealand', '巴布亚新几内亚': 'Guinea', '所罗门群岛': 'Archipelago', '瓦努阿图': 'Vanuatu', '密克罗尼西亚': 'Micronesia', '马绍尔群岛': 'Marshall Islands', '帕劳': 'Palau', '瑙鲁': 'Nauru', '基里巴斯': 'Kiribati', '图瓦卢': 'Tuvalu T V', '萨摩亚': 'Samoa', '斐济群岛': 'Fiji Islands', '汤加': 'Tonga', '库克群岛新': 'Cook Islands', '关岛美': 'Guam', '新喀里多尼亚法': 'New Caledonia', '法属波利尼西亚': 'French Polynesia', '皮特凯恩岛英': 'Pitcairn Island', '瓦利斯与富图纳/法': 'Wallis Futuna', '纽埃新': 'Niue', '托克劳新': 'Tokelau', '美属萨摩亚': 'American Samoa', '北马里亚纳美': 'Mariana', '加拿大': 'Canada', '美国': 'America', '墨西哥': 'Mexico', '格陵兰丹': 'Greenland', '危地马拉': 'Guatemala', '伯利兹': 'Belize', '萨尔瓦多': 'Salvador', '洪都拉斯': 'Honduras', '尼加拉瓜': 'Nicaragua', '哥斯达黎加(另)': 'Costarica Costa Rica', '巴拿马': 'Panama', '巴哈马': 'Bahamas', '古巴': 'Cuba', '牙买加': 'Jamaica', '海地': 'Haiti', '多米尼加共和国': 'Dominican Republic', '安提瓜和巴布达': 'Antiguaand Barbuda', '圣基茨和尼维斯': 'Saint Kittsand Nevis', '多米尼克': 'Dominica', '圣卢西亚': 'Saint Lucia', '圣文森特和格林纳丁斯': 'Saint Vincentandthe Grenadines', '格林纳达': 'Grenada', '巴巴多斯': 'Barbados', '特立尼达和多巴哥': 'Trinidadand Tobago', '波多黎各美': 'Porto Rico', '英属维尔京群岛': 'British Virgin Islands', '美属维尔京群岛': 'Virgin Islandsofthe United States', '安圭拉英': 'Anguilla', '蒙特塞拉特英': 'Montserrat', '瓜德罗普法': 'Guadeloupe', '马提尼克法': 'Martinique', '荷属安的列斯': 'Netherlands Antilles', '阿鲁巴荷': 'Aruba', '特克斯和凯科斯群岛英': 'Turks And Caicos Islands', '开曼群岛英': 'Cayman Islands', '百慕大英': 'Bermuda', '哥伦比亚': 'Colombia', '委内瑞拉': 'Venezuela', '圭亚那': 'Guyana', '法属圭亚那': 'French Guiana', '苏里南': 'Suriname', '厄瓜多尔': 'Ecuador', '秘鲁': 'Peru', '玻利维亚': 'Bolivia', '智利': 'Chile', '阿根廷': 'Argentina', '乌拉圭': 'Uruguay', '巴拉圭': 'Paraguay'}

# 中英国名转换函数
def country_name(country):
if country in dict_countries:
return dict_countries[country];
# 从foreigns中选取 country和confirm 两列
world_data = foreigns[['country', 'confirm']];
# 国名转换
world_data['country'] = world_data['country'].map(country_name);
# 加上中国数据
china_world_data = china_info['confirm'].sum();
world_data = world_data.append({'country': 'China', 'confirm': china_world_data}, ignore_index=True);
print(world_data);

world_map = (
Map()
.add('', [list(z) for z in zip(world_data.country, world_data.confirm)], 'world')
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
# 标题
title_opts=opts.TitleOpts(title="世界地图疫情分布图"),
tooltip_opts=opts.TooltipOpts(formatter='{b}: {c}'),
# 视觉效果
visualmap_opts=opts.VisualMapOpts(is_piecewise=True,
pieces=[
{'min': 201, 'label': '>200', "color": "#893448"},
{'min': 51, 'max': 200, 'label': '51-200', "color": "#ff585e"},
{'min': 21, 'max': 50, 'label': '21-50', "color": "#ffb248" },
{'min': 11, 'max': 20, 'label': '11-20', "color": "#ffb248"},
{'min': 1, 'max': 10,'label': '1-10', "color" : "#fff2d1" }
]),
)
)

# 将世界疫情分布图存储进world_map.html
world_map.render(r'F:\开课吧\RS基础课\world_map.html');

得到图片为 
展开全文
• 数据可视化的库有挺多的，这里推荐几个比较常用的： Matplotlib Plotly Seaborn Ggplot Bokeh Pyechart Pygal 关注后私信小编 PDF领取十套电子文档书籍 Plotly plotly 文档地址...
• #参考图1 data_list = zip(name,confirm) #要使用list解包 #print(list(data_list)) #国家名称表中英文的映射 nameMap = { 'Singapore Rep.':'新加坡', 'Dominican Rep.':'多米尼加', 'Palestine':'巴勒斯坦', '...
• ## 最受推荐的10本Python书籍

万次阅读 多人点赞 2019-10-29 11:21:32
在学习本书时，你将学习使用Numpy和matplotlib等库和工具，并使用数据创建令人惊叹的可视化效果。你还将了解2D游戏和Web应用程序背后的思想以及如何创建它们。 这本560页长的书主要分为两部分。本书的第一部分讨论...
• Plotly Express 是 Python 交互式可视化库 Plotly 的高级组件，受 Seaborn 和 ggplot2 的启发，它专门设计为具有简洁，一致且易于学习的 API ：只需一次导入，您就可以在一个函数调用中创建丰富的交互式绘图，包括分...
• 将数据与地理信息叠加生产出数据地图，是近年来数据新闻生产的一种重要方式。...近年来，在线地图技术不断成熟，如果你需要在数据可视化项目中植入定制化的地图方案，目前已经有很多选择，下面就汇总了其中一部分。
• ## MATLAB 2018b 安装与简介

万次阅读 多人点赞 2019-02-18 13:07:00
matlab2018b安装教程 该版本是mathworks官方开发的新版本的商业数学软件，可以帮助用户不仅仅将自己的创意停留在桌面，还可以对大型数据集运行分析，并扩展到群集和云。另外matlab代码可以与其他语言集成，使您...
• 更新：上一篇文章《python 数据可视化利器》中，我写了 bokeh、pyecharts 的用法，但是有一个挺强大的库 plotly 没写，主要是我看到它的教程都是在 jupyter notebooks 中使用，说来也奇怪，硬是找不到如何本地使用...
• 其另一大特点在于提供命令行模式进行可视化操作，对部分用户群来说更方便。 当然，这款软件也有美中不足的地方，那就是不能进行所需的改动。我无法轻易地查看网络子结构，也很难输出漂亮的图像。我当时做梦都想拥有...
• 微软亚洲研究院 可视化 With the Asian market rapidly growing, almost every ambitious IT product sooner or later faces the challenge of localization for this region. And without knowing all its facets ...
• 项目简介 利用python爬取腾讯疫情实时播报数据...要用python开发系统，肯定要安装python开发环境了，直接百度python3 安装，有很多教程很详细，直接安装就好了。 pycharm安装 pycharm是一个集成开发环境，可以直接到官
• # # 安装请参考官网的教程，如果安装了 Anaconda，则不需要安装 pandas 库。 #使用模块之前先导入 In[1]: get_ipython().magic('matplotlib inline') import pandas as pd import numpy as np import ...
• 其另一大特点在于提供命令行模式进行可视化操作，对部分用户群来说更方便。 当然，这款软件也有美中不足的地方，那就是不能进行所需的改动。我无法轻易地查看网络子结构，也很难输出漂亮的图像。我当时做梦都想拥有...
• 原标题：Python 数据可视化利器（给Python开发者加星标，提升Python技能）作者：zone7（本文来自作者投稿，简介见末尾） 概述前言推荐plotlybokehpyecharts后记前言前段时间有读者向我反映，想看看数据可视化方面的...
• 数据可视化的第三方库挺多的，这里我主要推荐两个，分别是 bokeh、pyecharts。 如果我的文章对你有帮助，欢迎关注、点赞、转发，这样我会更有动力做原创分享。 推荐 数据可视化的库有挺多的，这里推荐几个比较常用的...
• Kaggle、Python数据可视化系列教程：https://www.xugj520.cn/tag/seaborn/ 欢迎使用数据可视化： 在这个动手实践的微课程中，您将学习如何使用seaborn（一种功能强大但易于使用的数据可视化工具）将您的数据可视化...
• 数据科学俱乐部中国数据科学家社区♚作者：zone7，一只爱折腾的后端攻城狮，喜欢写文分享。推荐数据可视化的库有挺多的，这里推荐几个比较常用的：MatplotlibPlot...
• 在之前的一篇文章《Python 数据可视化利器》中，我写了 Bokeh、pyecharts 的用法，但是有一个挺强大的库 Plotly 没写，主要是我看到它的教程都是在 Jupyter Notebooks 中使用，说来也奇怪，硬是找不到如何本地使用...
• 数据可视化的库有挺多的，这里推荐几个比较常用的： Matplotlib Plotly Seaborn Ggplot Bokeh Pyechart Pygal Plotly plotly 文档地址...
• 作者 | 阳哥出品 | Python数据之道 （ID：PyDataLab）大家好，我是阳哥。今天跟大家分享的是 Plotly Express 的详细使用教程。Plotly Express ...
• 每个文件的每一行都有一个名字，它们几乎都是罗马的文本（但是我们仍需要将其从Unicode转换为ASCII编码） 我们最终会得到一个语言对应名字列表的字典， {language: [names ...]} 通用变量“category”和...
• 熊猫压缩怎么使用Excel is one of the most popular and widely-used data tools; it’s hard to find an organization that doesn’t work with it in some way. From analysts, to sales VPs, to CEOs, various ...
• gephi 教程all-中文版，Gephi是一款开源免费跨平台基于JVM的复杂网络分析软件,，其主要用于各种网络和复杂系统，动态和分层图的交互可视化与探测开源工具。Gephi是一个广受赞誉的开源可视化及大型图表操作平台。...

...