是否可以使用数据框中的列来缩放matplotlib中的标记大小?当我执行以下操作时,我一直收到有关使用系列的错误。
import pandas as pd
import matplotlib.pyplot as plt
my_dict = {'Vx': [16,25,85,45], 'r': [1315,5135,8444,1542], 'ms': [10,50,100, 25]}
df= pd.DataFrame(my_dict)
fig, ax = plt.subplots(1, 1, figsize=(20, 10))
ax.plot(df.Vx, df.r, '.', markersize= df.ms)
当我跑
时ValueError: setting an array element with a sequence.
我猜它不喜欢我向标记添加一系列的事实,但必须有一种方法让它起作用...
答案 0 :(得分:3)
最好使用pandas
中的内置散点图函数,您可以将整个系列对象作为大小参数传递以改变气泡大小:
df.plot.scatter(x=['Vx'], y=['r'], s=df['ms'], c='g') # df['ms']*5 bubbles more prominent
或者,如果您想通过matplotlib
路线,则需要每次将series
对象中的标量值传递给markersize
arg。
fig, ax = plt.subplots()
[ax.plot(row['Vx'], row['r'], '.', markersize=row['ms']) for idx, row in df.iterrows()]
plt.show()
答案 1 :(得分:3)
使用plt.scatter
代替plt.plot
。 Scatter允许您使用元组或列表指定大小s
以及点的颜色c
。
import pandas as pd
import matplotlib.pyplot as plt
my_dict = {'Vx': [16,25,85,45], 'r': [1315,5135,8444,1542], 'ms': [10,50,100, 25]}
df= pd.DataFrame(my_dict)
fig, ax = plt.subplots(1, 1, figsize=(20, 10))
ax.scatter(df.Vx, df.r, s= df.ms)
plt.show()