import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
""""总结
https://zhuanlan.zhihu.com/p/70835617
网站内容"""
def jibentongfa(): # 一个图片的基本参数
plt.title("标题") # 括号当中输入标题的名称
plt.rcParams['font.sans-serif'] = ['SimHei'] # 汉字标题需要加上这句话
# plt.figure(figsize=(4,4))#第二图的图象大小
# plt.plot(1,4)#x轴和y轴的中间数,图形会在输入的值显示
# plt.plot(3,3*2)#*2显示2位小数
plt.xlim(0, 6) # x轴坐标轴
plt.ylim((-5, 3)) # y轴坐标轴
plt.xlabel('X名称') # x轴标签
plt.ylabel('Y名称') # y轴标签
plt.rcParams['axes.unicode_minus'] = False # 如果需要将数字设为负数,也可能出现乱码的情况,这时候可以加下面的代码:
plt.plot(2, 3, label="第一个图像名称") # 第一个label
plt.plot(2, 3 * 2, label="第二个图像名称") # 第二个label
plt.legend(loc='best') # 图列位置,可选best(图像右上方),center(图像正中央)等
x = np.linspace(0, 10, 200) # 从0到10之间等距产生200个值
y = np.sin(x)
y1 = np.cos(x)
plt.plot(x, y, linestyle='--', color='r') # linestyle表示图像的线条形状,color首字母表示颜色
plt.plot(x, y1, linestyle='--', color='b') # 没有这句话无法生成线条
plt.annotate(text='标记点', xy=(3, np.sin(3)), xytext=(4, -2), weight='bold', color='b', \
arrowprops=dict(arrowstyle='-|>', color='k')) # text参数不能改,xytext表示箭头的起点和终点生成一条arrowstyle样式的线条
"""" annotate 函数
text: 注释信息内容
xy:箭头点所在的坐标位置
xytext:注释内容的坐标位置
arrowprops:设置指向箭头的参数"""
plt.show() # 关闭图像
def duotuxyztu(): # 多个图像在一个图片中
x = np.linspace(0, 10, 200) # 从0到10之间等距产生200个值
# y = np.sin(x)
ax1 = plt.subplot(2, 2, 1)
plt.plot(x, np.sin(x), 'k')
ax2 = plt.subplot(2, 2, 2, sharey=ax1) # 与 ax1 共享y轴
plt.plot(x, np.cos(x), 'g')
ax3 = plt.subplot(2, 2, 3)
plt.plot(x, x, 'r')
ax4 = plt.subplot(2, 2, 4, sharey=ax3) # 与 ax3 共享y轴
plt.plot(x, 2 * x, 'y')
""""subplot 第一个参数和第二个参数表示分析几行几个而第3个参数表在第几个位置,
比如本代码为4个区域,代表第4个区域"""""
plt.show()
def zuzt(): #柱状图
x = np.arange(10) # arange 生成数组
y = np.random.randint(0, 20, 10)
plt.bar(x, y) # 生成柱状图
plt.show()
def zzt(): # 柱状图多样式
df = pd.DataFrame(np.random.rand(10, 3), columns=['a', 'b', 'c']) # np.random.rand 生成10*3的矩阵
df.plot(kind='bar', grid = True, colormap = 'summer_r',stacked = True) # 颜色colormap 参考https://zhuanlan.zhihu.com/p/158871093
# grid代表网格 kind代表什么样式的图像例如bar表示箱线图,stacked生成的图像是否叠加,可以去掉看自己喜好
df.plot.barh(grid=True, colormap='BuGn_r') # 这句话表示图像水平显示
df.plot.barh(grid=True, colormap='BuGn_r', stacked = True)
plt.show()
if __name__ == '__main__':
# jibentongfa()
# duotuxyztu()
# zuzt()
zzt()
散点图
class dinatu():
def jibenyufa(self): # 散点图基本语法
x = np.random.rand(10) # 生成一维数组
y = np.random.rand(10)
plt.scatter(x, y) # x,y组成坐标
plt.show()
def jibencshu(self):
x = np.random.rand(50)
y = np.random.rand(50)
colors = np.random.rand(50) # 随机生成颜色
t1 = (30 * np.random.rand(50)) ** 2 # 这句话中生成的矩阵要和生成的xy坐标数一直
# 否则会报错。
plt.scatter(x, y, t1, c=colors, alpha=0.1) # alpha 表示颜色的浓度
plt.show()
def duotux(self):
df = pd.DataFrame(np.random.randn(100, 4), columns=list('abcd')) # columns=list('abcd')表式每一个图名称
scatter_matrix(df, figsize=(8, 4), marker='o', diagonal='kde',
alpha=0.4, range_padding=0.5)
"""
scatter_matrix 这个函数调用时候注意
from pandas.plotting import scatter_matrix
才能调用,如果用pd.scatter_matrix, 会报错,
figsize 表示生成图形的大小, diagonal='kde',不添加时,为柱状图,
arker='o',添加以后生成的颗粒园更大,对生成的园点起作用,
range_padding,函数表示观察图像的大小,调整大小可以起到放大图像和缩小的作用
"""
plt.show()
总代码
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from pandas.plotting import scatter_matrix
""""总结
https://zhuanlan.zhihu.com/p/70835617
网站内容"""
def jibentongfa(): # 一个图片的基本参数
plt.title("标题") # 括号当中输入标题的名称
plt.rcParams['font.sans-serif'] = ['SimHei'] # 汉字标题需要加上这句话
# plt.figure(figsize=(4,4))#第二图的图象大小
# plt.plot(1,4)#x轴和y轴的中间数,图形会在输入的值显示
# plt.plot(3,3*2)#*2显示2位小数
plt.xlim(0, 6) # x轴坐标轴
plt.ylim((-5, 3)) # y轴坐标轴
plt.xlabel('X名称') # x轴标签
plt.ylabel('Y名称') # y轴标签
plt.rcParams['axes.unicode_minus'] = False # 如果需要将数字设为负数,也可能出现乱码的情况,这时候可以加下面的代码:
plt.plot(2, 3, label="第一个图像名称") # 第一个label
plt.plot(2, 3 * 2, label="第二个图像名称") # 第二个label
plt.legend(loc='best') # 图列位置,可选best(图像右上方),center(图像正中央)等
x = np.linspace(0, 10, 200) # 从0到10之间等距产生200个值
y = np.sin(x)
y1 = np.cos(x)
plt.plot(x, y, linestyle='--', color='r') # linestyle表示图像的线条形状,color首字母表示颜色
plt.plot(x, y1, linestyle='--', color='b') # 没有这句话无法生成线条
plt.annotate(text='标记点', xy=(3, np.sin(3)), xytext=(4, -2), weight='bold', color='b',
arrowprops=dict(arrowstyle='-|>', color='k')) # text参数不能改,xytext表示箭头的起点和终点生成一条arrowstyle样式的线条
"""" annotate 函数
text: 注释信息内容
xy:箭头点所在的坐标位置
xytext:注释内容的坐标位置
arrowprops:设置指向箭头的参数"""
plt.show() # 关闭图像
def duotuxyztu(): # 多个图像在一个图片中
x = np.linspace(0, 10, 200) # 从0到10之间等距产生200个值
# y = np.sin(x)
ax1 = plt.subplot(2, 2, 1)
plt.plot(x, np.sin(x), 'k')
ax2 = plt.subplot(2, 2, 2, sharey=ax1) # 与 ax1 共享y轴
plt.plot(x, np.cos(x), 'g')
ax3 = plt.subplot(2, 2, 3)
plt.plot(x, x, 'r')
ax4 = plt.subplot(2, 2, 4, sharey=ax3) # 与 ax3 共享y轴
plt.plot(x, 2 * x, 'y')
""""subplot 第一个参数和第二个参数表示分析几行几个而第3个参数表在第几个位置,
比如本代码为4个区域,代表第4个区域"""""
plt.show()
def zuzt(): # 柱状图
x = np.arange(10) # arange 生成数组
y = np.random.randint(0, 20, 10)
plt.bar(x, y) # 生成柱状图
plt.show()
def zzt(): # 柱状图多样式
df = pd.DataFrame(np.random.rand(10, 3), columns=['a', 'b', 'c']) # np.random.rand 生成10*3的矩阵
df.plot(kind='bar', grid=True, colormap='summer_r',
stacked=True) # 颜色colormap 参考https://zhuanlan.zhihu.com/p/158871093
# grid代表网格 kind代表什么样式的图像例如bar表示箱线图,stacked生成的图像是否叠加,可以去掉看自己喜好
df.plot.barh(grid=True, colormap='BuGn_r') # 这句话表示图像水平显示
df.plot.barh(grid=True, colormap='BuGn_r', stacked=True)
plt.show()
"""散点图"""
class dinatu():
def jibenyufa(self): # 散点图基本语法
x = np.random.rand(10) # 生成一维数组
y = np.random.rand(10)
plt.scatter(x, y) # x,y组成坐标
plt.show()
def jibencshu(self):
x = np.random.rand(50)
y = np.random.rand(50)
colors = np.random.rand(50) # 随机生成颜色
t1 = (30 * np.random.rand(50)) ** 2 # 这句话中生成的矩阵要和生成的xy坐标数一直
# 否则会报错。
plt.scatter(x, y, t1, c=colors, alpha=0.1) # alpha 表示颜色的浓度
plt.show()
def duotux(self):
df = pd.DataFrame(np.random.randn(100, 4), columns=list('abcd')) # columns=list('abcd')表式每一个图名称
scatter_matrix(df, figsize=(8, 4), marker='o', diagonal='kde',
alpha=0.4, range_padding=0.5)
"""
scatter_matrix 这个函数调用时候注意
from pandas.plotting import scatter_matrix
才能调用,如果用pd.scatter_matrix, 会报错,
figsize 表示生成图形的大小, diagonal='kde',不添加时,为柱状图,
arker='o',添加以后生成的颗粒园更大,对生成的园点起作用,
range_padding,函数表示观察图像的大小,调整大小可以起到放大图像和缩小的作用
"""
plt.show()
if __name__ == '__main__':
# jibentongfa()
# duotuxyztu()
# zuzt()
# zzt()
t = dinatu() # 实例化
# t.jibenyufa()
# t.jibencshu()
t.duotux()
第二天————————————————————
class yuanbtu():
def jichuyongfa(self):
x = np.random.randint(1, 10, 4) # x = np.random.randint(1, 10, 3) 生成 1,10 的3个数。数组
plt.pie(x) # 饼图 pie 函数
plt.show()
def yuanbtubiaoqian(self):
plt.title("标题") # 括号当中输入标题的名称
plt.rcParams['font.sans-serif'] = ['SimHei']
sizes = [5, 5, 5]
labels = ['ikun', 'xhz', 'liz']
plt.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=False, startangle=1000, pctdistance=0.6
, wedgeprops={'linewidth': 5}, frame=True, rotatelabels=True)
"""
labels:列表,各个扇形的标签,
autopct:设置饼图内各个扇形百分比显示格式,
%d%% 整数百分比,
%0.1f 一位小数,
%0.1f%% 一位小数百分比,
%0.2f%% 两位小数百分比。
shadow::布尔值 True 或 False,设置饼图的阴影,默认为 False,不设置阴影。
pctdistance,百分比所在位置
wedgeprops :字典类型,默认值 None。用于指定扇形的属性,比如边框线颜色、边框线宽度等。例如:wedgeprops={'linewidth':5} 设置 wedge 线宽为5
frame 图形加上边框,
rotatelabels,标签指向内容,可能有点丑,看这个喜好和图象设计
"""
plt.show()
class zhiftu(yuanbtu): # 图形美化
def jichuyongfa(self): # 直方图 美化
s = pd.Series(np.random.randn(1000))
s.hist(bins=100, histtype='bar', align='right',
orientation='vertical', alpha=1, facecolor='b',density = True)
# density = True表示密度,如果没有这一句命令,
# 下句s.plot(kind='kde', style='--',color='b')不会生成曲线图
s.plot(kind='kde', style='--',color='r')
plt.show()
"""s,为必选参数,绘制图形的基本参数,
bins 为直方图长条形数目,默认为10
facecolor,为显示长条形的颜色
horizontal和vertical为 orientation中的参数表示水平方向还是垂直方向
align,为选择对其方式left', 'mid', 'right',
histtype,生成的图形样式'bar', 'barstacked', 'step', 'stepfilled'
"""
def diejia(self): # 折叠图美化
df = pd.DataFrame({'a': np.random.randn(500) + 1, 'b': np.random.randn(500),
'c': np.random.randn(500) - 1, 'd': np.random.randn(500)},
columns=list('abcd'))
df.plot.hist(stacked=True, bins=100, colormap='Blues_r', alpha=0.5, grid=True)
# stacked=True折叠图的关键命令
plt.show()
class xxt(): # 箱线图
def jichu(self):
np.random.seed(100) # np.random.seed生成随机数每次相同
data = np.random.normal(size=1000, loc=0, scale=1) # loc 分布的均值(中心),scale分布的标准差(宽度)
plt.boxplot(data, sym='o', whis=1.5)
plt.show()
def duogxxt(self):
np.random.seed(100) # 生成随机数
data = np.random.normal(size=(1000, 4), loc=0, scale=1) # 1000个值得4维数组,np.random.normal从正态(高斯)分布中抽取随机样本
lables = ['A', 'B', 'C', 'D']
plt.boxplot(data, labels=lables,vert=False)
plt.show()
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from pandas.plotting import scatter_matrix
from scipy.stats import norm
""""总结 :
b:blue
g:green
r:red
c:cyan
m:magenta
y:yellow
k:black
w:white
颜色缩写的符号
https://zhuanlan.zhihu.com/p/70835617
网站内容"""
def jibentongfa(): # 一个图片的基本参数
plt.title("标题") # 括号当中输入标题的名称
plt.rcParams['font.sans-serif'] = ['SimHei'] # 汉字标题需要加上这句话
# plt.figure(figsize=(4,4))#第二图的图象大小
# plt.plot(1,4)#x轴和y轴的中间数,图形会在输入的值显示
# plt.plot(3,3*2)#*2显示2位小数
plt.xlim(0, 6) # x轴坐标轴
plt.ylim((-5, 3)) # y轴坐标轴
plt.xlabel('X名称') # x轴标签
plt.ylabel('Y名称') # y轴标签
plt.rcParams['axes.unicode_minus'] = False # 如果需要将数字设为负数,也可能出现乱码的情况,这时候可以加下面的代码:
plt.plot(2, 3, label="第一个图像名称") # 第一个label
plt.plot(2, 3 * 2, label="第二个图像名称") # 第二个label
plt.legend(loc='best') # 图列位置,可选best(图像右上方),center(图像正中央)等
x = np.linspace(0, 10, 200) # 从0到10之间等距产生200个值
y = np.sin(x)
y1 = np.cos(x)
plt.plot(x, y, linestyle='--', color='r') # linestyle表示图像的线条形状,color首字母表示颜色
plt.plot(x, y1, linestyle='--', color='b') # 没有这句话无法生成线条
plt.annotate(text='标记点', xy=(3, np.sin(3)), xytext=(4, -2), weight='bold', color='b',
arrowprops=dict(arrowstyle='-|>', color='k')) # text参数不能改,xytext表示箭头的起点和终点生成一条arrowstyle样式的线条
"""" annotate 函数
text: 注释信息内容
xy:箭头点所在的坐标位置
xytext:注释内容的坐标位置
arrowprops:设置指向箭头的参数"""
plt.show() # 关闭图像
def duotuxyztu(): # 多个图像在一个图片中
x = np.linspace(0, 10, 200) # 从0到10之间等距产生200个值
# y = np.sin(x)
ax1 = plt.subplot(2, 2, 1)
plt.plot(x, np.sin(x), 'k')
ax2 = plt.subplot(2, 2, 2, sharey=ax1) # 与 ax1 共享y轴
plt.plot(x, np.cos(x), 'g')
ax3 = plt.subplot(2, 2, 3)
plt.plot(x, x, 'r')
ax4 = plt.subplot(2, 2, 4, sharey=ax3) # 与 ax3 共享y轴
plt.plot(x, 2 * x, 'y')
""""subplot 第一个参数和第二个参数表示分析几行几个而第3个参数表在第几个位置,
比如本代码为4个区域,代表第4个区域"""""
plt.show()
def zuzt(): # 柱状图
x = np.arange(10) # arange 生成数组
y = np.random.randint(0, 20, 10)
plt.bar(x, y) # 生成柱状图
plt.show()
def zzt(): # 柱状图多样式
df = pd.DataFrame(np.random.rand(10, 3), columns=['a', 'b', 'c']) # np.random.rand 生成10*3的矩阵
df.plot(kind='bar', grid=True, colormap='summer_r',
stacked=True) # 颜色colormap 参考https://zhuanlan.zhihu.com/p/158871093
# grid代表网格 kind代表什么样式的图像例如bar表示箱线图,stacked生成的图像是否叠加,可以去掉看自己喜好
df.plot.barh(grid=True, colormap='BuGn_r') # 这句话表示图像水平显示
df.plot.barh(grid=True, colormap='BuGn_r', stacked=True)
plt.show()
"""散点图"""
class dinatu():
def jibenyufa(self): # 散点图基本语法
x = np.random.rand(10) # 生成一维数组
y = np.random.rand(10)
plt.scatter(x, y) # x,y组成坐标
plt.show()
def jibencshu(self):
x = np.random.rand(50)
y = np.random.rand(50)
colors = np.random.rand(50) # 随机生成颜色
t1 = (30 * np.random.rand(50)) ** 2 # 这句话中生成的矩阵要和生成的xy坐标数一直
# 否则会报错。
plt.scatter(x, y, t1, c=colors, alpha=0.5) # alpha 表示颜色的浓度
plt.show()
def duotux(self):
df = pd.DataFrame(np.random.randn(100, 4), columns=list('abcd')) # columns=list('abcd')表式每一个图名称
scatter_matrix(df, figsize=(8, 4), marker='o', diagonal='kde',
alpha=1, range_padding=0.8)
"""
scatter_matrix 这个函数调用时候注意
from pandas.plotting import scatter_matrix
才能调用,如果用pd.scatter_matrix, 会报错,
figsize 表示生成图形的大小, diagonal='kde',不添加时,为柱状图,
arker='o',添加以后生成的颗粒园更大,对生成的园点起作用,
range_padding,函数表示观察图像的大小,调整大小可以起到放大图像和缩小的作用
"""
plt.show()
class yuanbtu():
def jichuyongfa(self):
x = np.random.randint(1, 10, 4) # x = np.random.randint(1, 10, 3) 生成 1,10 的3个数。数组
plt.pie(x) # 饼图 pie 函数
plt.show()
def yuanbtubiaoqian(self):
plt.title("标题") # 括号当中输入标题的名称
plt.rcParams['font.sans-serif'] = ['SimHei']
sizes = [5, 5, 5]
labels = ['ikun', 'xhz', 'liz']
plt.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=False, startangle=1000, pctdistance=0.6
, wedgeprops={'linewidth': 5}, frame=True, rotatelabels=True)
"""
labels:列表,各个扇形的标签,
autopct:设置饼图内各个扇形百分比显示格式,
%d%% 整数百分比,
%0.1f 一位小数,
%0.1f%% 一位小数百分比,
%0.2f%% 两位小数百分比。
shadow::布尔值 True 或 False,设置饼图的阴影,默认为 False,不设置阴影。
pctdistance,百分比所在位置
wedgeprops :字典类型,默认值 None。用于指定扇形的属性,比如边框线颜色、边框线宽度等。例如:wedgeprops={'linewidth':5} 设置 wedge 线宽为5
frame 图形加上边框,
rotatelabels,标签指向内容,可能有点丑,看这个喜好和图象设计
"""
plt.show()
class zhiftu(yuanbtu): # 图形美化
def jichuyongfa(self): # 直方图 美化
s = pd.Series(np.random.randn(1000))
s.hist(bins=100, histtype='bar', align='right',
orientation='vertical', alpha=1, facecolor='b',density = True)
# density = True表示密度,如果没有这一句命令,
# 下句s.plot(kind='kde', style='--',color='b')不会生成曲线图
s.plot(kind='kde', style='--',color='r')
plt.show()
"""s,为必选参数,绘制图形的基本参数,
bins 为直方图长条形数目,默认为10
facecolor,为显示长条形的颜色
horizontal和vertical为 orientation中的参数表示水平方向还是垂直方向
align,为选择对其方式left', 'mid', 'right',
histtype,生成的图形样式'bar', 'barstacked', 'step', 'stepfilled'
"""
def diejia(self): # 折叠图美化
df = pd.DataFrame({'a': np.random.randn(500) + 1, 'b': np.random.randn(500),
'c': np.random.randn(500) - 1, 'd': np.random.randn(500)},
columns=list('abcd'))
df.plot.hist(stacked=True, bins=100, colormap='Blues_r', alpha=0.5, grid=True)
# stacked=True折叠图的关键命令
plt.show()
class xxt(): # 箱线图
def jichu(self):
np.random.seed(100) # np.random.seed生成随机数每次相同
data = np.random.normal(size=1000, loc=0, scale=1) # loc 分布的均值(中心),scale分布的标准差(宽度)
plt.boxplot(data, sym='o', whis=1.5)
plt.show()
def duogxxt(self):
np.random.seed(100) # 生成随机数
data = np.random.normal(size=(1000, 4), loc=0, scale=1) # 1000个值得4维数组,np.random.normal从正态(高斯)分布中抽取随机样本
lables = ['A', 'B', 'C', 'D']
plt.boxplot(data, labels=lables,vert=False)
plt.show()
if __name__ == '__main__':
# 柱状图——————————————————————————————
# jibentongfa()
# duotuxyztu()
# zuzt()
# zzt()
# 散点图——————————————————————————————
# t = dinatu() # 实例化
# t.jibenyufa()
# t.jibencshu()
# t.duotux()
# 饼图——————————————————————————————
# b = yuanbtu()
# b.jichuyongfa()
# b.yuanbtubiaoqian()
# 散点图——————————————————————————————
# s = zhiftu()
# s.jichuyongfa()
# s.diejia()
# 箱线图——————————————————————————————
x = xxt()
x.jichu()
x.duogxxt()
以上为本人初学记录学习过程。
其中部分内容总结而来如果侵权联系作者删除。