我有下面的代码,它在一定程度上起作用。但是,它只会更改其中一个子图的 xticks 大小。如何更改它以更改所有这些的大小?
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
input_file = 'CSP.csv'
output_file = 'sub_plots.png'
df = pd.read_csv(input_file, header = 0)
classes = ['SD','SC','FIR','MD','UA','LB']
f, axarr = plt.subplots(2, 3)
f.tight_layout()
i=0
for r in range(2):
for c in range(3):
axarr[r][c].hist(df.CSP_change[(df.Class==classes[i])].values,10,rwidth=1, alpha=0.3)
axarr[r][c].set_title(classes[i])
axarr[r][c].spines['top'].set_visible(False)
axarr[r][c].spines['right'].set_visible(False)
axarr[r][c].spines['bottom'].set_visible(True)
axarr[r][c].spines['left'].set_visible(True)
axarr[r][c].get_xaxis().tick_bottom()
axarr[r][c].get_yaxis().tick_left()
plt.xticks(fontsize=6)
i += 1
#save
plt.savefig(output_file)
Run Code Online (Sandbox Code Playgroud)
我尝试将 plt 更改为 axarr[r][c] 但它给了我一条关于没有属性 xticks 的错误消息。
我是初学者,但我正在尝试在 python 中实现棋盘游戏(奥尔良)。我为游戏状态创建了一个类,并为每个玩家创建了一个类。我曾考虑为每种类型的动作空间创建一个类,并为每个玩家创建一个动作空间的实例,因为每个玩家都有一组共同的动作空间。这些动作空间类中的每一个都有一些属性,通常在__init__()方法中设置。但是,他们没有其他方法。这是类的一个很好的用途,还是我应该更改代码以使用许多单独的变量?我将它们设为类的原因是为了让变量的命名更加直观。下面的代码给出了播放器类和两个动作空间类的示例:
class Player:
def __init__(self, start_characters, name):
// other attributes
self.farmhouse = Farmhouse()
self.village = Village()
class Farmhouse:
def __init__(self):
self.boatman = False
self.craftsman = False
class Village:
def __init__(self):
self.farmer = False
self.boatman = False
self.craftsman = False
Run Code Online (Sandbox Code Playgroud)
然后,游戏状态类将具有将玩家实例作为参数的函数,测试动作空间是否具有触发该动作的每个适当要求。
我跑:
python -m pip --version
Run Code Online (Sandbox Code Playgroud)
它返回了:
pip 8.1.2 from C:\Users\myonl\AppData\Local\Programs\Python\Python35-32\lib\site-packages (python 3.5)
Run Code Online (Sandbox Code Playgroud)
所以我将路径设置为上面的路径,但是当我尝试实际使用 pip 时,我得到:
pip install PyQt4
'pip' is not recognised as an internal or external command, operable program or batch file.
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我有这样的文件(这是一个简化版本):
james sfsf qef qef
qef qef qe fff
qqew james james qef
qefq ffgrsf wsef
qef james eq james
Run Code Online (Sandbox Code Playgroud)
我想用不同的值替换'james'的每次迭代.这是我在测试代码中的内容:
f=open('file_to_be_read.txt','r')
text=f.read()
matches=len(re.findall('james',text))
f.close()
number=0
for x in range(matches):
new_text=re.sub(r'james',str(number),text,count=1)
number+=1
r=open('result_file.txt','w')
r.write(new_text)
r.close()
Run Code Online (Sandbox Code Playgroud)
但它只是将第一个'james'替换为2.而不是产生我想要的以下结果:
1 sfsf qef qef
qef qef qe fff
qqew 2 3 qef
qefq ffgrsf wsef
qef 4 eq 5
Run Code Online (Sandbox Code Playgroud)
我想通过重复带有count = 1的re.sub,我每次都会替换1个詹姆斯但允许我更改替换值.
我有一个包含大量数据和 1 列的数据框,其结构如下:
index var_1
1 a=3:b=4:c=5:d=6:e=3
2 b=3:a=4:c=5:d=6:e=3
3 e=3:a=4:c=5:d=6
4 c=3:a=4:b=5:d=6:f=3
Run Code Online (Sandbox Code Playgroud)
我正在尝试将该列中的数据构造为如下所示:
index a b c d e f
1 3 4 5 6 3 0
2 4 3 5 6 3 0
3 4 0 5 6 3 0
4 4 5 3 6 0 3
Run Code Online (Sandbox Code Playgroud)
到目前为止我已经做了以下事情:
df1 = df['var1'].str.split(':', expand=True)
然后,我可以循环遍历 df1 的列,并在“=”上进行另一次分割,但随后我将只有大量杂乱无章的标签列和值列。
python ×4
pandas ×2
class ×1
dataframe ×1
matplotlib ×1
methods ×1
pip ×1
python-3.x ×1
regex ×1