将数据可视化有许多选择:

  1. 图的类型
  2. 定制化方式

选择什么样的表现方式通常取决于:

  1. 数据
  2. 你想表达什么

1、Labels

# Basic scatter plot, log scale
plt.scatter(gdp_cap, life_exp)
plt.xscale('log') # Strings
xlab = 'GDP per Capita [in USD]'
ylab = 'Life Expectancy [in years]'
title = 'World Development in 2007' # Add axis labels
plt.xlabel(xlab)
plt.ylabel(ylab) # Add title
plt.title(title) # After customizing, display the plot
plt.show()

2、Ticks

# Scatter plot
plt.scatter(gdp_cap, life_exp) # Previous customizations
plt.xscale('log')
plt.xlabel('GDP per Capita [in USD]')
plt.ylabel('Life Expectancy [in years]')
plt.title('World Development in 2007') # Definition of tick_val and tick_lab
tick_val = [1000,10000,100000]
tick_lab = ['1k','10k','100k'] # Adapt the ticks on the x-axis
plt.xticks(tick_val, tick_lab) # After customizing, display the plot
plt.show()

3、Sizes

# Import numpy as np
import numpy as np # Store pop as a numpy array: np_pop
np_pop = np.array(pop) # Double np_pop
np_pop *= 2 # Update: set s argument to np_pop
plt.scatter(gdp_cap, life_exp, s = np_pop) # Previous customizations
plt.xscale('log')
plt.xlabel('GDP per Capita [in USD]')
plt.ylabel('Life Expectancy [in years]')
plt.title('World Development in 2007')
plt.xticks([1000, 10000, 100000],['1k', '10k', '100k']) # Display the plot
plt.show()

之所以把 pop 换成 np_pop 是因为 np_pop 可以方便的整体数学运算, list 不具备这样的性质。

5、Colors

# Specify c and alpha inside plt.scatter()
plt.scatter(x = gdp_cap, y = life_exp, s = np.array(pop) * 2, c = col, alpha = 0.8) # Previous customizations
plt.xscale('log')
plt.xlabel('GDP per Capita [in USD]')
plt.ylabel('Life Expectancy [in years]')
plt.title('World Development in 2007')
plt.xticks([1000,10000,100000], ['1k','10k','100k']) # Show the plot
plt.show()

c 设置颜色, alpha 设置透明度。

6、定制化补充

# Scatter plot
plt.scatter(x = gdp_cap, y = life_exp, s = np.array(pop) * 2, c = col, alpha = 0.8) # Previous customizations
plt.xscale('log')
plt.xlabel('GDP per Capita [in USD]')
plt.ylabel('Life Expectancy [in years]')
plt.title('World Development in 2007')
plt.xticks([1000,10000,100000], ['1k','10k','100k']) # Additional customizations
plt.text(1550, 71, 'India')
plt.text(5700, 80, 'China')
# Add grid() call
plt.grid(True) # Show the plot
plt.show()

附加

什么时候用对数坐标?来自百度百科

一、普通坐标与对数坐标
1、普通坐标的刻度之间的间隔距离与价格成正比。
即在普通坐标系中,所有当日涨跌相等的
K 线长度是一样的。
比如所有自开盘至收盘上涨 1 元钱的 K
线具有同样的长度。但是在对数坐标系中,坐标刻度之间的间隔距离与价格的对数成正比。即当日涨跌幅( % )相等的 K
线才具有同样的长度。
如所有自开盘至收盘上涨 10% 的 K
线在对数坐标中长度是一样的。
2、对数坐标与普通坐标的区别是:假定股票连续上涨,从 5 元涨到 11 元,每天涨 1
元,在普通坐标中画出的是 6 条一样长的阳线,而在对数坐标中,由于第一根阳线从 5 元到 6 元涨幅为 20% ,最后一根阳线从 10
元到 11 元涨幅为 10%
,所以其最后一根阳线的长度是第一根的一半。我们推荐使用对数坐标系,
因为对数坐标系能够反映股票的实际盈亏。
二、普通坐标及对数坐标画线的注意事项
1、画直线必须用对数坐标
?因为普通坐标表示的是价格变化的绝对值,即今天比昨天涨了多少点,而对数坐标表示的是价格变化的相对强度,即今天比昨天涨了%几。通常情况下,只有在对数坐标上才能看到平行的通道线(比较直观),而在普通坐标上的通道线并不是直线,实际是2个指数函数,是曲线。2、画黄金分割线做水平黄金分割线一定要用普通坐标
,如果用对数坐标的话,做出的是对数坐标的黄金分割,而不是价格的黄金分割趋势线+对数坐标的妙用
趋势线作为技术分析的重要工具,有着非常好的实战效果,但在国人运用过程中,不少人都忽略了一项重要因素:
其运用于研判比较长时间且价格变化比较大的K图时,应选取对数坐标.
反之则可用普通坐标.
主要原因在于对数坐标在反映价格变化时是以比例为基数,而非简单的算术值.这一点,需要引起足够重视,
而且在对趋势线是否被穿越的观察上,使用对数坐标的K图比普通坐标的K图要敏感得多!尤其是在较长周期和价格变动比较大的情况下!
简单举例如下(观察两种坐标下趋势线的不同,尤其是跌穿趋势的关键位置和时间点):
可以很清楚地发现,如果作为中长线的波段交易者,运用对数坐标的趋势线来判断趋势完结和反抽位置要比运用普通坐标来得及时得多.
由普通坐标与对数坐标的原理可知,短周期内的普通坐标与对数坐标的差异很小,但长周期内普通坐标与对数坐标可能会差异比较大,有些在普通坐标上没有规律的图形到对数坐标上可能极有规律。

Python笔记 #11# 统计图定制化的更多相关文章

  1. selenium+python笔记11

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: search in mail box "&qu ...

  2. python笔记-11 rabbitmq

    一.理解rabbitmq的基本背景 1.理解消息队列 1.1 普通queue 在前面的博客中所提到的队列,此处均称之为普通队列 简述一下普通队列的一些分类及不足 1.1.1 基本Queue:queue ...

  3. python笔记11

    今日内容 函数小高级 lambda 表达式 内置函数 内容回顾 函数基本结构 参数 形参 基本参数:def func(a1,a2):pass 默认值:def func(a1,a2=123):pass ...

  4. python+robot framework实现测报告定制化和邮件发送

    前面已经介绍了python+robot framework自动化框架和基本原理的实现,详情请看 python+robot framework接口自动化测试 本章主要讲解报告已经产生那如何以自动化的方式 ...

  5. Python标准库笔记(11) — Operator模块

    Operator--标准功能性操作符接口. 代码中使用迭代器时,有时必须要为一个简单表达式创建函数.有些情况这些函数可以用一个lambda函数实现,但是对于某些操作,根本没必要去写一个新的函数.因此o ...

  6. Linux Shell输出颜色字符学习笔记(附Python脚本实现自动化定制生成)

    齿轮发出咔嚓一声,向前进了一格.而一旦向前迈进,齿轮就不能倒退了.这就是世界的规则. 0x01背景 造了个轮子:御剑师傅的ipintervalmerge的Python版本.觉得打印的提示信息如果是普通 ...

  7. Python定制化天气预报消息推送

    sansui-Weather 代码码云 介绍 定制化天气预报消息推送(练手小脚本) Python脚本实现天气查询应用,提醒她注意保暖! 功能介绍 天气信息获取 当天天气信息提示 第二天天气信息提示 网 ...

  8. 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:11.定制化Log输出

    欢迎阅读我的开源项目<迷你微信>服务器与<迷你微信>客户端 前言 在<迷你微信>服务器中,我们用了Log4J来进行输出,这可以在我们程序出现异常的时候找到错误发生时 ...

  9. Linux定制化RPM包

    定制化RPM包 1.Linux安装软件方法 1- rpm/yum安装 简单.速度快,但是不能定制安装 RPM RedHat Package Manager(RPM软件包管理器) 2- 二进制安装 解压 ...

随机推荐

  1. 关于“ORA-01747: user.table.column, table.column 或列说明无效”的报错。

    今天在工程中遇到“ORA-01747: user.table.column, table.column 或列说明无效”的报错情况,查了一下是由于数据库列名起的不好引起的,名字用到了数据库的关键字.

  2. poj_1390 动态规划

    题目大意 将一些连续的序列根据颜色分为N段,每段有颜色 为 Ci, 长度为 Li.每次点击其中的一段 i ,则可以将该段i消除,该段相邻的两段自动连接到一起,如果连接到一起的两段之前的颜色相同,则更新 ...

  3. 在腾讯云服务器上体验Docker

    版权声明:本文由姚俊刚原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/85 来源:腾云阁 https://www.qclou ...

  4. Express框架(http服务器 + 路由)

    index.js 使用express框架搭建http服务器,和实现路由功能. var express = require('express'); var app = express(); // 主页输 ...

  5. android 仿微信聊天界面,以及语音录制功能

    extends:http://104zz.iteye.com/blog/1709840 本例为模仿微信聊天界面UI设计,文字发送以及语言录制UI. 1先看效果图:     第一:chat.xml设计 ...

  6. Unity3D笔记七 GUILayout

    一.说到GUILayout就要提到GUI,二者的区别是什么 GUILayout是游戏界面的布局.GUI(界面)和GUILayout(界面布局)功能上面是相似的从命名中就可以看到这两个东西非常相像,但是 ...

  7. java类的成员初始化顺序和初始化块知识

    java类的成员初始化顺序和初始化块知识 转自:http://blog.csdn.net/lgfeng218/article/details/7606735 属性.方法.构造方法和自由块都是类中的成员 ...

  8. 问答项目---金币经验奖励规则及网站配置写入config文件

    具体步骤: 引入配置文件——>获取当前数组——>进行合并 public function edit(){ //引入 config.php配置文件 $file = APP_PATH.'Com ...

  9. Oracle预定义的21个系统异常类型

    命名的系统异常 产生原因 ACCESS_INTO_NULL 未定义对象 CASE_NOT_FOUND CASE 中若未包含相应的 WHEN ,并且没有设置 ELSE 时 COLLECTION_IS_N ...

  10. Oracle Database Memory Structures

    Oracle Database creates and uses memory structures for various purposes. For example, memory stores ...