小白求助2个python问题,是学习可视化方面遇到的
小白求助2个python问题。1.定义的函数是什么意思:def minor_tick(x,pos):
if not x%1.0:
return “”
return "%.2.f"%x
2.plot函数的参数是什么意思:
fig. add_subplot(111). plot(x,y,c=(0.25,0.25,1.00),lw=2,zorder=10)
这个参数c是什么意思?
感谢感谢 本帖最后由 Peteryo01223 于 2021-2-26 09:58 编辑
问题1:
%是一种占位符。在python中处理数值信息时,% 可以将两个数相除得到其余数,即:求余数。
if not, 是对一个条件(即:x%1.0)取反。if not 判断是否为 None,code 中判断变量是否为 None 的情况,常见三种写法:
[*]第一种: if x is None(最清晰的一种写法。本题如果写成 if x%1.0 is None,你就能看懂了,即:x 除以1.0,余数为None。)
[*]第二种: if not x (不直观,也是你的 code 中使用的写法)
[*]第三种: if not x is None (不直观)
%.2f 的意思是:保留两位小数。"%.2f"%x 就是:使用字符串格式化 x,保留两位小数,并做四舍五入处理。这里,你在2和f之间,多写了一个小数点儿吧?
至此,我觉得你可以看懂本函数了。
问题2:你可能是没看懂,code中三个值被同时赋值的表达吧。你单独在python中试试,就能直观地看到如下结果,
>>> x,y,c=(0.25, 0.25, 1.00)
>>> x
0.25
>>> y
0.25
>>> c
1.0
>>>
程序员如果养成了一些“简便的书写习惯”,对不熟悉的阅读者来说,挺难懂的。跟学中文的老外,看连笔字,差不多。 Peteryo01223 发表于 2021-2-26 09:30
问题1:
%是一种占位符。在python中处理数值信息时,% 可以将两个数相除得到其余数,即:求余数。
if no ...
谢谢您的解答,第1个问题我明白了,第2个问题应该不是同时赋值的意思吧,前面x,y已经另外赋值了,另外附上完整的源代码,再帮我看看咯
#设置坐标轴的刻度样式
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import AutoMinorLocator,MultipleLocator,FuncFormatter
x=np.linspace(0.5,3.5,100)
y=np.sin(x)
fig=plt.figure(figsize=(8,8))
#创建图形实例,以英寸为单位,宽,高
ax=fig.add_subplot(111)
#画子图:子图总行数1,子图总列数1,子图位置1
ax.xaxis.set_major_locator(MultipleLocator(1.0))
ax.yaxis.set_major_locator(MultipleLocator(1.0))
#主刻度线,在x轴的1倍处分别设置主刻度线,参数multiplelocator(1.0)是设置主刻度线的显示位置
ax.xaxis.set_minor_locator(AutoMinorLocator(4))
ax.yaxis.set_minor_locator(AutoMinorLocator(4))
#次刻度线,设置次刻度线的显示位置,参数Autominorlocator(4)将每一份主刻度线区间等分4份
def minor_tick(x,pos):#n%n=0;m%n=m(m<n)
if not x%1.0:
return"" #若是整数,则返回“”
return "%.2f"%x #反之,返回x值的2位小数
ax.xaxis.set_minor_formatter(FuncFormatter(minor_tick))
#设置次刻度线显示位置的精度,FuncFormatter()是用来控制位置精度的
ax.tick_params("y",which='major',length=15,width=2.0,colors="r")
#设置刻度样式,which:设置主刻度的样式;length:设置主刻度线的长度;width:设置主刻度线的宽度;colors:设置主刻度线和主刻度线标签的颜色
ax.tick_params(which='major',length=5,width=1.0,labelsize=10,labelcolor='0.25')
#设置次要刻度样式,which:设置次要刻度的样式;length:设置次要刻度线的长度;width:设置次要刻度线的宽度;labelsize:设置次要刻度线标签的大小;labelcolor:设置次要刻度标签的颜色
ax.set_xlim(0,4)
#x显示的范围
ax.set_ylim(0,2)
#y显示的范围
ax.plot(x,y,c=(0.25,0.25,1.00),lw=2,zorder=10)
#plot函数:展现变量的变化趋势,ls是折线图的线条风格,linewidth是绘制的线条粗细,label是标记图形内容的标签文本,zorder : 控制绘图顺序,zorder值越小就越先绘制
ax.grid(linestyle="-",linewidth=0.5,color='r',zorder=0)
#grid函数:绘制刻度线的网格线,linestyle是网格线的线条风格,linewidth是绘制的线条粗细,color是颜色,zorder : 控制绘图顺序,zorder值越小就越先绘制
plt.show() jiaozhulhh 发表于 2021-2-26 11:45
谢谢您的解答,第1个问题我明白了,第2个问题应该不是同时赋值的意思吧,前面x,y已经另外赋值了,另外附 ...
我觉得是同时赋值。如果你觉得不对,可以单独针对问题二,再提问。今天有大佬 Jackz007 在线,他能回答一切难题。
页:
[1]