豆瓣T250可视化

数据可视化

网站
https://pyecharts.org/#/zh-cn/intro
里面有各种各样的表
在这里插入图片描述

当我们在实现一些数据可视化时发现使用grid函数时发现图会粘到一块,实现不了多张图呈现在一起的效果。
在这里插入图片描述

我们使用page方法page帮助我们将多个模块垂直组合到一个页面中。就可以

os.environ["PYSPARK_PYTHON"] =r"C:\Users\Administrator\Desktop\zuoye\.venv\Scripts\python.exe"
其中这个代码为你本机的路径在这里插入图片描述



import collections
import json

from pyecharts.charts import Map, Pie, Funnel, Line
from pyecharts.charts import WordCloud
from pyecharts import options as opts
from pyecharts.charts import Bar, Page


from pyspark import SparkConf,SparkContext
import os
os.environ["PYSPARK_PYTHON"] =r"C:\Users\Administrator\Desktop\zuoye\.venv\Scripts\python.exe"

conf =SparkConf().setMaster("local[*]").setAppName("movie")
sc =SparkContext(conf=conf)

with open("douban.json", encoding="utf-8")as f:
   data=json.load(f)
doubanRdd =sc.parallelize(data)
# print(doubanRdd.collect())



typeRdd = doubanRdd.flatMap(lambda x:x["movieType"])
typeRdd1 = typeRdd.map(lambda x:(x,1))
words = typeRdd1.reduceByKey(lambda x,y:x+y)
#print(words.collect())


def wordCloud() -> WordCloud:
       wordCloud = (
       WordCloud()
       .add("", words.collect(), word_size_range=[12, 55])
       .set_global_opts(
       title_opts=opts.TitleOpts(title="电影类型词云图",pos_top='15%'),
       legend_opts=opts.LegendOpts(pos_top='15%')
   )
)
       return wordCloud



author=[]
for i in data:
   #author += i["movieAuthor"]
   author.append(i["movieAuthor"])
#print(author)
authorA =collections.Counter(author).most_common(5)
#元组转字典dict
authorA=dict(authorA)
#print(authorA)
#转列表
xdata1=list(authorA.keys())
ydata1=list(authorA.values())
print(xdata1)
print(ydata1)

# print(xdata,ydata)

def bar() -> Bar:
       bar = (
               Bar()
               .add_xaxis(xdata1)
               .add_yaxis("导演电影数", ydata1)
               .set_global_opts(title_opts=opts.TitleOpts(title="导演电影Top5"))
       )
       return bar



Country = []
for i in data:
       Country += i["movieCountry"]

Country = collections.Counter(Country).most_common()
# 元组转字典dict
Country = dict(Country)

xdata = list(Country.keys())
ydata = list(Country.values())



def m() -> Map:
       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':'布基纳法索',
       'Bangladesh':'孟加拉国',
       'Bulgaria':'保加利亚',
       'The Bahamas':'巴哈马',
       'Bosnia and Herz.':'波斯尼亚和黑塞哥维那',
       'Belarus':'白俄罗斯',
       'Belize':'伯利兹',
       'Bermuda':'百慕大',
       'Bolivia':'玻利维亚',
       'Brazil':'巴西',
       'Brunei':'文莱',
       'Bhutan':'不丹',
       'Botswana':'博茨瓦纳',
       'Central African Rep.':'中非',
       'Canada':'加拿大',
       'Switzerland':'瑞士',
       'Chile':'智利',
       'China':'中国',
       'Ivory Coast':'象牙海岸',
       'Cameroon':'喀麦隆',
       'Dem. Rep. Congo':'刚果民主共和国',
       'Congo':'刚果',
       'Colombia':'哥伦比亚',
       'Costa Rica':'哥斯达黎加',
       'Cuba':'古巴',
       'N. Cyprus':'北塞浦路斯',
       'Cyprus':'塞浦路斯',
       'Czech Rep.':'捷克',
       'Germany':'德国',
       'Djibouti':'吉布提',
       'Denmark':'丹麦',
       'Algeria':'阿尔及利亚',
       'Ecuador':'厄瓜多尔',
       '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':'摩尔多瓦',
       'Madagascar':'马达加斯加',
       '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':'塞拉利昂',
       'El Salvador':'萨尔瓦多',
       'Somaliland':'索马里兰',
       'Somalia':'索马里',
       'Serbia':'塞尔维亚',
       'Suriname':'苏里南',
       'Slovakia':'斯洛伐克',
       'Slovenia':'斯洛文尼亚',
       'Sweden':'瑞典',
       'Swaziland':'斯威士兰',
       'Syria':'叙利亚',
       'Chad':'乍得',
       'Togo':'多哥',
       'Thailand':'泰国',
       'Tajikistan':'塔吉克斯坦',
       'Turkmenistan':'土库曼斯坦',
       'East Timor':'东帝汶',
       'Trinidad and Tobago':'特里尼达和多巴哥',
       'Tunisia':'突尼斯',
       'Turkey':'土耳其',
       'Tanzania':'坦桑尼亚',
       'Uganda':'乌干达',
       'Ukraine':'乌克兰',
       'Uruguay':'乌拉圭',
       'United States':'美国',
       'Uzbekistan':'乌兹别克斯坦',
       'Venezuela':'委内瑞拉',
       'Vietnam':'越南',
       'Vanuatu':'瓦努阿图',
       'West Bank':'西岸',
       'Yemen':'也门',
       'South Africa':'南非',
       'Zambia':'赞比亚',
       'Zimbabwe':'津巴布韦'
   }
       c = (
       Map()
       .add("世界地图", [list(z) for z in zip(xdata, ydata)], "world",name_map=nameMap)
       .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
       .set_global_opts(
       title_opts=opts.TitleOpts(title="Map-世界地图"),
       visualmap_opts=opts.VisualMapOpts(max_=200))
)
       return c

def pie() -> Pie:
       d = (
           Pie()
           .add(
               "",
               [list(z) for z in zip(xdata, ydata)],
               radius=["30%", "75%"],
               center=["25%", "50%"],
               rosetype="radius",
               label_opts=opts.LabelOpts(is_show=False),
           )
           .set_global_opts(title_opts=opts.TitleOpts(title="电影国家"))
       )
       return d


yearRdd = (doubanRdd.map(lambda x: x["movieYear"])
          .map(lambda x: (x, 1))
          .reduceByKey(lambda x, y: x + y)).sortBy(lambda x: x[1], ascending=False)
# print(yearRdd.collect())
yearRddTop10 = yearRdd.take(10)
year = list(dict(yearRddTop10).keys())
count = list(dict(yearRddTop10).values())
# print(year,count)
def funnel_year() -> Funnel:
   funnel = (
       Funnel()
       .add(
           "年份",
           [list(z) for z in zip(year, count)],
           label_opts=opts.LabelOpts(position="inside"),
       )
       .set_global_opts(title_opts=opts.TitleOpts(title="历年电影产量"), legend_opts=opts.LegendOpts(pos_left="20%"))
   )
   return funnel


def line_year()-> Line:
       c = (
               Line()
               .add_xaxis(xaxis_data=xdata)
               .add_yaxis(
                       "电影年份",
                       ydata,
                       symbol="triangle",
                       symbol_size=20,
                       linestyle_opts=opts.LineStyleOpts(color="red", width=4, type_="dashed"),
                       itemstyle_opts=opts.ItemStyleOpts(
                               border_width=3, border_color="yellow", color="blue"
                       ),
               )
               .set_global_opts(title_opts=opts.TitleOpts(title="电影的年份"))
       )
       return c



#运用page实现多个图例绘制在一张图
page = Page(layout=Page.DraggablePageLayout)
#page添加图例
page.add(wordCloud(),bar(),m(),pie(),funnel_year(),line_year())
page.render("test.html")

我将我自己爬出的数据放在了同一个包下面所以打开路径是对的,这就是复制粘贴的一个过程,图表可以自己拿到而且只需要改改其中的一些值就可以
在这里插入图片描述

自行移动然后操作图表
在这里插入图片描述

  • 27
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值