再见Excel,这个Python数据可视化库太炫酷了转载

原创
小哥 3年前 (2022-10-16) 阅读数 52 #大杂烩

来源:Web来源:Network来源:Internet来源:Web

由以下代码生成,该代码是从以下代码生成的

from chord import Chord

matrix = [
    [0, 5, 6, 4, 7, 4],
    [5, 0, 5, 4, 6, 5],
    [6, 5, 0, 4, 5, 5],
    [4, 4, 4, 0, 5, 5],
    [7, 6, 5, 5, 0, 4],
    [4, 5, 5, 5, 4, 0],
]

names = ["Action", "Adventure", "Comedy", "Drama", "Fantasy", "Thriller"]

# 保存
Chord(matrix, names).to_html("chord-diagram.html")

强大的图形演示!强大的图形呈现能力!强烈的图形表现力!强大的图形演示!

Altair概述

Altair是一个应用程序是一个工具它是一个应用程序是一个用来Python声明性统计可视化库,基于Vega和Vega-Lite。

Altair提供强大而简洁的可视化语法,使您可以快速构建广泛的统计可视化。这是一个可视化的使用Altair API通过交互式散点图快速可视化数据集的示例。

Github:

https://altair-viz.github.io/getting\_started/overview.html

表现强悍

强大的图形演示!强大的图形呈现能力!强烈的图形表现力!强大的图形演示!

import matplotlib.pyplot as plt

# 创建数据
size_of_groups = [12, 11, 3, 30]

# 生成饼图
plt.pie(size_of_groups)

# 在中心添加一个圆在中心添加一个圆在中心添加一个圆, 生成环图生成环生成环
my_circle = plt.Circle((0, 0), 0.7, color=white)
p = plt.gcf()
p.gca().add_artist(my_circle)

plt.show()

image.png

import matplotlib.pyplot as plt
from matplotlib_venn import venn2

# 创建图表
venn2(subsets=(10, 5, 2), set_labels=(Group A, Group B))

# 显示
plt.show()

image.png

import circlify
import matplotlib.pyplot as plt

# 创建画布, 包含子图包含子图包含子图
fig, ax = plt.subplots(figsize=(14, 14))

# 标题
ax.set_title(Repartition of the world population)

# 移除轴移除轴
ax.axis(off)

# 人口数据
data = [{id: World, datum: 6964195249, children: [
              {id: "North America", datum: 450448697,
                  children: [
                     {id: "United States", datum: 308865000},
                     {id: "Mexico", datum: 107550697},
                     {id: "Canada", datum: 34033000}
                   ]},
              {id: "South America", datum: 278095425,
                  children: [
                     {id: "Brazil", datum: 192612000},
                     {id: "Colombia", datum: 45349000},
                     {id: "Argentina", datum: 40134425}
                   ]},
              {id: "Europe", datum: 209246682,
                  children: [
                     {id: "Germany", datum: 81757600},
                     {id: "France", datum: 65447374},
                     {id: "United Kingdom", datum: 62041708}
                   ]},
              {id: "Africa", datum: 311929000,
                  children: [
                     {id: "Nigeria", datum: 154729000},
                     {id: "Ethiopia", datum: 79221000},
                     {id: "Egypt", datum: 77979000}
                   ]},
              {id: "Asia", datum: 2745929500,
                  children: [
                     {id: "China", datum: 1336335000},
                     {id: "India", datum: 1178225000},
                     {id: "Indonesia", datum: 231369500}
                   ]}
    ]}]

# 使用circlify()计算, 获取圆的大小获取圆的大小, 位置
circles = circlify.circlify(
    data,
    show_enclosure=False,
    target_enclosure=circlify.Circle(x=0, y=0, r=1)
)

lim = max(
    max(
        abs(circle.x) + circle.r,
        abs(circle.y) + circle.r,
    )
    for circle in circles
)
plt.xlim(-lim, lim)
plt.ylim(-lim, lim)

for circle in circles:
    if circle.level != 2:
        continue
    x, y, r = circle
    ax.add_patch(plt.Circle((x, y), r, alpha=0.5, linewidth=2, color="lightblue"))

for circle in circles:
    if circle.level != 3:
        continue
    x, y, r = circle
    label = circle.ex["id"]
    ax.add_patch(plt.Circle((x, y), r, alpha=0.5, linewidth=2, color="#69b3a2"))
    plt.annotate(label, (x, y), ha=center, color="white")

for circle in circles:
    if circle.level != 2:
        continue
    x, y, r = circle
    label = circle.ex["id"]
    plt.annotate(label, (x, y), va=center, ha=center, bbox=dict(facecolor=white, edgecolor=black, boxstyle=round, pad=.5))

plt.show()

image.png

import folium
import pandas as pd

# 创建地图对象创建地图对象创建地图对象
m = folium.Map(location=[20,0], tiles="OpenStreetMap", zoom_start=2)

# 坐标点数据坐标点数据
data = pd.DataFrame({
   lon: [-58, 2, 145, 30.32, -4.03, -73.57, 36.82, -38.5],
   lat: [-34, 49, -38, 59.93, 5.33, 45.52, -1.29, -12.97],
   name: [Buenos Aires, Paris, melbourne, St Petersbourg, Abidjan, Montreal, Nairobi, Salvador],
   value: [10, 12, 40, 70, 23, 43, 100, 43]
}, dtype=str)

# 添加气泡
for i in range(0, len(data)):
    folium.Circle(
      location=[data.iloc[i][lat], data.iloc[i][lon]],
      popup=data.iloc[i][name],
      radius=float(data.iloc[i][value])*20000,
      color=crimson,
      fill=True,
      fill_color=crimson
    ).add_to(m)

# 保存
m.save(bubble-map.html)

image.png

import altair as alt
from vega_datasets import data

boroughs = alt.topo_feature(data.londonBoroughs.url, boroughs)
tubelines = alt.topo_feature(data.londonTubeLines.url, line)
centroids = data.londonCentroids.url

background = alt.Chart(boroughs).mark_geoshape(
    stroke=white,
    strokeWidth=2
).encode(
    color=alt.value(#eee),
).properties(
    width=700,
    height=500
)

labels = alt.Chart(centroids).mark_text().encode(
    longitude=cx:Q,
    latitude=cy:Q,
    text=bLabel:N,
    size=alt.value(8),
    opacity=alt.value(0.6)
).transform_calculate(
    "bLabel", "indexof (datum.name, ) > 0  ? substring(datum.name,0,indexof(datum.name,  )) : datum.name"
)

line_scale = alt.Scale(domain=["Bakerloo", "Central", "Circle", "District", "DLR",
                               "Hammersmith & City", "Jubilee", "Metropolitan", "Northern",
                               "Piccadilly", "Victoria", "Waterloo & City"],
                       range=["rgb(137,78,36)", "rgb(220,36,30)", "rgb(255,206,0)",
                              "rgb(1,114,41)", "rgb(0,175,173)", "rgb(215,153,175)",
                              "rgb(106,114,120)", "rgb(114,17,84)", "rgb(0,0,0)",
                              "rgb(0,24,168)", "rgb(0,160,226)", "rgb(106,187,170)"])

lines = alt.Chart(tubelines).mark_geoshape(
    filled=False,
    strokeWidth=2
).encode(
    alt.Color(
        id:N,
        legend=alt.Legend(
            title=None,
            orient=bottom-right,
            offset=0
        ),
        scale=line_scale
    )
)

background + labels + lines

image.png

import altair as alt
from vega_datasets import data

source = data.disasters.url

alt.Chart(source).mark_circle(
    opacity=0.8,
    stroke=black,
    strokeWidth=1
).encode(
    alt.X(Year:O, axis=alt.Axis(labelAngle=0)),
    alt.Y(Entity:N),
    alt.Size(Deaths:Q,
        scale=alt.Scale(range=[0, 4000]),
        legend=alt.Legend(title=Annual Global Deaths)
    ),
    alt.Color(Entity:N, legend=None)
).properties(
    width=450,
    height=320
).transform_filter(
    alt.datum.Entity != All natural disasters
)

image.png

import altair as alt
import pandas as pd

source = pd.DataFrame([
      {country: Great Britain, animal: cattle},
      {country: Great Britain, animal: cattle},
      {country: Great Britain, animal: cattle},
      {country: Great Britain, animal: pigs},
      {country: Great Britain, animal: pigs},
      {country: Great Britain, animal: sheep},
      {country: Great Britain, animal: sheep},
      {country: Great Britain, animal: sheep},
      {country: Great Britain, animal: sheep},
      {country: Great Britain, animal: sheep},
      {country: Great Britain, animal: sheep},
      {country: Great Britain, animal: sheep},
      {country: Great Britain, animal: sheep},
      {country: Great Britain, animal: sheep},
      {country: Great Britain, animal: sheep},
      {country: United States, animal: cattle},
      {country: United States, animal: cattle},
      {country: United States, animal: cattle},
      {country: United States, animal: cattle},
      {country: United States, animal: cattle},
      {country: United States, animal: cattle},
      {country: United States, animal: cattle},
      {country: United States, animal: cattle},
      {country: United States, animal: cattle},
      {country: United States, animal: pigs},
      {country: United States, animal: pigs},
      {country: United States, animal: pigs},
      {country: United States, animal: pigs},
      {country: United States, animal: pigs},
      {country: United States, animal: pigs},
      {country: United States, animal: sheep},
      {country: United States, animal: sheep},
      {country: United States, animal: sheep},
      {country: United States, animal: sheep},
      {country: United States, animal: sheep},
      {country: United States, animal: sheep},
      {country: United States, animal: sheep}
    ])

domains = [person, cattle, pigs, sheep]

shape_scale = alt.Scale(
    domain=domains,
    range=[
        M1.7 -1.7h-0.8c0.3 -0.2 0.6 -0.5 0.6 -0.9c0 -0.6 -0.4 -1 -1 -1c-0.6 0 -1 0.4 -1 1c0 0.4 0.2 0.7 0.6 0.9h-0.8c-0.4 0 -0.7 0.3 -0.7 0.6v1.9c0 0.3 0.3 0.6 0.6 0.6h0.2c0 0 0 0.1 0 0.1v1.9c0 0.3 0.2 0.6 0.3 0.6h1.3c0.2 0 0.3 -0.3 0.3 -0.6v-1.8c0 0 0 -0.1 0 -0.1h0.2c0.3 0 0.6 -0.3 0.6 -0.6v-2c0.2 -0.3 -0.1 -0.6 -0.4 -0.6z,
        M4 -2c0 0 0.9 -0.7 1.1 -0.8c0.1 -0.1 -0.1 0.5 -0.3 0.7c-0.2 0.2 1.1 1.1 1.1 1.2c0 0.2 -0.2 0.8 -0.4 0.7c-0.1 0 -0.8 -0.3 -1.3 -0.2c-0.5 0.1 -1.3 1.6 -1.5 2c-0.3 0.4 -0.6 0.4 -0.6 0.4c0 0.1 0.3 1.7 0.4 1.8c0.1 0.1 -0.4 0.1 -0.5 0c0 0 -0.6 -1.9 -0.6 -1.9c-0.1 0 -0.3 -0.1 -0.3 -0.1c0 0.1 -0.5 1.4 -0.4 1.6c0.1 0.2 0.1 0.3 0.1 0.3c0 0 -0.4 0 -0.4 0c0 0 -0.2 -0.1 -0.1 -0.3c0 -0.2 0.3 -1.7 0.3 -1.7c0 0 -2.8 -0.9 -2.9 -0.8c-0.2 0.1 -0.4 0.6 -0.4 1c0 0.4 0.5 1.9 0.5 1.9l-0.5 0l-0.6 -2l0 -0.6c0 0 -1 0.8 -1 1c0 0.2 -0.2 1.3 -0.2 1.3c0 0 0.3 0.3 0.2 0.3c0 0 -0.5 0 -0.5 0c0 0 -0.2 -0.2 -0.1 -0.4c0 -0.1 0.2 -1.6 0.2 -1.6c0 0 0.5 -0.4 0.5 -0.5c0 -0.1 0 -2.7 -0.2 -2.7c-0.1 0 -0.4 2 -0.4 2c0 0 0 0.2 -0.2 0.5c-0.1 0.4 -0.2 1.1 -0.2 1.1c0 0 -0.2 -0.1 -0.2 -0.2c0 -0.1 -0.1 -0.7 0 -0.7c0.1 -0.1 0.3 -0.8 0.4 -1.4c0 -0.6 0.2 -1.3 0.4 -1.5c0.1 -0.2 0.6 -0.4 0.6 -0.4z,
        M1.2 -2c0 0 0.7 0 1.2 0.5c0.5 0.5 0.4 0.6 0.5 0.6c0.1 0 0.7 0 0.8 0.1c0.1 0 0.2 0.2 0.2 0.2c0 0 -0.6 0.2 -0.6 0.3c0 0.1 0.4 0.9 0.6 0.9c0.1 0 0.6 0 0.6 0.1c0 0.1 0 0.7 -0.1 0.7c-0.1 0 -1.2 0.4 -1.5 0.5c-0.3 0.1 -1.1 0.5 -1.1 0.7c-0.1 0.2 0.4 1.2 0.4 1.2l-0.4 0c0 0 -0.4 -0.8 -0.4 -0.9c0 -0.1 -0.1 -0.3 -0.1 -0.3l-0.2 0l-0.5 1.3l-0.4 0c0 0 -0.1 -0.4 0 -0.6c0.1 -0.1 0.3 -0.6 0.3 -0.7c0 0 -0.8 0 -1.5 -0.1c-0.7 -0.1 -1.2 -0.3 -1.2 -0.2c0 0.1 -0.4 0.6 -0.5 0.6c0 0 0.3 0.9 0.3 0.9l-0.4 0c0 0 -0.4 -0.5 -0.4 -0.6c0 -0.1 -0.2 -0.6 -0.2 -0.5c0 0 -0.4 0.4 -0.6 0.4c-0.2 0.1 -0.4 0.1 -0.4 0.1c0 0 -0.1 0.6 -0.1 0.6l-0.5 0l0 -1c0 0 0.5 -0.4 0.5 -0.5c0 -0.1 -0.7 -1.2 -0.6 -1.4c0.1 -0.1 0.1 -1.1 0.1 -1.1c0 0 -0.2 0.1 -0.2 0.1c0 0 0 0.9 0 1c0 0.1 -0.2 0.3 -0.3 0.3c-0.1 0 0 -0.5 0 -0.9c0 -0.4 0 -0.4 0.2 -0.6c0.2 -0.2 0.6 -0.3 0.8 -0.8c0.3 -0.5 1 -0.6 1 -0.6z,
        M-4.1 -0.5c0.2 0 0.2 0.2 0.5 0.2c0.3 0 0.3 -0.2 0.5 -0.2c0.2 0 0.2 0.2 0.4 0.2c0.2 0 0.2 -0.2 0.5 -0.2c0.2 0 0.2 0.2 0.4 0.2c0.2 0 0.2 -0.2 0.4 -0.2c0.1 0 0.2 0.2 0.4 0.1c0.2 0 0.2 -0.2 0.4 -0.3c0.1 0 0.1 -0.1 0.4 0c0.3 0 0.3 -0.4 0.6 -0.4c0.3 0 0.6 -0.3 0.7 -0.2c0.1 0.1 1.4 1 1.3 1.4c-0.1 0.4 -0.3 0.3 -0.4 0.3c-0.1 0 -0.5 -0.4 -0.7 -0.2c-0.3 0.2 -0.1 0.4 -0.2 0.6c-0.1 0.1 -0.2 0.2 -0.3 0.4c0 0.2 0.1 0.3 0 0.5c-0.1 0.2 -0.3 0.2 -0.3 0.5c0 0.3 -0.2 0.3 -0.3 0.6c-0.1 0.2 0 0.3 -0.1 0.5c-0.1 0.2 -0.1 0.2 -0.2 0.3c-0.1 0.1 0.3 1.1 0.3 1.1l-0.3 0c0 0 -0.3 -0.9 -0.3 -1c0 -0.1 -0.1 -0.2 -0.3 -0.2c-0.2 0 -0.3 0.1 -0.4 0.4c0 0.3 -0.2 0.8 -0.2 0.8l-0.3 0l0.3 -1c0 0 0.1 -0.6 -0.2 -0.5c-0.3 0.1 -0.2 -0.1 -0.4 -0.1c-0.2 -0.1 -0.3 0.1 -0.4 0c-0.2 -0.1 -0.3 0.1 -0.5 0c-0.2 -0.1 -0.1 0 -0.3 0.3c-0.2 0.3 -0.4 0.3 -0.4 0.3l0.2 1.1l-0.3 0l-0.2 -1.1c0 0 -0.4 -0.6 -0.5 -0.4c-0.1 0.3 -0.1 0.4 -0.3 0.4c-0.1 -0.1 -0.2 1.1 -0.2 1.1l-0.3 0l0.2 -1.1c0 0 -0.3 -0.1 -0.3 -0.5c0 -0.3 0.1 -0.5 0.1 -0.7c0.1 -0.2 -0.1 -1 -0.2 -1.1c-0.1 -0.2 -0.2 -0.8 -0.2 -0.8c0 0 -0.1 -0.5 0.4 -0.8z
    ]
)

color_scale = alt.Scale(
    domain=domains,
    range=[rgb(162,160,152), rgb(194,81,64), rgb(93,93,93), rgb(91,131,149)]
)

alt.Chart(source).mark_point(filled=True, opacity=1, size=100).encode(
    alt.X(x:O, axis=None),
    alt.Y(animal:O, axis=None),
    alt.Row(country:N, header=alt.Header(title=)),
    alt.Shape(animal:N, legend=None, scale=shape_scale),
    alt.Color(animal:N, legend=None, scale=color_scale),
).transform_window(
    x=rank(),
    groupby=[country, animal]
).properties(width=550, height=140)

提供丰富的图形代码提供丰富的图形代码提供丰富的图形代码

推荐阅读:
入门: 最完整的零基学习最全面的零基学习最完整的零基学习Python的问题  | 从零开始学习从零基础学习从零基础学习8个月的Python  | 实战项目 |学Python这是捷径,这是捷径,这是捷径
干货:爬行豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析最佳球员分析 |   从万众期待到口碑惨败!唐探3令人失望  | 笑新伊田图龙记笑新伊田图龙记笑新伊田图龙记 | 谜语之王回答灯谜之王灯谜之王谜语之王 |用Python人山人海素描图人山人海素描图人山人海 Dishonor太火了,我用机器学习做了一个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python日常酷跑游戏日常酷跑游戏日常酷跑游戏!
AI: 会写诗的机器人会写诗的机器人会写诗的机器人 | 给图片上色给图片上色给图片上色 | 预测收入 | 《耻辱》太火了,我用机器学习做了一部迷你推荐系统电影
小工具: Pdf转Word易于修复表单和水印!易于处理的表单和水印!易于修复表单和水印!简单的表格和水印! | 一键把html将页面另存为网页另存为网页另存为pdf!|  再见PDF提款费!提款费!提款费!提款费用! | 用90构建最强大的代码行构建最强大的代码行构建最强大的代码行PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一个固定的低成本机票提醒!制作一张别针的低价机票提醒! |60代码行做了一个语音墙纸切换,天天见女士!

年度弹出文案年度弹出文案年度爆炸性文案

  • 1). 卧槽!Pdf转Word用Python轻松搞定 !

  • 2).学Python闻起来好香!我用100一行代码做了一个网站,帮助人们做了一行代码,做了一个网站,帮助了人们做了一行代码,帮助了人们PS旅行图片赚鸡腿吃旅行图片赚鸡腿

  • 3).第一次播放量过亿,火爆全网,我分析了《波妹》,发现了这些秘密

  • 4). 80一行行代码!使用Python让救济金做正确的事做做的人做好事的人A梦分身

  • 5).你必须掌握的东西你必须掌握20个python代码,简短而紧凑,永无止境的有用代码,简短而甜蜜,永无止境的有用的代码,简短而紧凑,永无止境的使用代码,简短而甜蜜,永无止境的用途

  • 6). 30个Python古怪技能集古怪小贴士收藏古怪技能集

  • 7). 我总结的80《菜鸟学习专页》《菜鸟学习专页》《菜鸟学习》Python精选干货.pdf》,都是干货

  • 8). 再见Python!我要学Go了!2500词深度分析词深度分析词深度分析 !

  • 9).发现了一只舔狗的福利!这Python爬虫神器太酷了,不能自动下载女孩的照片

点击阅读原文点击查看点击点击阅读点击阅读原文点击查看B放我鸽子看录像!站在我的录像带上!在视频里放我鸽子!站在我的录像带上!

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门