pycharm matplotlibb怎么在pycharm中绘制出来图

python中用matplotlib包进行简单的可视化
python版本:python3
环境:jupyter notebook
python中的matplotlib包提供了对数据可视化的功能,是由Juhn Hunter大神制作的。使用matplotlib可以绘制条形图,散点图,直方图,箱线图等等。
1.matplotlib的初始化和绘制简单的图
首先需要载入matplotlib包和numpy包(会用到numpy中的一些函数)。再设置自动输出图片。
import matplotlib.pyplot as mp
import numpy as np
%matplotlib inline
就可以开始进行绘制图了,需要注意的是后面mp就是指代matplotlib。
X = np.linspace(0,2*np.pi,10)
Y = np.cos(X)
mp.plot(X,Y,'bo')
2.绘制条形图(bar plot)
条形图是用来描述一组变量的频数分布情况。
x = range(5,50,5)
y = range(len(x))
mp.bar(y,x)
可以用参数width来设置条形的宽窄。mp.bar是用来绘制竖直条形图的,mp.barh则是用来绘制水平条形图。mp.bar还可以绘制分组条形图。
y = np.random.randint(1,10,size=(3,5))
x=np.arange(5)
mp.bar(x+0.0,y[0],width=0.2)
mp.bar(x+0.2,y[1],width=0.2)
mp.bar(x+0.4,y[2],width=0.2)
这里就用到了numpy包中的random.randint函数,它再这里的作用是随机生成0到10以内的随机数。需要注意的是x不能用list(range(5))这个方法生成,因为会导致x无法与浮点数进行运算。这里就用了width参数来设置条形的宽窄,还能用color参数进行颜色的调整。
既然mp.bar能绘制分组条形图,那么就也可以绘制堆叠条形图。
y1 = np.random.randint(10,50,5)
y2 = np.random.randint(10,50,5)
x = list(range(5))
mp.bar(x,y1)
mp.bar(x,y2,bottom = y1)
如果还有y3,则bottom=y1+y2。
3.绘制散点图(scatter plot)
散点图是用来描述两个变量的分布情况。
x = np.random.randn(500)
y = np.random.randn(500)
mp.scatter(x,y)
这里的样本是从标准分布的随机抽取得来的,所以图上的点的分布越接近坐标(0,0)就越多。
4.绘制直方图(Histogram)
x = np.random.randn(500)
mp.hist(x,bins=20)
由np.random.randn随机生成的数列是根据正态分布而来的,所绘制的直方图大体上也与正态分布曲线相似
5.绘制箱线图
data = np.random.randint(0,100,size = (100,2))
mp.boxplot(data)
函数mp.boxplot会对数组的每一列做一个箱线图,而不是每一行。在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
我想得到两张折线图,关于微软和英特尔的股票数据的,代码如下
import time
from matplotlib.finance import quotes_historical_yahoo_ochl
from datetime import date
from datetime import datetime
import pandas as pd
import matplotlib.pyplot as plt
import pylab as pl
import numpy as np
start = datetime()
end = datetime()
print start
quotesMSFT = quotes_historical_yahoo_ochl('MSFT',start,end)
quotesINTC = quotes_historical_yahoo_ochl('INTC',start,end)
fieIds = ['date', 'open', 'close', 'high', 'low', 'volume']
for i in range(0,len(quotesMSFT)):
x = date.fromordinal(int(quotesMSFT[i][0]))
y= datetime.strftime(x,"%Y-%m-%d")
list1.append(y)
for i in range(0,len(quotesINTC)):
x= date.fromordinal(int(quotesINTC[i][0]))
y= datetime.strftime(x, "%Y-%m-%d")
list2.append(y)
quotesmsftdf=pd.DataFrame(quotesMSFT,index=list1,columns=fieIds)
quotesmsftdf=quotesmsftdf.drop(['date'],axis=1)
quotesintcdf= pd.DataFrame(quotesINTC,index=list2,columns=fieIds)
quotesintcdf= quotesintcdf.drop(['date'],axis=1)
listtemp1= []
for i in range(0,len(quotesmsftdf)):
temp=time.strptime(quotesmsftdf.index[i], "%Y-%m-%d")
listtemp1.append(temp.tm_mon)
listtemp2 = []
for i in range(0,len(quotesintcdf)):
temp=time.strptime(quotesintcdf.index[i], "%Y-%m-%d")
listtemp2.append(temp.tm_mon)
tempmsftdf=quotesmsftdf.copy()
tempmsftdf['month'] = listtemp1
closemaxMSFT = tempmsftdf.groupby('month').max().close
listMSFT= []
for i in range(1,13):
listMSFT.append(closemaxMSFT[i])
listMSFTIndex= closemaxMSFT.index
tempintcdf= quotesintcdf.copy()
tempintcdf['month']=listtemp2
closemaxINTC = tempintcdf.groupby('month').max().close
listINTC = []
for i in range(1,13):
listINTC.append(closemaxINTC[i])
listINTCIndex = closemaxINTC.index
pl.subplot(211)
plt.plot(listMSFTIndex,listMSFT,color='r',marker='o')
pl.subplot(212)
plt.plot(listINTCIndex,listINTC,color='green',marker='o')
程序运行时没有报错,但是图表却没有显示出来,用的是pycharm
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
在最后加上plt.show()
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。浅谈Python数据可视化——使用Matplotlib创建散点图
Matplotlib简述:
Matplotlib是一个用于创建出高质量图表的桌面绘图包(主要是2D方面)。该项目是由John
Hunter于2002年启动的,其目的是为Python构建一个MATLAB式的绘图接口。如果结合Python
IDE使用比如PyCharm,matplotlib还具有诸如缩放和平移等交互功能。它不仅支持各种操作系统上许多不同的GUI后端,而且还能将图片导出为各种常见的矢量(vector)和光栅(raster)图:PDF、SVG、JPG、PNG、BMP、GIF等。
此外,matplotlib还有许多插件工具集,如用于3D图形的mplot3d以及用于地图和投影的basemap。
准备数据:从文本文件中解析数据
本文使用的数据主要包含以下三种特征:每年获得的飞行常客里程数,玩视频游戏所耗时间百分比,每周消费的冰淇淋公升数。其中分类结果作为文件的第四列,并且只有3、2、1三种分类值。
飞行里程数
&游戏耗时百分比
&冰淇淋公升数
上述特征数据的格式经过file2matrix函数解析处理之后,可输出为矩阵和类标签向量。
将文本记录转换为Numpy的解析程序:
使用file2matrix读取文件数据,必须确保待解析文件存储在当前的工作目录中。导入数据之后,简单检查一下数据格式:
分析数据:使用Matplotlib创建散点图
编辑kNN.py文件,引入matplotlib,调用matplotlib的scatter绘制散点图。
import matplotlib
import matplotlib.pyplot as
def&file2matrix(filename):
return&returnMat,classLabelVector
datingDataMat,datingLabels
=&file2matrix('datingTestSet2.txt')fig
= plt.figure()
fig.add_subpot(111)
ax.scatter(datingDataMat[:,1],datingDataMat[:,2])
plt.show()
散点图使用datingDataMat矩阵的第二、第三列数据,分别表示特征值“玩视频游戏所耗时间百分比”和“每周消费的冰淇淋公升数”。
上图由于没有使用样本分类的特征值,很难看到任何有用的数据模式信息。为了更好理解数据信息,Matplotlib库提供的scatter函数支持个性化标记散点图上的点。调用scatter函数使用下列参数:
ax.scatter(datingDataMat[:,1],datingDataMat[:,2],15.0*array(datingLabels),15.0*array(datingLabels))
plt.show()
上图利用datingLabels存储的类标签属性,在散点图上绘制了色彩不等、尺寸不同的点。因而基本上可以从图中看到数据点所属三个样本分类的区域轮廓。为了得到更好的效果,采用datingDataMat矩阵的属性列1和2展示数据,并以红色的'*'表示类标签1、蓝色的'o'表示表示类标签2、绿色的'+'表示类标签3,修改参数如下:
import numpy as np
datingLabels = array(datingLabels)
= np.where(datingLabels==1)
p1 = &ax.scatter(datingDataMat[idx_1,0],datingDataMat[idx_1:,1],market
= '*',color = 'r',label='1',s=20idx_2
= np.where(datingLabels==2)p2
= &ax.scatter(datingDataMat[idx_2,0],datingDataMat[idx_2:,1],market
= 'o',color ='b',label='1',s=10idx_3
= np.where(datingLabels==3)p3
= &ax.scatter(datingDataMat[idx_3,0],datingDataMat[idx_3:,1],market
= '+',color ='g',label='1',s=30
plt.legend(loc = 'upper right')
plt.show()
本文简单介绍了Matplotlib,并以实例分析了如何使用Matplotlib库图形化展示数据,最后通过修改matplotlib的scatter函数参数使得散点图的分类区域更加清晰。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 matplotlib绘制折线图 的文章

 

随机推荐