python画图:matplotlib、seaborn、pandas、Pyeplotllib

1.matplotlib:功能很强大,非常多,代码量比较大

2.pyechart:经过很多的渲染,代码小一点,酷炫,动态交互效果

3.seaborn:基于matplotlib,数据分布,相关性分析,密度估计

4.pandas. 直接在pandas画,简单图表

 

读入图片

plt.imread(‘E:\123\ziliao’)

 

Matplotlib(基于数组绘图)

%matplotlib inline

import matplotlib

import matplotlib.pyplot as plt

matplotlib.rcParams[‘font.sans-serif’] = [‘KaiTi’]   #用黑体显示中文楷体(修改字体的第一种方法

matplotlib.rcParams[‘axes.unicode_minus’] = False   #正常显示负号

修改字体的第二种方法

myfont1 = matplotlib.font_manager.FontProperties(fname=r'C:\Windows\Fonts\STKAITI.TTF') # 修改字体

myfont2 = matplotlib.font_manager.FontProperties(fname=r'C:\Windows\Fonts\FZSTK.TTF') # 修改字体

 

plt.figure(figsize = (8, 4), dpi = 100) #创建画布

plt.title()  #图标标题

plt.xlabel(("Time(s)" , fontsize=20 , color='r' , rotation=0) #添加x轴名称

plt.xlabel("Volt") #添加y轴名称

plt.xlim(-1 , 11) #规定x轴范围

plt.ylim(-1.2 , 1.2) #确定y轴范围

plt.xticks(np.arange(0,12,2) ,f ontsize=15 , rotation=30) #规定x轴刻度

plt.yticks([-1 , -0.5 , 0.0 , 0.5 , 1.0]) #规定y轴刻度

plt.plot(x , y , color = "red" , linewidth=2 , marker='*' , label = "$sin(x)$")  #画图  美元符号是变斜体的意思

plt.legend(loc = 0) #显示图例

plt.savefig(‘test.png’, dpi = 100, bbox_inches = ‘tight’) #保存

plt.show() #显示

 

绘制子图

调用fig对象add_subplot方法和plt.subplot()绘制有多个轴的图表

方法一:p1.add_subplot(3,2,3)三行两列共六个子图,当前是第3个子图

plt.subplot_adjust(wspace = 0, hspace = 0.7)  #调整子图的间距

方法二:plt.subplot(3,2,3)

 

调价备注:

plt.text(0,0,'(0,0)',color='r',fontsize=20,rotation=0,bbox=dict(facecolor='b', edgecolor='r', alpha=0.65 )) #添加文字说明

plt.annotate('max', color='r',xy=(1.57, 1), xytext=(2, 1.5),arrowprops=dict(facecolor='r', edgecolor='r',width=2,shrink=0.015,headlength=10)) #添加注释

 

循环作图:

图中图:

 

散点图

plt.scatter(x , y , color = ‘r’, marker = ‘D’ , s= 10)

plt.show()

 

饼图

labels = [‘USA’ , ‘China’ , ‘India’]

X = [129340 , 45464564 , 3465643]

explode = (0 , 0.1, 0, 0, 0)

plt.pie(X, labels= labels, labeldistance = 1, explode = explode , autopct = ‘%.2f%%’ , shadow = True , startangle = 120)

plt.show()

 

 

柱状图(竖着)

X= [‘USA’ , ‘China’ , ‘India’]

Y= [129340 , 45464564 , 3465643]

plt.bar(X, Y, color = ‘blue’,width = 0.6 , align = ‘center’ , edgecolor = ‘ r’)  edgecolor = ‘ r’边框颜色

plt.xlabel(‘Country’)

plt.ylabel(‘GDP’)

plt.show()

 

柱状图(横着)

X= [‘USA’ , ‘China’ , ‘India’]

Y= [129340 , 45464564 , 3465643]

plt.barh(X, Y, color = ‘blue’,height = 0.5, align = ‘center’ , edgecolor = ‘ r’)  edgecolor = ‘ r’边框颜色

plt.xlabel(‘Country’)

plt.ylabel(‘GDP’)

plt.show()

python画图:matplotlib、seaborn、pandas、Pyeplotllib

 

 

直方图

plt.hist(data , bins = 100, density = 1, facecolor = ‘blue’, edgecolor = ‘black’, alpha =0.7)   #density做归一化

plt.show()

 

 

箱线图

python画图:matplotlib、seaborn、pandas、Pyeplotllib

plt.boxplot(data, 1, ‘rD’, 1)   #第一个1表示中间是否开口,第二个1表示横、竖箱线图

plt.show()

 

折线图

plt.plot(x , y , marker = ‘o’ , c = ‘red’ , linestyle = ‘--’)

 

Pyeplotllib(基于列表绘图)

柱状图——簇状柱形图(数据形式必须是列表

from pyecharts.charts import Bar

bar = Bar()

bar.add_xaxis(列表)  #设定横坐标

bar.add_yaxis(列表1)  #设定纵坐标1

bar.add_yaxis(列表2)  #设定纵坐标2

bar.render_notebook()

 

柱状图——堆积柱状图

bar = Bar()

bar.add_xaxis(列表)

bar.add_yaxis('第一产业',data1,stack = 's')

bar.add_yaxis('第二产业',data2,stack = 's')

bar.add_yaxis('农林牧渔业',data1,stack = 't')

bar.add_yaxis('工业',data2,stack = 't')

bar.render_notebook()

 

柱状图——横着的柱状图

bar = Bar()

bar.add_xaxis(列表)

bar.add_yaxis('第一产业',data1)

bar.add_yaxis('第二产业',data2)

bar.reversal_axis()

bar.set_series_opts(label_opts=opts.LabelOpts(position="right"))

bar.render_notebook()

箱型图(数据形式必须是列表)

from pyecharts.charts import Boxplot

v1 = np.random.randint(1,50,50).reshape(2,-1).tolist()  #有多少个x轴(季度)数据就有多少维度

v2 = np.random.randint(1,300,50).reshape(2,-1).tolist()

box = Boxplot()

box.add_xaxis(['第一季度','第二季度'])

box.add_yaxis('第一产业',box.prepare_data(v1))

box.add_yaxis('第二产业',box.prepare_data(v2))

box.render_notebook()

 

热力图(注意数据要与横纵坐标匹配)

import random

from pyecharts.charts import HeatMap

value = [[i, j, random.randint(0, 200)] for i in range(8) for j in range(5)]

heat = HeatMap()

heat.add_xaxis(['1点','2点','3点','4点','5点','6点','7点','8点'])

heat.add_yaxis('serires0',['周一','周二','周三','周四','周五'],value)

heat.render_notebook()

 

折线图

from pyecharts.charts import Line

line = Line()

line.add_xaxis(['第一季度','第二季度','第三季度','第四季度'])

line.add_yaxis('第一产业',data1,is_smooth = True)  #曲线是否平滑

line.add_yaxis('第二产业',data2)

line.render_notebook()

 

散点图

from pyecharts.charts import Scatter

scatter = Scatter()

scatter.add_xaxis(['第一季度','第二季度','第三季度','第四季度'])

scatter.add_yaxis('第一产业',data1)

scatter.render_notebook()

 

漏斗图

from pyecharts.charts import Funnel

f = Funnel()

f.add('产业' , [list(z) for z in zip(x,data1)])  

f.render_notebook()

 

饼图

from pyecharts.charts import Pie

p = Pie()

p.add('第一产业',[list(z) for z in zip(x,data1)])

p.render_notebook()

 

 

 

词云图

from pyecharts.charts import WordCloud

word = [

    ("Sam S Club", 10000000),

    ("Macys", 6181),

    ("Amy Schumer", 4386),

    ("Jurassic World", 4055),

    ("Charter Communications", 2467),

    ("Chick Fil A", 2244),

    ("Planet Fitness", 1868),

    ("Pitch Perfect", 1484),

    ("Express", 1112)]

w = WordCloud()

w.add('', word, word_size_range = [20,1000])  # word_size_range单词字体大小范围

w.render_notebook()

 

地图

province = ["广东", "北京", "上海", "辽宁", "湖南", "四川", "西藏"]

values = [100,200,300,400,500,400,400]

from pyecharts import options as opts

from pyecharts.charts import Map

m = Map()

m.add('', [list(z) for z in zip(province, values)], 'china')

m.set_global_opts(title_opts=opts.TitleOpts(title="Map-中国地图"),visualmap_opts=opts.VisualMapOpts(max_=150))   #添加标题

m.render_notebook()

 

Seaborn基于DataFrame绘图

单变量直方图

import seaborn as sns

sns.set_palette('bright')

x = np.random.normal(size = 1000)

sns.distplot(x)

python画图:matplotlib、seaborn、pandas、Pyeplotllib

 

二元分布图

散点图

data = [list(z) for z in zip(np.random.randint(1,200,10),np.random.randint(1,200,10))]

data = pd.DataFrame(data,columns = ['x','y'])

sns.jointplot(x = 'x', y = 'y',data = data )

python画图:matplotlib、seaborn、pandas、Pyeplotllib

 

矩阵散点图1

data = [[1,2,3,4],

       [2,3,5,6],

       [5,6,8,8],

       [5,6,8,3]]

data = pd.DataFrame(data,columns= ['one','two','three','four'])

sns.pairplot(data)

python画图:matplotlib、seaborn、pandas、Pyeplotllib

 

 

矩阵散点图2

import matplotlib.pyplot as plt

data = [[1,2,3,4],

       [2,3,5,6],

       [5,6,8,8],

       [5,6,8,3]]

data = pd.DataFrame(data,columns= ['one','two','three','four'])

s = sns.PairGrid(data)

s.map(plt.scatter)

python画图:matplotlib、seaborn、pandas、Pyeplotllib

 

 

 

Pandas画图(基于DataFrame绘图

折线图

import matplotlib.pyplot as plot

data = pd.DataFrame({

   'pig': [20, 18, 489, 675, 1776],

   'horse': [4, 25, 281, 600, 1900]

   }, index=[1990, 1997, 2003, 2009, 2014])

data.plot.line()

 

柱状图

import matplotlib.pyplot as plot

data = pd.DataFrame({

   'pig': [20, 18, 489, 675, 1776],

   'horse': [4, 25, 281, 600, 1900]

   }, index=[1990, 1997, 2003, 2009, 2014])

data.plot.bar()

 

散点图

import matplotlib.pyplot as plot

data = pd.DataFrame({

   'len': [20, 18, 489, 675, 1776],

   'width': [4, 25, 281, 600, 1900]

   }, index=[1990, 1997, 2003, 2009, 2014])

data.plot.scatter(x = 'len',y = 'width')

 

直方图

import matplotlib.pyplot as plot

data = pd.DataFrame({

   'len': [20, 18, 489, 675, 1776],

   'width': [4, 25, 281, 600, 1900]

   }, index=[1990, 1997, 2003, 2009, 2014])

data.plot.hist()

 

箱型图

import matplotlib.pyplot as plot

data = pd.DataFrame(np.random.randint(0,100,100).reshape(-1,4).tolist(),columns = ['a','b','c','d'])

data.plot.box()

 

饼图

matplotlib.rcParams['font.sans-serif'] = 'Simhei'

data = pd.DataFrame(np.random.randint(0,100,16).reshape(4,4).tolist(),

                    columns = ['a','b','c','d'],

                   index  = ['第一季度','第二季度','第三季度','第四季度'])

data.plot.pie(y = 'a',figsize=(10, 10))