Matplotlib数据可视化——综合练习一(基础图表、饼图、直方图、柱状图、极坐标图、散点图的绘制)_shy-2的博客-程序员信息网

技术标签: python  数学建模  可视化  matplotlib数据可视化  甘特图  数据可视化  

基础图表、饼图、直方图、柱状图、极坐标图、散点图的绘制

前言

在练习之前,需要掌握的知识:

numpy
Matplotlib
pandas(不要求)

如果不熟悉可以查看我关于这方面的博客~~~~

题一:利用matplotlib库文件,画图函数y=x^2的图形。结合图中的颜色标出横纵坐标。

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl

#解决中文显示问题 手动设置
mpl.rcParams['font.sans-serif']=['FangSong']

#设置x,y轴的数值
x = np.linspace(0,10,6)
y = x**2

plt.xlabel("横轴:x").set_color('g')
plt.ylabel("纵轴:y=x^2").set_color('r')

plt.plot(x,y,'r--',linewidth=2)

#显示图示
plt.legend()

#显示图
plt.show()

题二: 利用matplotlib库文件,画图函数y=x^2的图形。结合图中的颜色标出横纵坐标。

在这里插入图片描述

import numpy as np 
import matplotlib.pyplot as plt
from pylab import mpl

#解决中文显示问题 手动设置 仿宋体
mpl.rcParams['font.sans-serif'] = ['FangSong']

#设置x,y的值
x = np.arange(0,10,0.3)
y = x**2

plt.xlabel("横轴:x").set_color('g')
 
plt.ylabel("纵轴:y=x^2").set_color('r')
plt.xlim(0,10)                                                              #设置x轴的区间
plt.ylim(0,100)                                                             #设置y轴的区间
plt.xticks([0,2,4,6,8,10])
plt.yticks([0,20,40,60,80,100]

plt.plot(x,y,"b>-",linewidth=2)

#显示图示
plt.legend()
 
#显示图
plt.show()

题三: 利用matplotlib库文件,画图函数y=cos⁡(2πx)的图形。结合图中的颜色标出横纵坐标。

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np

#定义函数实现y = f(x) =cos(2πx)
def f(x):
    return np.cos(2*np.pi*x)

a = np.arange(0.0,5.0,0.02)

plt.plot(a,f(a),'b--')
plt.xlabel("横轴:时间",fontproperties='Kaiti',fontsize=14,color='g')
plt.ylabel("纵轴:振幅",fontproperties='SimHei',fontsize=14,color='k')
plt.title("正玄波实例 y = cos(2πx)",fontproperties='SimHei',fontsize=18,color='k')

plt.annotate(r'$\mu=100$',xy=(2,1),fontproperties='SimHei',fontsize=12,color='red')

plt.grid(True)
plt.axis([-1,6,-2,2])

pkt.show()

题四:利用matplotlib库文件,画出如下子图的图形。

在这里插入图片描述

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

gs = gridspec.GridSpec(3,3)

ax1 = plt.subplot(gs[0,:])
ax2 = plt.subplot(gs[1,:-1])
ax3 = plt.subplot(gs[1:,-1])
ax4 = plt.subplot(gs[2,0])
ax5 = plt.subplot(gs[2,1])


plt.show()

题五:利用matplotlib库文件,结合子图的画法,把下面三个函数画在同一个图中。并标出横纵坐标及对应的颜色。

在这里插入图片描述

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import numpy as np
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['FangSong']
mpl.rcParams['axes.unicode_minus'] = False

gs = gridspec.GridSpec(2,2)
#防止画图时重叠
plt.subplots_adjust(hspace=1)
#绘图一
ax1 = plt.subplot(gs[0,0])
x = np.arange(0,10,0.3)
y = x*x

plt.xlabel("横轴:x").set_color('g')
plt.ylabel("纵轴:y=x^2").set_color('r')
plt.plot(x,y,"b>-",linewidth=2)

#绘图二
ax2 = plt.subplot(gs[0,1])
def g(x):
    return np.cos(2*np.pi*x)

a = np.arange(0,4,0.02)
plt.plot(a,g(a),'r--')
x = [0,2,4]
y = np.linspace(-1,1,3)
plt.xticks(x)
plt.yticks(y)

#绘图三
ax3 = plt.subplot(gs[1,:])
def f(x):
    return np.cos(2*np.pi*x)

a = np.arange(0.0,5.0,0.02)
plt.plot(a,f(a),"b--")
plt.xlabel('横轴:时间',fontproperties='Kaiti',fontsize=14,color='g')
plt.ylabel('纵轴:振幅',fontproperties='SimHei',fontsize=14,color='k')
plt.title('正玄波实例 y=cos(2πx)',fontproperties='SimHei',fontsize=18,color='k')

plt.grid(True)
plt.axis([-1,6,-2,2])
plt.annotate(r'$\mu=100$',xy=(2,1),fontproperties='SimHei',fontsize=12,color='red')

plt.legend()
plt.show()

题六:利用matplotlib库文件,结合阶梯图函数plt.step()。画出函数y=sin⁡(x)的图形。

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['FangSong']
mpl.rcParams['axes.unicode_minus'] = False

x = np.arange(1,11)
y = np.sin(x)

plt.step(x,y,'r')
plt.show()

题七:1. 利用matplotlib库文件,画出如下的饼图。

在这里插入图片描述

import matplotlib.pyplot as plt
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['FangSong']
mpl.rcParams['axes.unicode_minus'] = False

labels = ["A班","B班","C班","D班"]
sizes = [10,30,45,15]

#如果是要没有阴影部分就将 shadow = False
patch,text1,text2 = plt.pie(sizes,labels = labels,autopct='%1.1f%%',shadow=True,startangle=90)

plt.title("班级名称")
plt.axis('equal')
plt.legend()

plt.show()

题八:利用matplotlib库文件,画出如下的饼图(explod=0.5)

在这里插入图片描述

import matplotlib.pyplot as plt
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['FangSong']
mpl.rcParams['axes.unicode_minus'] = False

labels = ["A班","B班","C班","D班"]
sizes = [10,30,45,15]
explode = (0,0,0.5,0)

#如果是要没有阴影部分就将 shadow = False
patch,text1,text2 = plt.pie(sizes,labels = labels,explode=explode,autopct='%1.1f%%',shadow=True,startangle=90)

plt.title("班级名称")
plt.axis('equal')
plt.legend()

plt.show()

题九:利用matplotlib库文件,画出如下的直方图。

在这里插入图片描述

import matplotlib.pyplot as plt
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['FangSong']
mpl.rcParams['axes.unicode_minus'] = False

xlab = ["A班","B班","C班","D班"]
list = [5,7,4,3]

x = range(len(list))

bar = plt.bar(left=x,height=list,width=0.8,color=['r','k','g','b'],alpha=0.8)
plt.ylim(0,7.5)
plt.xticks(x,xlab)

#因为网格线一直没有被覆盖 所以加了这一条语句
plt.style.use('ggplot')
plt.rc('axes',axisbelow=True)
plt.grid(ls='--')

plt.legend()
plt.show()

题十:利用matplotlib库文件,画出如下的直方图。

在这里插入图片描述

import matplotlib.pyplot as plt
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

sizes = [38,40,45.4,38.9,33.34]

plt.barh(range(5),sizes,height=0.7,color='steelblue',alpha=0.8)
plt.yticks(range(5),['亚马逊','当当网','中国图书网','京东','天猫'])

plt.xlim(30,47)
plt.xlabel("价格")
plt.title("不同平台图书价格")

for x,y in enumerate(sizes):
    plt.text(y+0.2,x-0.1,'%s' % y)

plt.show()

题十一:利用matplotlib库文件,画出如下的直方图。

在这里插入图片描述

import matplotlib.pyplot as plt
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

xlab = ['2014','2015','2016','2017']
list1 = [20,30,15,35]
list2 = [15,30,40,20]

x = range(len(list1))

bar1 = plt.bar(left=x, height=list1, width=0.45, alpha=0.8, color='red', label="一部门")
bar2 = plt.bar(left=x, height=list2, width=0.45, color='green', label="二部门", bottom=list1)
plt.ylim(0, 80)
plt.ylabel("数量")
plt.xticks(x, xlab)
plt.xlabel("年份")
plt.title("某某公司")
plt.legend()

plt.show()

题十二:利用matplotlib库文件,画出如下的散点图。

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

plt.scatter(np.random.randn(1000), np.random.randn(1000), marker = '*')

plt.show()

题十三:利用matplotlib库文件,画出如下的散点图。

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

plt.xlabel("横轴:X",color = "g")
plt.ylabel("纵轴:Y",color = "r")
plt.scatter(np.random.randn(1000), np.random.randn(1000), marker = 'o')

plt.title("散点图",color = "b")
plt.show()

题十四:利用matplotlib库文件,画出如下的极坐标图。

在这里插入图片描述

import matplotlib.pyplot as plt
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

ax = plt.subplot(111, projection='polar')

plt.show()

题十五:利用matplotlib库文件,画出如下的极坐标图。

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

N = 20
thera = np.linspace(0.0, 2 * np.pi, N, endpoint = False)
radis = 10 * np.random.rand(N)
width = np.pi / 4 * np.random.rand(N)

ax = plt.subplot(111, projection = 'polar')
bars = ax.bar(thera, radis, width = width, bottom = 0.0)

for r, bar in zip(radis, bars):
    bar.set_facecolor(plt.cm.viridis(r / 10.))
    bar.set_alpha(0.5)

plt.show()

题十六:利用matplotlib库文件,画出如下的极坐标图。

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

n = 100
radis = 2 * np.random.rand(n)
theta = 2 * np.pi * np.random.rand(n)
area = 200 * radis**2
colors = theta

ax = plt.subplot(111, projection='polar')
axs = ax.scatter(theta, radis, c=colors, s=area, cmap='hsv', alpha=0.75)

plt.show()

题十七:利用matplotlib库文件,画出如下的点线图。

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

x = np.arange(10)
y = 2*x+5

plt.plot(x,y,"o")
plt.xlim(1,10)
plt.ylim(5,25)
plt.yticks([5,10,15,20,25])

plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.title("Matplotlib demo")

plt.show()

题十八:利用matplotlib库文件,画出如下的曲线图。

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
x = np.arange(0,10,0.1)
ysin = np.sin(x)
ycos = np.cos(x)

plt.subplot(2,1,1)
#画图时增加子图间距 防止重叠
plt.subplots_adjust(hspace=0.5)
plt.xlim(0,10)
plt.ylim(-1.0,1.0)

plt.plot(x,ysin,"-")
plt.title("Sine")


plt.subplot(2,1,2)
plt.xlim(0,10)
plt.ylim(-1.0,1.0)

plt.plot(x,ycos,"-")
plt.title("Cosine")

plt.show()

题十九:利用matplotlib库文件,画出如下的条形图。

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

x1 = [5,7,8,10]
x2 = [6,9,11]
y = np.arange(16)
height1 = [12,0,16,6]
height2 = [6,14,7]

plt.bar(x1,height1)
plt.bar(x2,height2,color="g")

plt.xlabel("X axis")
plt.ylabel("Y axis")
plt.title("Bar graph")
plt.show()

题二十:利用matplotlib库文件,画出如下的直方图。

在这里插入图片描述

import matplotlib.pyplot as plt
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

plt.xlim(0,100)
plt.ylim(0,5)

data = [0,10,15,20,25,30,35,40,44,48,52,56,60,70,100]
plt.hist(data,bins=5,histtype='stepfilled',facecolor="b",alpha=0.75)

plt.title("histogram")
plt.show()

题二十一:利用matplotlib库文件,画出如下的饼图。

在这里插入图片描述

import matplotlib.pyplot as plt
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

labels = [u'娱乐',u'汽车',u'房屋',u'食物']
colors = ['silver','orange','dimgrey','tan']
sizes = [5,20,41,34]
explode = [0.1,0.1,0.1,0.1]

d,ax = plt.subplots()
ax.pie(sizes,labels=labels,explode=explode,colors=colors,autopct='%1.0f%%',shadow=False,pctdistance=0.5,startangle=0,textprops={
    'fontsize':12,'color':'w'})
ax.axis('equal')
plt.title("实际支出摘要",color='dimgrey')

ax.legend(bbox_to_anchor=(0.1,-0.1),loc='lower left',frameon=False,ncol=4)
plt.show()

题二十二:利用matplotlib库文件,画出如下的子图

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['font.size'] = 11

#图一
plt.subplot(211)
#画图时增加子图间距 防止重叠
plt.subplots_adjust(hspace=1)
x = np.arange(0, 5,0.02)
y = np.cos(2*np.pi*x) * np.exp(-x)
plt.plot(x,y,"b-")
plt.xlim(-0.5,5)                                                              #设置x轴的区间
plt.ylim(-0.6,1.2)                                                             #设置y轴的区间
plt.xticks([0,1,2,3,4,5])
plt.yticks([-0.5,0.0,0.5,1.0])
plt.title("阻尼振动 vs 无阻尼振动")    #设置x轴标签
plt.ylabel(r'$y=2\pi x/e^x$',fontproperties="SimHei",fontsize=10)  #设置y轴标签

plt.title("阻尼振动 VS 无阻尼振动")

#图二:
plt.subplot(2,1,2)
a = np.arange(0.0,2.0,0.04)
plt.plot(a,np.cos(2*np.pi*a),'r.-')
plt.xlabel("时间(s)",fontproperties='SimHei',fontsize=10)
plt.ylabel(r'$y=2\pi x$',fontproperties='SimHei',fontsize=10)
plt.axis([0.00,2.00,-1.0,1.0])

plt.show()

题二十三:利用matplotlib库文件,画出如下的直方图

在这里插入图片描述

import matplotlib.pyplot as plt
from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

xlab = ['北京市', '上海市', '天津', '重庆市']
list = [12406, 13908, 8386, 9143]

x = range(len(list))

bar = plt.bar(left=x, height=list, width=0.8, color = 'g', alpha=0.8)
plt.ylim(0, 14500)
plt.xticks(x, xlab)

for x,y in enumerate(list):
    plt.text(x , y,'%s' % y, ha='center', va= 'bottom',fontsize=11)

plt.title("GDP大比拼")
plt.legend()
plt.show()

题二十四:利用matplotlib库文件,画出如下的直方图(bin=30)

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.family']='SimHei'
plt.rcParams['font.size']=14

# 直方图
mu = 100
sigma = 20
x = np.random.normal(mu,sigma,size=100) # 均值和标准差

plt.hist(x,bins=30,normed=1,color='g',histtype='stepfilled',alpha=0.75)
plt.ylim(0.000,0.035)
plt.title('直方图')
plt.show()

最后一题:完成词云图绘制

  • 安装jieba中文库
  • 安装wordcloud模块
pip install jieba
pip insall wordcloud

准备数据

爬取某学校网站近两年的新闻标题

python代码

import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud

# 打开文本
text = open('2019-2020新闻标题.txt').read()

# 中文分词
text = ' '.join(jieba.cut(text))
wc = WordCloud(font_path='C:/Windows/Fontsfangzhengsongke.ttf', width=1000, height=800, mode='RGBA',background_color=None).generate(text)

# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()

# 保存到文件
wc.to_file('wordcloud.png')

打印结果

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44032277/article/details/105878003

智能推荐

手游开发攻防——二、基础篇(更新完)_kakashi8841的博客-程序员信息网

通过一个官方demo来分析Unity项目中的一些知识点和应用。

windows android装应用,以IT之家为例,Win10 Mobile安装安卓APK应用体验如何?_Lucy-露西娅的博客-程序员信息网

Win10 Mobile安装安卓APK应用卡吗/慢吗/流畅吗?相信这是广大Windows Phone网友最关心的问题,包括其他安卓和iOS用户也十分关心。正好IT之家拥有WP8.1/安卓/iOS三大平台,现在为大家带来对比评测。▲Win10 Mobile装上安卓版IT之家首先我们推荐《Win10 Mobile安卓APK应用快捷安装工具下载》文章中的工具,使用非常方便。装上Android和Win10...

智慧养老的痛点和解决方案的对接_返璞归真9995的博客-程序员信息网

中国老龄人口体量大增速快。据测算,我国60岁以上的老龄人口,已达到2.45亿,占全部人口的17%,预计到2050年将达到4.45亿,占全部人口的25%。老龄化问题将在未来几十年间快速激化。随着未来老年人口将呈现密度高、候鸟型、高龄化、空巢化的特征,智慧养老将继续推进政府、市场、社会公益力量构建以市、区、街道、社区等多层次的养老服务体系。其中,社区智慧健康养老解决方案等产业和技术快速发展,形成了新...

【在线教育直播】直播很卡怎么办?_欢拓云直播的博客-程序员信息网

在观看教育直播时,最先进的直播平台都不能保证没有卡顿的问题,那么大家在遇到直播很卡怎么办呢?首先,我们先来了解一下直播很卡是指什么?主要是看直播时画面卡成PPT或者突然卡顿一下甚至频繁出现加载转圈画面。其次,我们来查找原因,主要有三个原因。第一,学员观看端的网络出现网络问题;第二,讲师发起端出现网络问题;第三,直播平台方本身的问题。最后,我们来看看解决方法。从学员观看端出发,学员自己需要先去查看是否有占用网络的其他任务,如果有可以先关闭这些程序,再看一下网络是否正常;如果网络还没有正常,那么学员

(LDD) 第五章、并发和竞态_zhangxiaopeng0829的博客-程序员信息网

1. 对并发的管理是操作系统编程的核心的问题之一。2. 早期并发的惟一原因是对硬件的中断服务,没有抢占和SMP。Scull的缺陷1. 竞态会导致对共享数据的非控制访问。2. 竞态是一种极端可能性的事件,因此程序员往往忽视竞态。但在计算机的世界里,百万分之一的事件可能在几秒内发生,而且结果是灾难性的。并发及其管理1. SMP系统甚至可以在不同的处理器上同时执行我们的代码、

BokTalk获得Genaro Network和Bitfury Group战略投资_Efvex的博客-程序员信息网

块说(BokTalk)全球首款区块链即时社交通讯系统,获得新加坡的Genaro Network和美国的Bitfury Group战略投资,Genaro Network是BokTalk的服务商,软件的开发运营均由Genrao Network提供,计算力以及资金则由bitfury提供。这两家公司在业内影响力广泛,分别覆盖了欧洲,美州,亚洲等全球的主要区域,他们不仅仅在资金上提供帮助,还在产品的审计,社群搭建上,政府公关上为之赋能,BokTalk又是一个相对超前的实用型通讯工具,此强强联合战略合作,期待新的弄潮儿

随便推点

Python学习 (六 面向对象高级编程)_Malus_core的博客-程序员信息网

前言:现在开始使用Pycharm作为运行代码的环境,继续延伸第五部分的知识要点。

arcgis for js 3.x 绘制海流_左直拳的博客-程序员信息网

如图所示箭头方向代表海流方向,箭头大小代表流速大小。其中海流方向以正北方向为0度,顺时针起算。但如果是风场就不一样。风的方向与我们的普遍认知刚好相反,箭头指向来风的方向。想想也有道理,我们常说喝西北风,是吹向西北方向的风还是从大西北刮过来的风?当然是从大西北过来的啊。每当我们肚子饿得受不了的时候,就可以跑到外面,迎着西北方向张大嘴巴可矣。有分教:言归正传,本文例子,根据雷达测量的海流数据绘制,数据包括经纬度、流向、流速4个数值。绘制思路:1、用SimpleMarkerSymbol 结合 svg

移动电商——Flutter-Dio基础_引入和简单的Get请求_amingMM的博客-程序员信息网

QQ 1274510382Wechat JNZ_aming商业联盟 QQ群538250800技术搞事 QQ群599020441解决方案 QQ群152889761加入我们 QQ群649347320共享学习 QQ群674240731纪年科技aming网络安全 ,深度学习,嵌入式,机器强化,生物智能,生命科学。...

2017年“嘉杰信息杯” 中国大学生程序设计竞赛全国邀请赛:H—Highway_yuanS7的博客-程序员信息网

题目链接:http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1267HighwayIn ICPCCamp there were n towns conveniently numbered with 1,2,…,n connected with (n−1) roads. The i-th

ssh tunnel与从家中访问内网机器_quqi99的博客-程序员信息网

ssh tunnel与从家中访问公司内网机器                                                                                                                    作者:张华  发表于:2012-03-08版权声明:可以任意转载,转载时请务必以超链接形式标明文章原

【数字信号处理】两连续信号在时域的叠加、卷积、相乘、尺度变换后的信号(在频域的)最低抽样频率_aoxiang_ywj的博客-程序员信息网_两个信号相乘后的频率

版权声明:本文为博主原创文章,未经博主允许不得转载。   https://mp.csdn.net/postedit/83055409假设:频率较高的信号所对应的频率fm1(比如3KHz),频率较低的信号所对应的频率fm2(比如2KHz),最低抽样频率fs叠加:频率较高的信号所对应频率fm1的2倍,即fs=2fm1卷积:频率较低的信号所对应频率fm2的2倍,即fs=2fm2相乘:两个...

推荐文章

热门文章

相关标签