A. python matlibplot 怎样画图例
用于添加图例的函数是plt.legend(),我们通过例子来对其进行介绍。
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
#多数据并列柱状图
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
x = np.arange(6)
y1 = [23,5,14,27,18,14]
y2 = [10,27,25,18,23,16]
tick_label = ["A","B","C","D","E","F"]
bar_width = 0.35
plt.bar(x,y1,bar_width,align="center",label="班级A",alpha=0.5)
plt.bar(x+bar_width,y2,bar_width,align="center",label="班级B",alpha=0.5)
plt.xlabel("成绩等级")
plt.ylabel("人数")
plt.xticks(x+bar_width/2,tick_label)
plt.legend(bbox_to_anchor=(1,1),#图例边界框起始位置
loc="upper right",#图例的位置
ncol=1,#列数
mode="None",#当值设置为“expend”时,图例会水平扩展至整个坐标轴区域
borderaxespad=0,#坐标轴和图例边界之间的间距
title="班级",#图例标题
shadow=False,#是否为线框添加阴影
fancybox=True)#线框圆角处理参数
plt.show()
效果如图所示
B. python中图例的位置怎么手动调整
1.最近遇到一个问题,关于图例legend如何画在图外的问题,并以适合的比例显示出来。
2.首先传统的做法如下,这种方式并不能满足我的要求,而且是显示在图内。
ax1.legend(loc='center left', bbox_to_anchor=(0.2, 1.12),ncol=3)1
loc表示图例的位置,有多种形式:
‘North’ 图例标识放在图顶端
‘South’ 图例标识放在图底端
‘East’ 图例标识放在图右方
‘West’ 图例标识放在图左方
‘NorthEast’ 图例标识放在图右上方(默认)
‘NorthWest 图例标识放在图左上方
‘SouthEast’ 图例标识放在图右下角
‘SouthWest’ 图例标识放在图左下角12345678
有人说简单,有相同的方式,如下经测试不行,可能是本人用的python版本不行,所用的方式就是和前面一样,采用如下的方式来替换上面的legend位置。
‘NorthOutside’ 图例标识放在图框外侧上方
‘SouthOutside’ 图例标识放在图框外侧下方
‘EastOutside’ 图例标识放在图框外侧右方
‘WestOutside’ 图例标识放在图框外侧左方
‘NorthEastOutside’ 图例标识放在图框外侧右上方
‘NorthWestOutside’ 图例标识放在图框外侧左上方
‘SouthEastOutside’ 图例标识放在图框外侧右下方
‘SouthWestOutside’ 图例标识放在图框外侧左下方
(以上几个将图例标识放在框图外)
‘Best’ 图标标识放在图框内不与图冲突的最佳位置
‘BestOutside’ 图标标识放在图框外使用最小空间的最佳位置1234567891011
bbox_to_anchor:表示legend的位置,前一个表示左右,后一个表示上下。当使用这个参数时。loc将不再起正常的作用,ncol=3表示图例三列显示。
3.有人说要解决这个问题可以采用对坐标轴放大或是缩小的方式,经本人测试可以行,但是,放大缩小的比率不让人满意,且很难控制到适合的位置。有兴趣可以参考链接,最终得出此方法不行。
4.那么就没有办法了吗?NO.NO,请看下面,最终完成如下。
这就是本人要的效果,不废话,具体做法如下
box = ax1.get_position()
ax1.set_position([box.x0, box.y0, box.width , box.height* 0.8])12
首先按上面的方式,如果你想将图例放上面就box.height*0.8,放右边就box.width*0.8其它方式一样。同时配合下面来使用。
ax1.legend(loc='center left', bbox_to_anchor=(0.2, 1.12),ncol=3)1
主要是bbox_to_anchor的使用,自己可以修改参数试下,good luck for you.
阅读全文
版权声明:原创文章,未经博主
C. Python如何画盒子图与其它图形同轴
mport pandas as pd #导入pandas
import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate
#fig,axes = plt.subplots(1,2,figsize=(8,4))
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2,sharex=True, figsize=(6, 3))
n_wrms_before_filtering=[]
e_wrms_before_filtering=[]
u_wrms_before_filtering=[]
n_wrms_after_filtering=[]
e_wrms_after_filtering=[]
u_wrms_after_filtering=[]
lines = open("D:\软件安装\SoftwareFile\Pycharm\PycharmProjects\\boxplot\data\wrms_neu1.dat", 'r').readlines()
for i in range(len(lines)):
# split data
fields = lines[i].split(' ')
n_wrms_before_filtering.append(float(fields[0]))
e_wrms_before_filtering.append(float(fields[1]))
u_wrms_before_filtering.append(float(fields[2]))
lines = open("D:\软件安装\SoftwareFile\Pycharm\PycharmProjects\\boxplot\data\wrms_neu2.dat", 'r').readlines()
for i in range(len(lines)):
# split data
fields = lines[i].split(' ')
n_wrms_after_filtering.append(float(fields[0]))
e_wrms_after_filtering.append(float(fields[1]))
u_wrms_after_filtering.append(float(fields[2]))
labels = 'N','E','U' #图例
p1=ax1.boxplot([n_wrms_before_filtering, e_wrms_before_filtering, u_wrms_before_filtering],widths = 0.8,labels = labels,patch_artist = True)
color = ['#515151', '#f14040', '#1a6fdf'] # 有多少box就对应设置多少颜色
for box, c in zip(p1['boxes'], color):
# 箱体边框颜色
box.set(color=c, linewidth=1.5)
# 箱体内部填充颜色
box.set(facecolor=c)
# 这里设置的是各个box的其他属性
for whisker in p1['whiskers']:
whisker.set(color='#180405', linewidth=1.5)
for cap in p1['caps']:
cap.set(color='#180405', linewidth=1.5)
for median in p1['medians']:
median.set(color='#180405', linewidth=1.5)
for flier in p1['fliers']:
flier.set(marker='o', color='y', alpha=0.5)
labels = 'N','E','U' #图例
p2=ax2.boxplot([n_wrms_after_filtering, e_wrms_after_filtering, u_wrms_after_filtering],widths = 0.8,labels = labels,patch_artist = True)
color = ['#515151', '#f14040', '#1a6fdf'] # 有多少box就对应设置多少颜色
for box, c in zip(p2['boxes'], color):
# 箱体边框颜色
box.set(color=c, linewidth=1.5)
# 箱体内部填充颜色
box.set(facecolor=c)
# 这里设置的是各个box的其他属性
for whisker in p2['whiskers']:
whisker.set(color='#180405', linewidth=1.5)
for cap in p2['caps']:
cap.set(color='#180405', linewidth=1.5)
for median in p2['medians']:
median.set(color='#180405', linewidth=1.5)
for flier in p2['fliers']:
flier.set(marker='o', color='y', alpha=0.5)
ax1.set(xlabel='Directions', ylabel='WRMS/mm')
ax2.set(xlabel='Directions', ylabel='WRMS/mm')
ax1.set_title('Before filtering')
ax2.set_title('After filtering')
plt.tight_layout()
#plt.subplots_adjust(left=0.129, bottom=0.11, right=0.9, top=0.88,wspace=0.2, hspace=0.2)
#plt.show()
plt.savefig('D:\软件安装\SoftwareFile\Pycharm\PycharmProjects\\boxplot\\123', dpi=600)
D. 在python中采用plt.text形式描点绘图时,怎么通过legend添加图例
'best': 0, # only implemented for axes legends
'upper right': 1,
'upper left': 2,
'lower left': 3,
'lower right': 4,
'right': 5,
'center left': 6,
'center right': 7,
'lower center': 8,
'upper center': 9,
'center': 10,
E. Python 如何画类似辐射图
Python有一些自带的图形例子,在Python目录的Lib\turtledemo下面,通过下面的命令可以执行,forest和tree有点类似你想要的图形,可以参考一下。
pythonw -m turtledemo forest
F. python画正余弦函数图像
用python怎样画出如题所示的正余弦函数图像? 如此编写代码,使其中两个轴、图例、刻度,大小,LaTex公式等要素与原图一致,需要用到的代码如下,没有缩进:
#-*-codeing:utf-8;-*-
from matplotlib import pyplot as plt
import numpy as np
a=np.linspace(0,360,980)
b=np.sin(a/180*np.pi)
c=np.cos(a/180*np.pi)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlim([0, 360])
ax.plot(a,b,label=r"$y=sin( heta)$")
ax.plot(a,c,label=r"$y=cos( heta)$")
ax.grid(True)
ax.set_ylabel(r"$y$")
ax.set_xlabel(r"$ heta$")
plt.xticks(np.arange(0,360+1,45))
plt.title("Sine & Cosine Waves")
plt.legend()
plt.savefig("SinCosWaveDegFont.jpg")
plt.show()
代码输出的文件的图
G. 新手python怎么从Excel中读取多行多列画并列柱状图
读取表格那么多列的数据可以使用csv库
楼下已经给你用pandas的教程了,你只需要通过SCV把数据读取出来往data=pd.read_excel()里面放应该就可以了。
给你一篇文章按照上面去看看吧
CSV
H. python 三维图如何制作图例
你如果使用的是matplotlib的话可以直接调用plot3这类专门构建3d的图
I. python画折线图
#encoding=utf-8
importmatplotlib.pyplotasplt
frompylabimport*#支持中文
mpl.rcParams['font.sans-serif']=['SimHei']
names=['5','10','15','20','25']
x=range(len(names))
y=[0.855,0.84,0.835,0.815,0.81]
y1=[0.86,0.85,0.853,0.849,0.83]
#plt.plot(x,y,'ro-')
#plt.plot(x,y1,'bo-')
#pl.xlim(-1,11)#限定横轴的范围
#pl.ylim(-1,110)#限定纵轴的范围
plt.plot(x,y,marker='o',mec='r',mfc='w',label=u'y=x^2曲线图')
plt.plot(x,y1,marker='*',ms=10,label=u'y=x^3曲线图')
plt.legend()#让图例生效
plt.xticks(x,names,rotation=45)
plt.margins(0)
plt.subplots_adjust(bottom=0.15)
plt.xlabel(u"time(s)邻居")#X轴标签
plt.ylabel("RMSE")#Y轴标签
plt.title("Asimpleplot")#标题
plt.show()
J. python matplotlib 图像可视化
Python画图之总结待整理
https://morvanzhou.github.io/tutorials/data-manipulation/plt/
http://blog.sciencenet.cn/blog-1408284-850983.html
http://www.cnblogs.com/DHUtoBUAA/p/6619099.html
http://blog.csdn.net/wuguangbin1230/article/details/72858612
http://blog.sciencenet.cn/blog-251664-800766.html
http://blog.csdn.net/wuguangbin1230/article/details/72858612
http://www.jianshu.com/p/0a81b57bbb8c
https://pythonprogramming.net/
http://blog.csdn.net/haoji007/article/details/52063168
Python Data Visualizations
Seaborn 库: https://seaborn.pydata.org/
Python Seaborn 教程: http://elitedatascience.com/python-seaborn-tutorial
matplotlib: plotting with Python
matplotlib: plotting with Python-github
python-data-visualization-course
Interactive Web Plotting for Python
Interactive Web Plotting for Python-github
https://morvanzhou.github.io/tutorials/data-manipulation/plt/3-3-contours/
https://github.com/MorvanZhou/tutorials/tree/master/matplotlibTUT
https://github.com/jiandanjinxin/tf-dev-summit-tensorboard-tutorial
https://github.com/jiandanjinxin/tensorflow-mnist-tutorial
CSDN-markdown编辑器语法——字体、字号与颜色
%matplotlib inline
%matplotlib notebook
Need to use either
or
Only one in each notebook! using inline will just sent png images to browser, using notebook will provide interactivity and allow updating old figures. With notebook you need to make sure to create a new figure before plotting, otherwise the last one will be updated!
还有简便的 plt.close('all') 关闭所有图,不用管 fig 号码
Some plots from these tutorials:
调整名字和间隔
设置不同名字和位置
调整坐标轴
参数loc='upper right'
表示图例将添加在图中的右上角.
调整位置和名称
最后我们得到带有图例信息的图片.
移动坐标
然后我们挪动坐标轴的位置.
然后标注出点(x0, y0)的位置信息. 用plt.plot([x0, x0,], [0, y0,], 'k--', linewidth=2.5)
画出一条垂直于x轴的虚线.
添加注释 annotate
接下来我们就对(x0, y0)这个点进行标注.
其中参数xycoords='data'
是说基于数据的值来选位置,xytext=(+30, -30)
和textcoords='offset points'
对于标注位置的描述 和 xy 偏差值,arrowprops
是对图中箭头类型的一些设置.
添加注释 text
其中-3.7, 3,
是选取text的位置, 空格需要用到转字符
,fontdict
设置文本字体.
生成图形
当图片中的内容较多,相互遮盖时,我们可以通过设置相关内容的透明度来使图片更易于观察,也即是通过本节中的bbox
参数设置来调节图像信息.
首先参考之前的例子, 我们先绘制图像基本信息:
调整坐标
然后对被遮挡的图像调节相关透明度,本例中设置 x轴 和 y轴 的刻度数字进行透明度设置
其中label.set_fontsize(12)重新调节字体大小,bbox设置目的内容的透明度相关参,facecolor调节 box 前景色,edgecolor 设置边框, 本处设置边框为无,alpha设置透明度. 最终结果如下:
散点图
首先,先引入matplotlib.pyplot简写作plt,再引入模块numpy用来产生一些随机数据。生成1024个呈标准正态分布的二维数据组 (平均数是0,方差为1) 作为一个数据集,并图像化这个数据集。每一个点的颜色值用T来表示:
数据集生成完毕,现在来用scatterplot这个点集,鼠标点上去,可以看到这个函数的各个parameter的描述,如下图:
输入X和Y作为location,size=75,颜色为T,color map用默认值,透明度alpha 为 50%。 x轴显示范围定位(-1.5,1.5),并用xtick()函数来隐藏x坐标轴,y轴同理:
今天的柱状图分成上下两部分,每一个柱体上都有相应的数值标注,并且取消坐标轴的显示。
生成基本图形
向上向下分别生成12个数据,X为 0 到 11 的整数 ,Y是相应的均匀分布的随机数据。使用的函数是plt.bar
,参数为X和Y:
这样我们就生成了下图所示的柱状图基本框架:
现在的结果呈现:
接下来我们用函数plt.text分别在柱体上方(下方)加上数值,用%.2f保留两位小数,横向居中对齐ha='center',纵向底部(顶部)对齐va='bottom':
最终的结果就像开始一样:
画等高线
数据集即三维点 (x,y) 和对应的高度值,共有256个点。高度值使用一个 height function f(x,y) 生成。 x, y 分别是在区间 [-3,3] 中均匀分布的256个值,并用meshgrid在二维平面中将每一个x和每一个y分别对应起来,编织成栅格:
接下来进行颜色填充。使用函数plt.contourf把颜色加进去,fill, 位置参数分别为:X, Y, f(X,Y)。透明度0.75,并将 f(X,Y) 的值对应到color map的暖色组中寻找对应颜色。8代表等高线的个数。
接下来进行等高线绘制。使用plt.contour函数划线。位置参数为:X, Y, f(X,Y)。颜色选黑色,线条宽度选0.5。现在的结果如下图所示,只有颜色和线条,还没有数值Label:
添加高度数字
其中,8代表等高线的密集程度,这里被分为10个部分。如果是0,则图像被一分为二。
最后加入Label,inline控制是否将Label画在线里面,字体大小为10。并将坐标轴隐藏:
随机矩阵画图
这一节我们讲解怎样在matplotlib中打印出图像。这里我们打印出的是纯粹的数字,而非自然图像。 我们今天用这样 3x3 的 2D-array 来表示点的颜色,每一个点就是一个pixel。
colorbar
下面我们添加一个colorbar ,其中我们添加一个shrink参数,使colorbar的长度变短为原来的92%:
3D
首先在进行 3D Plot 时除了导入 matplotlib ,还要额外添加一个模块,即 Axes 3D 3D 坐标轴显示:
之后要先定义一个图像窗口,在窗口上添加3D坐标轴,显示成下图:
接下来给进 X 和 Y 值,并将 X 和 Y 编织成栅格。每一个(X, Y)点对应的高度值我们用下面这个函数来计算。
其中,rstride 和 cstride 分别代表 row 和 column 的跨度。
下面两个图分别是跨度为1 和 5 的效果:
投影
下面添加 XY 平面的等高线:
如果 zdir 选择了x,那么效果将会是对于 XZ 平面的投影,效果如下