python绘制发散型柱状图+误差阴影时间序列图+双坐标系时间序列图+绘制金字塔图

目录
  • 1.绘制发散型柱状图
  • 2.绘制带误差阴影的时间序列图
  • 3.绘制双坐标系时间序列图
  • 4.绘制金字塔图

1.绘制发散型柱状图

python绘制发散型柱状图,展示单个指标的变化的顺序和数量,在柱子上添加了数值文本。

实现代码:

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings(action='once')
df = pd.read_csv("C:\工作\学习\数据杂坛/datasets/mtcars.csv")
x = df.loc[:, ['mpg']]
df['mpg_z'] = (x - x.mean()) / x.std()
df['colors'] = ['red' if x < 0 else 'green' for x in df['mpg_z']]
df.sort_values('mpg_z', inplace=True)
df.reset_index(inplace=True)
# Draw plot
plt.figure(figsize=(10, 6), dpi=80)
plt.hlines(y=df.index,
           xmin=0,
           xmax=df.mpg_z,
           color=df.colors,
           alpha=0.8,
           linewidth=5)
for x, y, tex in zip(df.mpg_z, df.index, df.mpg_z):
    t = plt.text(x, y, round(tex, 2), horizontalalignment='right' if x < 0 else 'left',

                 verticalalignment='center', fontdict={'color':'black' if x < 0 else 'black', 'size':10})

# Decorations

plt.gca().set(ylabel='$Model', xlabel='$Mileage')
plt.yticks(df.index, df.cars, fontsize=12)
plt.xticks(fontsize=12)
plt.title('Diverging Bars of Car Mileage')
plt.grid(linestyle='--', alpha=0.5)
plt.show()

实现效果:

2.绘制带误差阴影的时间序列图

实现功能:

python绘制带误差阴影的时间序列图。

实现代码:

from scipy.stats import sem
import pandas as pd
import matplotlib.pyplot as plt
# Import Data
df_raw = pd.read_csv('F:\数据杂坛\datasets\orders_45d.csv',
                     parse_dates=['purchase_time', 'purchase_date'])

# Prepare Data: Daily Mean and SE Bands
df_mean = df_raw.groupby('purchase_date').quantity.mean()
df_se = df_raw.groupby('purchase_date').quantity.apply(sem).mul(1.96)

# Plot
plt.figure(figsize=(10, 6), dpi=80)
plt.ylabel("Daily Orders", fontsize=12)
x = [d.date().strftime('%Y-%m-%d') for d in df_mean.index]
plt.plot(x, df_mean, color="#c72e29", lw=2)
plt.fill_between(x, df_mean - df_se, df_mean + df_se, color="#f8f2e4")

# Decorations
# Lighten borders
plt.gca().spines["top"].set_alpha(0)
plt.gca().spines["bottom"].set_alpha(1)
plt.gca().spines["right"].set_alpha(0)
plt.gca().spines["left"].set_alpha(1)
plt.xticks(x[::6], [str(d) for d in x[::6]], fontsize=12)
plt.title("Daily Order Quantity of Brazilian Retail with Error Bands (95% confidence)",fontsize=14)

# Axis limits
s, e = plt.gca().get_xlim()
plt.xlim(s, e - 2)
plt.ylim(4, 10)

# Draw Horizontal Tick lines
for y in range(5, 10, 1):
    plt.hlines(y,
               xmin=s,
               xmax=e,
               colors='black',
               alpha=0.5,
               linestyles="--",
               lw=0.5)

plt.show()

实现效果:

3.绘制双坐标系时间序列图

实现功能:

python绘制双坐标系(双变量)时间序列图。

实现代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Import Data
df = pd.read_csv("F:\数据杂坛\datasets\economics.csv")

x = df['date']
y1 = df['psavert']
y2 = df['unemploy']

# Plot Line1 (Left Y Axis)
fig, ax1 = plt.subplots(1, 1, figsize=(12, 6), dpi=100)
ax1.plot(x, y1, color='tab:red')

# Plot Line2 (Right Y Axis)
ax2 = ax1.twinx()  # instantiate a second axes that shares the same x-axis
ax2.plot(x, y2, color='tab:blue')

# Decorations
# ax1 (left Y axis)
ax1.set_xlabel('Year', fontsize=18)
ax1.tick_params(axis='x', rotation=70, labelsize=12)
ax1.set_ylabel('Personal Savings Rate', color='#dc2624', fontsize=16)
ax1.tick_params(axis='y', rotation=0, labelcolor='#dc2624')
ax1.grid(alpha=.4)

# ax2 (right Y axis)
ax2.set_ylabel("Unemployed (1000's)", color='#01a2d9', fontsize=16)
ax2.tick_params(axis='y', labelcolor='#01a2d9')
ax2.set_xticks(np.arange(0, len(x), 60))
ax2.set_xticklabels(x [::60], rotation=90, fontdict={'fontsize': 10})
ax2.set_title(
    "Personal Savings Rate vs Unemployed: Plotting in Secondary Y Axis",
    fontsize=18)
fig.tight_layout()
plt.show()

实现效果:

4.绘制金字塔图

实现功能:

python绘制金字塔图,一种排过序的分组水平柱状图barplot,可很好展示不同分组之间的差异,可可视化逐级过滤或者漏斗的每个阶段。

实现代码:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# Read data
df = pd.read_csv("D:\数据杂坛\datasets\email_campaign_funnel.csv")

# Draw Plot
plt.figure()
group_col = 'Gender'
order_of_bars = df.Stage.unique()[::-1]
colors = [
    plt.cm.Set1(i / float(len(df[group_col].unique()) - 1))
    for i in range(len(df[group_col].unique()))
]

for c, group in zip(colors, df[group_col].unique()):
    sns.barplot(x='Users',
                y='Stage',
                data=df.loc[df[group_col] == group, :],
                order=order_of_bars,
                color=c,
                label=group)

# Decorations
plt.xlabel("$Users$")
plt.ylabel("Stage of Purchase")
plt.yticks(fontsize=12)
plt.title("Population Pyramid of the Marketing Funnel", fontsize=18)
plt.legend()
plt.savefig('C:\工作\学习\数据杂坛\素材\\0815\金字塔', dpi=300, bbox_inches = 'tight')
plt.show()

实现效果:

到此这篇关于python绘制发散型柱状图+误差阴影时间序列图+双坐标系时间序列图+绘制金字塔图的文章就介绍到这了,更多相关Python图绘制内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python数据分析Matplotlib 柱状图绘制

    前言: 柱状图是一种使用矩形柱来表示数据分布的图表,可以横向排列,也可以纵向排列,它的高度或长度和他们所代表的值成正比关系. Matplotlib 提供了bar()方法绘制柱状图, 语法格式如下: plt.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs) 常用参数及说明如下: x:表示x轴数据,接收list列表类型数据 height:表示柱状图的高度,接收list列表类型数据 width:

  • 手把手教你使用Python绘制时间序列图

    目录 01从Quandl检索数据集 02绘制收盘价与成交量的关系图 03绘制烛台图 导读:分析时间序列数据的一种简单而有效的方法就是将时间序列数据可视化在一个图表上,这样我们就可以从中推断出某些假设.本文将以股价数据集为例,指导你从Quandl下载股价数据集,并将这些数据绘制在价格和成交量图表上.还将教大家绘制烛台图,比起直线图表,这将给我们更多的信息. 01从Quandl检索数据集 Quandl简介 Quandl是一个为金融.经济和另类数据服务的平台,这些数据由各种数据发布商提供,包括联合国.

  • python OpenCV图像金字塔

    目录 1.图像金字塔理论基础 2.向下取样函数及使用 3.向上取样函数及使用 4.采样可逆性研究 5.拉普拉斯金字塔 6.图像轮廓介绍 轮廓近似 1.图像金字塔理论基础 图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构.一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合.其通过梯次向下采样获得,直到达到某个终止条件才停止采样.我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低.那我们为什么要做图像金字塔呢?这

  • Python数据分析之使用matplotlib绘制折线图、柱状图和柱线混合图

    目录 matplotlib介绍 matplotlib绘制折线图 matplotlib绘制柱状图 matplotlib绘制柱线混合图 总结 matplotlib介绍 Matplotlib 是 Python 的绘图库. 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案. 它也可以和图形工具包一起使用,如 PyQt 和 wxPython. 安装Matplotlib库命令:在cmd命令窗口输入pip install matplotlib. matplotlib绘制折线图 1.绘

  • python实现图像高斯金字塔的示例代码

    import cv2 import numpy as np import matplotlib.pyplot as plt # Grayscale def BGR2GRAY(img): # Grayscale gray = 0.2126 * img[..., 2] + 0.7152 * img[..., 1] + 0.0722 * img[..., 0] return gray # Bi-Linear interpolation def bl_interpolate(img, ax=1., ay

  • python计算机视觉opencv图像金字塔轮廓及模板匹配

    目录 1.图像金字塔 ①高斯金字塔 ②拉普拉斯金字塔 2.图像轮廓 ①寻找轮廓 ②轮廓特征 ③轮廓绘制 3.模板匹配 ①模板匹配 ②匹配框线绘制 ③多对象匹配 4.直方图统计 ①直方图绘制 ②直方图统计 ③直方图的mask操作 ④直方图均衡化 5.傅里叶变换 1.图像金字塔 ①高斯金字塔 向下采样,数据会越来越少,减少的方式是:将偶数行和列删除 向上采样,数据会越来越多,将图像在每个方向上扩大为原来的两倍,新增的行和列用0来填充.使用先前同样的内核与放大后的图像卷积,获得近似值. 上采样之后,图

  • python 用opencv实现图像修复和图像金字塔

    我们将学习如何通过一种称为修复的方法去除旧照片中的小噪音,笔画等.基本思路很简单:用相邻像素替换那些坏标记,使其看起来像邻域. cv2.inpaint() cv2.INPAINT_TELEA cv2.INPAINT_NS import numpy as np import cv2 as cv img = cv.imread('messi_2.jpg') mask = cv.imread('mask2.png',0) dst = cv.inpaint(img,mask,3,cv.INPAINT_T

  • Python图像处理之图像金字塔详解

    目录 一.图像金字塔原理 二.图像向上取样 三.图像向下取样 四.总结 一.图像金字塔原理 上一篇文章讲解的图像采样处理可以降低图像的大小,本文将补充图像金字塔知识,了解专门用于图像向上采样和向下采样的pyrUp()和pyrDown()函数. 图像金字塔是指由一组图像且不同分别率的子图集合,它是图像多尺度表达的一种,以多分辨率来解释图像的结构,主要用于图像的分割或压缩.一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合.如图10-1所示,它包括了四层图像,将

  • 教你利用python的matplotlib(pyplot)绘制折线图和柱状图

    目录 前言 一.折线图 二.柱状图 总结 前言 今天帮师兄赶在deadline之前画论文的图,现学现卖很是刺激,现把使用matplotlib的子库pyplot画折线图和柱状图的代码记录分享一下,方便大家参考,个人感觉pyplot真的蛮方便的,非常值得使用. 先看下官方对pyplot的描述:“Provides a MATLAB-like plotting framework.”.对,就是一个类似matlab的画图框架.就不多多说了,直接上代码吧: 一.折线图 代码: import matplotl

  • python绘制发散型柱状图+误差阴影时间序列图+双坐标系时间序列图+绘制金字塔图

    目录 1.绘制发散型柱状图 2.绘制带误差阴影的时间序列图 3.绘制双坐标系时间序列图 4.绘制金字塔图 1.绘制发散型柱状图 python绘制发散型柱状图,展示单个指标的变化的顺序和数量,在柱子上添加了数值文本. 实现代码: import numpy as np import pandas as pd import matplotlib as mpl import matplotlib.pyplot as plt import seaborn as sns import warnings wa

  • python绘制分组对比柱状图

    本文实例为大家分享了python绘制分组对比柱状图的具体代码,供大家参考,具体内容如下 首先放效果图:  # -*- coding: utf-8 -*- import numpy as np   import tensorflow as tf from matplotlib.path import Path from matplotlib.patches import PathPatch import matplotlib.pyplot as plt import matplotlib from

  • Python绘制百分比堆叠柱状图并填充图案

    通过Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案.主要原因是有些论文打印出是黑白色的,不同类别之间区分不明显,所以做了这种方案. 存在一个问题:不知道如何根据填充图案设置图例,本文中可谓“曲线救国”,将图例的颜色块设置为了白色,所以如果有人知道如何根据hatching设置图例可以讨论,原始的legend方法中是未提供该类参数的. 图形如下: 代码如下 import numpy as np import matplotlib.pyplot as plt

  • Python绘制多因子柱状图的实现示例

    目录 背景介绍 软件介绍 绘图教程 最后 背景介绍 R和Python作为两个开源.且容易上手的数据分析和绘图工具,在科研中应用的比较广泛. 在接下来的日子,我们围绕Python进行绘图和数据分析话题,写一系列推文,事实上是我自己的一些学习笔记分享出来,为了我 方便查阅,也方便大家翻阅. 软件介绍 [软件名称]:Anaconda | Spyder [软件安装]:可以参考下方这个推文 Anaconda的下载和安装 绘图教程 1.打开Spyder软件,我们导入相应的库,以及生成一组数据.(一开始作图的

  • python+matplotlib实现礼盒柱状图实例代码

    演示结果: 完整代码: import matplotlib.pyplot as plt import numpy as np from matplotlib.image import BboxImage from matplotlib._png import read_png import matplotlib.colors from matplotlib.cbook import get_sample_data class RibbonBox(object): original_image =

  • Python使用matplotlib给柱状图添加数据标签bar_label()

    目录 0.更新matplotlib库 1.导入库 2.数据准备 3.绘制柱状图 4.绘图结果 5.完整代码 6.bar_label()相关参数的补充说明 0.更新matplotlib库 本文后续的实验过程都是基于matplotlib版本大于等于3.4.1,如果版本较低,是无法实行后续操作的,如何在Pycharm中直接更新matplotlib库的版本,请参照方法:以tensorflow库为例用Pycharm更新第三方库 1.导入库 直接导入matplotlib.pyplot库,代码为: impor

  • 浅析Python 中整型对象存储的位置

    在 Python 整型对象所存储的位置是不同的, 有一些是一直存储在某个存储里面, 而其它的, 则在使用时开辟出空间. 说这句话的理由, 可以看看如下代码: a = 5 b = 5 a is b # True a = 500 b = 500 a is b # False 由上面的代码可知, 整型 5 是一直存在的, 而整型 500 不是一直存在的. 那么有哪些整数是一直存储的呢? a, b, c = 0, 0, 0 while a is b: i += 1 a, b = int(str(i)),

  • jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】

    本文实例讲述了jQuery插件HighCharts绘制简单2D柱状图效果.分享给大家供大家参考,具体如下: 1.实例代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HighCharts 2D柱状图</title> <script type="text/javascript" src="js/jquer

  • C# 绘制统计图大全(柱状图, 折线图, 扇形图)

    统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有Flash制作的统计图形, 有水晶报表生成统计图形, 有专门制图软件制作, 也有编程语言自己制作的:这里我们用就C# 制作三款最经典的统计图: 柱状图, 折线图和扇形图:既然是统计, 当然需要数据, 这里演示的数据存于Sql Server2000中, 三款统计图形都是动态生成. 其中柱状图我会附上制作步骤, 其他两款统计图直接附源码. 说明: 需求不一样, 统计图形绘制后的显示效果也不一样, 比如这里柱状图

  • python使用matplotlib画柱状图、散点图

    本文实例为大家分享了python使用matplotlib画柱状图.散点图的具体代码,供大家参考,具体内容如下 柱状图(plt.bar) 代码与注释 import numpy as np from matplotlib import pyplot as plt plt.figure(figsize=(9,6)) n = 8 X = np.arange(n)+1 #X是1,2,3,4,5,6,7,8,柱的个数 # numpy.random.uniform(low=0.0, high=1.0, siz

随机推荐