我正在尝试用python设置一个discord bot.我有一个预先存在的discord服务器,我希望机器人加入,但我很难这样做.
import discord
import asyncio
import logging
logging.basicConfig(level=logging.INFO)
client = discord.Client()
@client.event
async def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')
print(client)
@client.event
async def on_message(message):
print(message)
if message.content.startswith('!test'):
counter = 0
tmp = await client.send_message(message.channel, 'Calculating messages...')
async for log in client.logs_from(message.channel, limit=100):
if log.author == message.author:
counter += 1
await client.edit_message(tmp, 'You have {} messages.'.format(counter))
elif message.content.startswith('!sleep'):
await asyncio.sleep(5)
await client.send_message(message.channel, 'Done sleeping')
client.run('token')
Run Code Online (Sandbox Code Playgroud)
这基本上是GitHub页面上给出的基本discord.py脚本.但是,我似乎无法弄清楚如何让它实际加入我的服务器.将此行插入on_ready函数时:
server = await client.accept_invite('instant-invite-code')
Run Code Online (Sandbox Code Playgroud)
将"即时邀请代码"替换为我的实际即时邀请代码(我尝试了discord.gg/code和代码),我得到了
discord.errors.Forbidden: FORBIDDEN (status code: 403): …Run Code Online (Sandbox Code Playgroud) 我试图在matplotlib的填充等高线图上叠加轮廓以获得一些大气数据.但是,我的轮廓标签并不总是出现在屏幕上.以下是一个例子:

如您所见,轮廓标签仅出现在最里面的几个轮廓上.
知道我的轮廓范围早先被定义为
list(range(950,1052,4))
Run Code Online (Sandbox Code Playgroud)
我有以下代码来实际绘图:
parallels = np.arange(0.,90,5.)
basem.drawparallels(parallels,labels=[1,0,0,0],fontsize=10)
# draw meridians
meridians = np.arange(180.,360.,5.)
basem.drawmeridians(meridians,labels=[0,0,0,1],fontsize=10)
basem.drawstates()
basem.drawcountries()
if clevs != 0:
cs = basem.contourf(x,y, plotted_var, clevs)
cl = basem.contour(x,y, plotted_var, clevsl, colors='k')
plt.clabel(cl, fmt="%1.0f", fontsize=8)
else:
cs = basem.contourf(x,y, plotted_var, cmap=plt.get_cmap(colorbar),
vmin = vmin, vmax = vmax)
cbar = basem.colorbar(cs, location='bottom', pad = "5%")
cbar.set_label(units)
Run Code Online (Sandbox Code Playgroud)
另外,我的底图定义是:
basem = Basemap(width=5800000,height=3000000,
rsphere=(6378137.00,6356752.3142),\
resolution='h',area_thresh=1000.,projection='lcc',\
lat_1=45.,lat_2=55,lat_0=40,lon_0=-102.)
Run Code Online (Sandbox Code Playgroud)
这是一个错误还是只是我缺少的东西?如果可以的话,我试图避免使用手册.
输入数据是全局数据集(GFS天气模型).x,y通过以下方式获得:
lons2, lats2 = np.meshgrid(lons, lats)
x,y = basem(lons2, lats2)
Run Code Online (Sandbox Code Playgroud)
其中lons,lats是:
lons = [0.0, 0.25, 0.5, …Run Code Online (Sandbox Code Playgroud) 我在Swift for OS X中使用外部C库.我得到一个值cda,它在C中定义为a double*(它是指向双数组的指针).
导入Swift时,它将类型识别为UnsafeMutablePointer.我正在尝试将此指针和计数转换为双数组.这是我正在使用的代码(假设arrlen是数组的正确计数):
let doublearrptr = UnsafePointer<Double>(cda)
let xptarr = UnsafeBufferPointer<Double>(start: doublearrptr, count:arrlen)
Run Code Online (Sandbox Code Playgroud)
但是,在编译此代码片段时,我收到错误:
Cannot convert value of type 'UnsafePointer<Double>' to expected argument type 'UnsafePointer<_>'
Run Code Online (Sandbox Code Playgroud)
我对Swift比较新,但我很确定我无法转换为UnsafePointer<_>.我尝试过转换UnsafePointer<Void>,但是出现了同样的错误.斯威夫特确实认识到这cda是一个UnsafeMutablePointer<Double>.
我正在尝试使用 matplotlib 制作自动绘图,其中几个不同的特征绘制在彼此之上(背景是填充的等高线图,上面一层是 pcolormesh)。我试图绘制的最重要的功能是几个散点图,具有不同的标签和图标。
我正在尝试向该图添加图例,当前使用以下命令:
leg = ax.legend(legplots,
legnames,
scatterpoints=1,
loc='upper center',
ncol=3,
fontsize=14,
bbox_to_anchor=(0.5, -0.14),
fancybox=True, shadow=True)
Run Code Online (Sandbox Code Playgroud)
假设 ax 是主轴,legplots 和legnames 分别是散点图及其相应标签的列表。
添加图例工作正常,但随着我拥有的腿图数量(及其名称长度)的变化,当您对图进行动画处理时,图例的大小会增大和缩小。如何控制图例框的大小和图例内的列宽?这可能吗?